postman AWS CLI -如何为cognito用户生成安全令牌

u5i3ibmn  于 5个月前  发布在  Postman
关注(0)|答案(3)|浏览(48)

最后,我需要为Cognito用户池中的用户生成一个Lambda KeyId,SecurityKey和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

字符串
我能够获取provider-id值,但在获取web-identity-token的有效值时遇到了问题。
如果我理解正确的话,这应该会让我得到web-identity-token:

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


我从联邦身份池中获得了clientidvalue。
我一直无法解决的问题是,上面的命令给了我这个错误:
未知选项:密码=
我试过很多不同的格式,包括json格式,但都不管用。我做错了什么?

brjng4g3

brjng4g31#

以下是用于身份验证和接收auth令牌的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

字符串
例如

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


响应

{
    "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 Jmeter 板->“App Clients”->“Show Details”->选中“Enable username-password(non-SRP)flow for app-based authentication(USER_PASSWORD_AUTH)”框

dm7nw8vv

dm7nw8vv2#

对我很有效。我看不出和你的有什么区别
x1c 0d1x的数据
您是否正在使用在用户池“应用程序客户端”部分(而不是在联合身份部分)创建的应用程序客户端ID?如果是,是否选中此选项?
为基于应用程序的身份验证(USER_PASSWORD_AUTH)启用用户名-密码(非SRP)流
我从3600到下一个空格开始使用令牌。把它放在postman头上,并在Cognito Authorizer后面调用lambda。

更新

如果任何人有兴趣在单一命令shell脚本版本此-> Bash Script
我经常用它

bf1o4zei

bf1o4zei3#

我今天也遇到了同样的问题,请求失败,出现了一个错误
“未知选项:PASSWORD="。
在仔细查看请求时,我意识到我在逗号(,)和PASSWORD参数之间有一个空格。如下所示:

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=xxxxx, PASSWORD=yyyy --client-id my-app-client-id

字符串
我得到了它的工作后,改变如下(后删除空间)

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=xxxxx,PASSWORD=yyyy --client-id my-app-client-id

相关问题