我正在开发一个使用AWS服务后端的Web应用程序。我正在使用AWS Cognito来管理用户,但遇到了一个问题。当我创建一个新用户(使用临时密码)时,需要手动更改此密码以使其成为最终密码。我必须更改密码的唯一方法是使用AWS Cli,如下所述:
https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/change-password.html
我必须在shell中输入旧密码、新密码和访问令牌。问题是:我在哪里找到这个“访问令牌”?我不知道在shell中输入什么!AWS Cognito控制台没有帮助。
4条答案
按热度按时间xuo3flqw1#
要更改用户密码:
使用此aws cli:
您可以这样做:
要了解更多信息,请:
tct7dpnv2#
aws cognito-idp change-password
只能由能够登录的用户使用,因为您需要aws cognito-idp admin-initiate-auth
的访问令牌。但由于用户有一个临时密码,因此在尝试登录时将面临
NEW_PASSWORD_REQUIRED
挑战。我是这样做的:
现在你得到了一个
NEW_PASSWORD_REQUIRED
挑战和一个很长的会话令牌。更新日期:
在最初的答案之后,引入了一个新选项
aws cognito-idp admin-set-user-password
。py49o6xq3#
正确的API是:https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html
语法为:
您可以指定指定的密码是永久性的,这样您将使用户处于“已确认”状态。此API不需要旧密码是正确的,因为这样做不安全。管理员不需要知道用户密码。因此,API已命名为“AdminSetUserPassword”而不是“AdminChangeUserPassword”。
llmtgqce4#
访问令牌通过用户登录来检索。您可以通过为用户运行aws cli命令
aws cognito-idp admin-initiate-auth
(找到here)来获取此令牌。这将要求你有cognito池的根证书,我假设你有。命令将返回一个访问令牌,你可以使用一个小时(cognito令牌在1小时后到期,无论设置如何,看here)。