我一直在尝试使用AWS Cognito&;API网关&;Lambda(Python)
我关注了这些文章: https://medium.com/digicred/password-less-authentication-in-cognito-cafa016d4db7https://medium.com/@pjatocheseminario/passwordless-api-using-cognito-and-serverless-framework-7fa952191352
我已经配置了Cognito(接受定制的_AUTH),添加了Lambdas,并创建了API端点:
/sign-up
/initiate-auth (aka initiate login)
/respond-to-auth-challenge (aka (verify login)
调用initiateAuth时,我收到以下响应: 调用InitiateAuth操作时发生错误(NotAuthorizedException):用户名或密码不正确。“
我使用的是CUSTOM_AUTH,它不需要密码,用户名绝对正确,因为它实际上启动了身份验证流,我收到了一个代码,但是因为boto3没有响应会话,我无法继续身份验证
这就是我对Cognito的称呼:
res = cognito.initiate_auth(
ClientId=client_id,
AuthFlow="CUSTOM_AUTH",
AuthParameters={
"USERNAME": email,
"PASSWORD": random_password
}
)
我可能遗漏了一些小东西,但我不知道是什么
您的客户机代码看起来正常,我的代码中有
ClientId
参数,但是如果您的代码没有引发异常,那么应该可以。除非在创建应用程序客户端时选中了Generate client secret
选项。 如果是这种情况,那么您必须在AuthParameters
中传入SECRET_HASH
,如下所示:接下来,再次检查以下各项:
在
App clients > * > Auth Flows Configuration
下,是否为您的客户端启用了ALLOW_CUSTOM_AUTH
选项在
App integration > App client settings > * > Enabled Identity Providers
下,是否选择了您的用户池如果您的Cognito设置正确,并且代码仍然无法工作,那么可能是lambda代码。您可能知道这一点,但对于无密码的自定义身份验证,您需要使用3个lambda触发器:
Define Auth Challenge
、Create Auth Challenge
和Verify Auth Challenge
自定义验证lambdas事件按以下顺序触发:
然后,您的客户必须响应挑战:
event['response']['issueTokens']
设置为True
以返回令牌(步骤1中显示的代码),或发出另一个质询以继续重复步骤1-3李>最后,确保您的用户池也启用了if case insensitivity选项。另外,如果用户处于
FORCE_CHANGE_PASSWORD
状态,我也不能准确地回忆起CUSTOM_AUTH
流是否工作。如果用户处于该状态,请尝试使用sdk设置永久密码以将状态设置为CONFIRMED
我也面临同样的错误,我认为错误信息是误导性的。 当您在CreateAuth Challenge lambda中没有正确响应时,将出现此错误。所以要确保你的lambda里一切正常
相关问题 更多 >
编程相关推荐