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

时间:2019-03-03 04:02:32

标签: amazon-web-services go aws-lambda amazon-cognito

我正在Go中编写Lambda函数以验证用户身份,即我想用于后续API调用的AccessToken / IdToken。

当我从独立程序执行Go代码时,它可以工作,InitiateAuth成功。

当我尝试使用lambda函数中的相同代码时,出现错误NotAuthorizedException:无法验证客户端的秘密哈希.......

这是我正在使用的代码段

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:ConfirmForgotPassword

我在这里想念东西吗?

1 个答案:

答案 0 :(得分:0)

创建新的App客户端时,默认情况下,它具有关联的App客户端密码。

我又创建了一个应用客户端,没有“ Client Secret”。我使用了这个新的App客户端。

我修改了代码以使用API​​ AdminInitiateAuth,而不是InitiateAuth

我能够成功登录。

以下是参考链接,非常有用-Amplify "Unable to verify secret hash for client"