AWS CLI - 如何为认知用户生成安全令牌

2024-04-24

最终,我需要为 Cognito 用户池中的用户生成 AccessKeyId、SecurityKey 和 SessionToken,以便我可以使用 Postman 作为 Cognito 用户测试 lambda 函数。到目前为止,我已经花了两天时间试图解决这个问题。看来这可行:

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

我能够获取提供者 ID 值,但无法获取网络身份令牌的有效值。

如果我理解正确的话,这应该能让我获得网络身份令牌:

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --client-id clientidvalue --auth-parameters USERNAME=usernamevalue,PASSWORD=passwordvalue

我从联合身份池中获取了 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

Example

aws cognito-idp initiate-auth --region us-west-2 --auth-flow USER_PASSWORD_AUTH --client-id 7f2spb636ptn074on1pdjgnk9l --auth-parameters [email protected] /cdn-cgi/l/email-protection,PASSWORD=Z3qj88WTJCi9DX6RRVFWtdv

Response

{
    "ChallengeParameters": {},
    "AuthenticationResult": {
        "RefreshToken": "eyJjdH......89kXQjZ9thA",
        "AccessToken": "eyJra......xB9eQ",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "IdToken": "eyJraWQiOiJh....PfRUcDeEw"
    }
}

如果出现错误{"__type":"InvalidParameterException","message":"USER_PASSWORD_AUTH flow not enabled for this client"},您需要启用 USER_PASSWORD_AUTH。

转到您的 AWS Cognito 仪表板 ->“应用程序客户端”->“显示详细信息”-> 选中“启用用户名密码(非 SRP)流以进行基于应用程序的身份验证 (USER_PASSWORD_AUTH)”框

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS CLI - 如何为认知用户生成安全令牌 的相关文章

随机推荐