Dar*_*Dar 8 aws-cli postman aws-lambda aws-cognito
最终,我需要为 Cognito 用户池中的用户生成 AccessKeyId、SecirutyKey 和 SessionToken,以便我可以使用 Postman 作为 Cognito 用户测试 lambda 函数。到目前为止,我已经花了 2 天的时间试图解决这个问题。似乎这会起作用:
aws sts assume-role-with-web-identity --role-arn arn:aws:iam::1234567890:role/rolename--role-session-name "RoleSession1" --web-identity-token ??? --provider-id provideridvalue
Run Code Online (Sandbox Code Playgroud)
我能够获得 provider-id 值,但我无法获得 web-identity-token 的有效值。
如果我理解正确,这应该让我获得网络身份令牌:
aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --client-id clientidvalue --auth-parameters USERNAME=usernamevalue,PASSWORD=passwordvalue
Run Code Online (Sandbox Code Playgroud)
我从联合身份池中获得了 clientidvalue。
我一直无法解决的问题是上面的命令给了我这个错误:
未知选项:PASSWORD=<密码>
我尝试了许多不同的变体,包括 json 格式,但没有任何效果。我究竟做错了什么?
这是用于进行身份验证和接收身份验证令牌的 AWS CLI 命令:
aws cognito-idp initiate-auth --region YOU_REGION --auth-flow USER_PASSWORD_AUTH --client-id YOUR_CLIENT_ID --auth-parameters USERNAME=YOUR_EMAIL,PASSWORD=YOUR_PASSWORD
Run Code Online (Sandbox Code Playgroud)
例子
aws cognito-idp initiate-auth --region us-west-2 --auth-flow USER_PASSWORD_AUTH --client-id 7f2spb636ptn074on1pdjgnk9l --auth-parameters USERNAME=alice@example.com,PASSWORD=Z3qj88WTJCi9DX6RRVFWtdv
Run Code Online (Sandbox Code Playgroud)
回复
{
"ChallengeParameters": {},
"AuthenticationResult": {
"RefreshToken": "eyJjdH......89kXQjZ9thA",
"AccessToken": "eyJra......xB9eQ",
"ExpiresIn": 3600,
"TokenType": "Bearer",
"IdToken": "eyJraWQiOiJh....PfRUcDeEw"
}
}
Run Code Online (Sandbox Code Playgroud)
如果出现错误{"__type":"InvalidParameterException","message":"USER_PASSWORD_AUTH flow not enabled for this client"}
,则需要启用 USER_PASSWORD_AUTH。
转到您的 AWS Cognito 仪表板 ->“应用程序客户端”->“显示详细信息”-> 选中“为基于应用程序的身份验证 (USER_PASSWORD_AUTH) 启用用户名-密码(非 SRP)流”框
归档时间: |
|
查看次数: |
6869 次 |
最近记录: |