From 24ecc277fabdd134d20ba8b81289d8c963fd7779 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Sun, 23 Jan 2022 12:45:54 +0800 Subject: [PATCH] check password --- source/dnode/mgmt/impl/src/dndTransport.c | 10 +++++++--- source/dnode/mnode/impl/src/mndAuth.c | 20 +++++++++++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/source/dnode/mgmt/impl/src/dndTransport.c b/source/dnode/mgmt/impl/src/dndTransport.c index 104e702afb..cd78c33bfe 100644 --- a/source/dnode/mgmt/impl/src/dndTransport.c +++ b/source/dnode/mgmt/impl/src/dndTransport.c @@ -179,9 +179,13 @@ static int32_t dndInitClient(SDnode *pDnode) { rpcInit.idleTime = pDnode->cfg.shellActivityTimer * 1000; rpcInit.user = INTERNAL_USER; rpcInit.ckey = INTERNAL_CKEY; - rpcInit.secret = INTERNAL_SECRET; + rpcInit.spi = 1; rpcInit.parent = pDnode; + char pass[TSDB_PASSWORD_LEN] = {0}; + taosEncryptPass((uint8_t *)(INTERNAL_SECRET), strlen(INTERNAL_SECRET), pass); + rpcInit.secret = pass; + pMgmt->clientRpc = rpcOpen(&rpcInit); if (pMgmt->clientRpc == NULL) { dError("failed to init rpc client"); @@ -260,7 +264,7 @@ static int32_t dndAuthInternalReq(SDnode *pDnode, char *user, char *spi, char *e char pass[TSDB_PASSWORD_LEN] = {0}; taosEncryptPass((uint8_t *)(INTERNAL_SECRET), strlen(INTERNAL_SECRET), pass); memcpy(secret, pass, TSDB_PASSWORD_LEN); - *spi = 0; + *spi = 1; *encrypt = 0; *ckey = 0; return 0; @@ -269,7 +273,7 @@ static int32_t dndAuthInternalReq(SDnode *pDnode, char *user, char *spi, char *e char pass[TSDB_PASSWORD_LEN] = {0}; taosEncryptPass((uint8_t *)(TSDB_NETTEST_USER), strlen(TSDB_NETTEST_USER), pass); memcpy(secret, pass, TSDB_PASSWORD_LEN); - *spi = 0; + *spi = 1; *encrypt = 0; *ckey = 0; return 0; diff --git a/source/dnode/mnode/impl/src/mndAuth.c b/source/dnode/mnode/impl/src/mndAuth.c index 3e9ab99a45..15d2734841 100644 --- a/source/dnode/mnode/impl/src/mndAuth.c +++ b/source/dnode/mnode/impl/src/mndAuth.c @@ -15,6 +15,7 @@ #define _DEFAULT_SOURCE #include "mndAuth.h" +#include "mndUser.h" static int32_t mndProcessAuthReq(SMnodeMsg *pReq); @@ -25,7 +26,24 @@ int32_t mndInitAuth(SMnode *pMnode) { void mndCleanupAuth(SMnode *pMnode) {} -int32_t mndRetriveAuth(SMnode *pMnode, char *user, char *spi, char *encrypt, char *secret, char *ckey) { return 0; } +int32_t mndRetriveAuth(SMnode *pMnode, char *user, char *spi, char *encrypt, char *secret, char *ckey) { + SUserObj *pUser = mndAcquireUser(pMnode, user); + if (pUser == NULL) { + *secret = 0; + mError("user:%s, failed to auth user since %s", user, terrstr()); + return -1; + } + + *spi = 0; + *encrypt = 0; + *ckey = 0; + + memcpy(secret, pUser->pass, TSDB_PASSWORD_LEN); + mndReleaseUser(pMnode, pUser); + + mDebug("user:%s, auth info is returned", user); + return 0; +} static int32_t mndProcessAuthReq(SMnodeMsg *pReq) { SAuthReq *pAuth = pReq->rpcMsg.pCont; -- GitLab