最后,我需要为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格式,但都不管用。我做错了什么?
3条答案
按热度按时间brjng4g31#
以下是用于身份验证和接收auth令牌的AWS CLI命令:
字符串
例如
型
响应
型
如果您得到错误
{"__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)”框
dm7nw8vv2#
对我很有效。我看不出和你的有什么区别
x1c 0d1x的数据
您是否正在使用在用户池“应用程序客户端”部分(而不是在联合身份部分)创建的应用程序客户端ID?如果是,是否选中此选项?
为基于应用程序的身份验证(USER_PASSWORD_AUTH)启用用户名-密码(非SRP)流
我从3600到下一个空格开始使用令牌。把它放在postman头上,并在Cognito Authorizer后面调用lambda。
更新
如果任何人有兴趣在单一命令shell脚本版本此-> Bash Script
我经常用它
bf1o4zei3#
我今天也遇到了同样的问题,请求失败,出现了一个错误
“未知选项:PASSWORD="。
在仔细查看请求时,我意识到我在逗号(,)和PASSWORD参数之间有一个空格。如下所示:
字符串
我得到了它的工作后,改变如下(后删除空间)
型