猿问

AWS Cognito InitiateAuth 通过 Lambda 函数导致错误

我正在 Go 中编写一个 Lambda 函数来对用户进行身份验证,这是我想用于后续 API 调用的 AccessToken/IdToken。


当我从一个独立程序执行 Go 代码时,它起作用了,InitiateAuth 成功了。


当我尝试使用来自 lambda 函数的相同代码时,出现错误 NotAuthorizedException: Unable to verify secret hash for client ......


这是我正在使用的代码片段


func AuthenticateUser(userName string, passWord string) (*cognitoidentityprovider.InitiateAuthOutput, error) {


    username := aws.String(userName)

    password := aws.String(passWord)

    clientID := aws.String(constants.COGNITO_APP_CLIENT_ID)


    params := &cognitoidentityprovider.InitiateAuthInput{

        AuthFlow: aws.String("USER_PASSWORD_AUTH"),

        AuthParameters: map[string]*string{

            "USERNAME": username,

            "PASSWORD": password,

        },

        ClientId: clientID,

    }


    authResponse, authError := cognitoClient.InitiateAuth(params)

    if authError != nil {


        fmt.Println("Error = ", authError)

        return nil, authError

    }


    fmt.Println(authResponse)

    fmt.Println(*authResponse.Session)


    return authResponse, nil

}

我已经为 lambda 用户提供了足够的权限 - cognito-idp:AdminCreateUser - cognito-idp:AdminDeleteUser - cognito-idp:InitiateAuth - cognito-idp:ChangePassword - cognito-idp:AdminRespondToAuthChallenge - cognito-idp:AdminInitiateAuth - cognito-idp:确认忘记密码


我在这里错过了什么吗?


动漫人物
浏览 128回答 1
1回答

达令说

当我们创建一个新的 App 客户端时,默认情况下它有一个关联的 App 客户端密码。我又创建了一个没有“Client Secret”的应用程序客户端。我使用了这个新的 App 客户端。我修改了代码以使用 API AdminInitiateAuth,而不是 InitiateAuth我能够成功登录。
随时随地看视频慕课网APP

相关分类

Go
我要回答