如何更改AWS Cognito用户的密码?

cla*_*ioz 12 passwords shell amazon-web-services aws-cognito

我正在开发一个使用AWS服务后端的Web应用程序.我正在使用AWS Cognito来管理用户,但我遇到了问题.当我创建一个新用户(使用临时密码)时,我需要手动更改此密码以使其确定.我必须更改密码的唯一方法是使用AWS Cli,如下所述:

https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/change-password.html

我必须在shell中键入旧密码,新密码和访问令牌.问题是:我在哪里找到这个"访问令牌"?我不知道在shell中输入什么!AWS Cognito控制台无济于事.

Esb*_*ald 12

aws cognito-idp change-password只能与谁能够登录,因为你需要从访问令牌用户使用aws cognito-idp admin-initiate-auth.

但由于用户拥有临时密码,因此NEW_PASSWORD_REQUIRED在尝试登录时将面临挑战.

我是这样做的:

$ aws cognito-idp admin-create-user  --user-pool-id USERPOOLID  --username me@example.com --desired-delivery-mediums EMAIL --user-attributes Name=email,Value=me@example.com

$ aws cognito-idp initiate-auth --client-id CLIENTID --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=me@example.com.me,PASSWORD="tempPassword"
Run Code Online (Sandbox Code Playgroud)

现在您获得了一个NEW_PASSWORD_REQUIRED挑战和一个非常长的会话令牌.使用那个来应对挑战:

$ aws cognito-idp admin-respond-to-auth-challenge --user-pool-id USERPOOLID --client-id CLIENTID   --challenge-responses "NEW_PASSWORD=LaLaLaLa1234!!!!,USERNAME=me@example.com" --challenge-name NEW_PASSWORD_REQUIRED --session "YourLongSessionToken"
Run Code Online (Sandbox Code Playgroud)

  • 您只需在 AWS Cognito 配置中创建一个客户端(使用控制台、CLI 或 CloudFormation)。该客户端 ID 还用作登录 Cognito 的应用程序/网站中的配置变量。 (2认同)

Het*_*mei 10

要更改用户密码:

有了这个 aws cli:

$ aws --version
aws-cli/1.17.9 Python/3.6.10 Linux/5.3.0-26-generic botocore/1.14.9
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

aws cognito-idp admin-set-user-password --user-pool-id "eu-west-11111"  --username "aaaaaa-aaaa-aaaa-aaaa" --password "a new password" --permanent
Run Code Online (Sandbox Code Playgroud)

要获得更多信息:

 aws cognito-idp admin-set-user-password help
Run Code Online (Sandbox Code Playgroud)

  • 截至 2020 年 5 月,有一个 admin-set-user-password:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cognito-idp/admin-set-user-password.html (3认同)
  • 这应该是公认的答案。谢谢! (3认同)
  • 如果您的目标用户池不在设置的默认区域中,则可能需要添加区域标志“--region xx-xxxx-xx”。 (2认同)

asd*_*sdf 0

通过登录用户来检索访问令牌。您可以通过aws cognito-idp admin-initiate-auth为用户运行 aws cli 命令来获取此令牌(在此处找到)。

这将要求您拥有认知池的根凭据,我假设您已经拥有。该命令将返回您可以使用一小时的访问令牌(无论设置如何,认知令牌都会在 1 小时后过期,请查看此处)。