我正在开发一个使用AWS服务后端的Web应用程序。 我正在使用AWS Cognito来管理用户,但我遇到了问题。当我创建一个新用户(使用临时密码)时,我需要手动更改此密码以使其具有确定性。 我必须更改密码的唯一方法是使用AWS Cli,如下所述:
https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/change-password.html
我必须在shell中输入旧密码,新密码和访问令牌。问题是:我在哪里找到这个“访问令牌”?我不知道在shell中输入什么! AWS Cognito控制台无济于事。
答案 0 :(得分:9)
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"
现在,您将面临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"
答案 1 :(得分:3)
要更改用户密码:
有了这个aws cli:
$ aws --version
aws-cli/1.17.9 Python/3.6.10 Linux/5.3.0-26-generic botocore/1.14.9
您可以这样操作:
aws cognito-idp admin-set-user-password --user-pool-id "eu-west-11111" --username "aaaaaa-aaaa-aaaa-aaaa" --password "a new password" --permanent
要了解更多信息:
aws cognito-idp admin-set-user-password help
答案 2 :(得分:0)
语法是:
{
"Password": "string",
"Permanent": true,
"Username": "string",
"UserPoolId": "string"
}
您可以指定指定的密码是永久的,并且您的用户将处于 CONFIRMED 状态。 这个 API 不需要旧密码是正确的,因为它不安全。管理员不需要知道用户密码。所以 API 被命名为“AdminSetUserPassword”而不是“AdminChangeUserPassword”。
答案 3 :(得分:-1)