使用admin_create_user创建的Cognito帐户无法登录。是否存在已知的修复程序?

时间:2019-05-28 00:57:51

标签: python boto3 amazon-cognito

我正在创建一个后端工具,以使用Python和boto3在AWS Cognito用户池中创建一些帐户。使用CognitoIdentityProvider的admin_create_user创建帐户似乎可以正常工作,但是当我尝试使用新帐户登录我们的应用程序时,收到400响应:

{“ __ type”:“ UserNotFoundException”,“消息”:“用户不存在。”}

我确保已将用户实际添加到认知用户池中,并且已启用该用户。

我还指定在创建帐户后自动验证电子邮件地址。

这是我的帐户创建功能:

import boto3 

idp_client = boto3.client('cognito-idp')

# Redacted for stackoverflow example
user_pool_id = 'XXXXXXXXXXX' 

response = idp_client.admin_create_user(
            UserPoolId=user_pool_id,
            Username=email,
            UserAttributes=[
                {
                    'Name': 'email',
                    'Value': email
                },{
                    'Name': 'email_verified',
                    'Value': 'true'
                }
            ],
            TemporaryPassword=generateSecureRandomString()
        )

我希望在Cognito用户池中成功创建该帐户后,该帐户似乎已启用并经过验证,这应该会导致该帐户可以登录。

任何可以解决该问题的方法将不胜感激!

1 个答案:

答案 0 :(得分:0)

该代码非常好。因此,池设置或登录流程肯定是一个问题。

在池设置中,确保将其设置为使用“电子邮件地址或电话号码”而非用户名登录。

在登录流程中,您是否正在使用托管的ui?可能值得尝试一下,因为它将清除您的登录代码中的所有问题。请注意,您的用户将被设置为状态“ FORCE_CHANGE_PASSWORD”。我不确定如果您尝试使用自己的代码登录某人,但cognito会返回什么错误,但是他们设置了该密码。