我已成功登录到通过iOS设备和Cognito创建的API网关。问题是我想用邮递员测试API调用,然后在电话上实现它们。目前,Postman无法进行身份验证(尽管AWS表示可以)。不管我做什么我都会收到401错误(在屏幕截图中可见)
我尝试过的
答案 0 :(得分:1)
如果我理解正确,则您正在尝试调用内置Cognito授权器背后的API网关端点。
我认为您误解了如何调用Cognito授权API网关:
id_token
Authorization
标头设置为id_token
的情况下调用API网关id_token
通过启用ADMIN_NO_SRP_AUTH
,可以简化第一步(登录Cognito),以便您可以更轻松地手动进行操作。 (如果没有,则需要进行SRP
计算)。
获取id_token
的一种方法是使用aws cli
(更多的方法在the documentation中显示):
aws cognito-idp admin-initiate-auth --user-pool-id='[USER_POOL_ID]' --client-id='[CLIENT_ID]' --auth-flow=ADMIN_NO_SRP_AUTH --auth-parameters="USERNAME=[USERNAME],PASSWORD=[PASSWORD]"
然后您可以将结果(AuthenticationResult.IdToken
)用作Postman中的Authorization
标头(不需要AWS v4签名-仅用于IAM身份验证)。
n.b。有关图像can be found here的详细说明。
答案 1 :(得分:0)
这是我最终解决邮递员身份验证问题的方法
1)在Cognito池中关闭了App Client Secret
。
2)跑aws --region us-east-1 cognito-idp admin-initiate-auth --cli-input-json file://gettoken.json
JSON文件示例
{
"UserPoolId": "us-east-1_**********",
"ClientId": "******************",
"AuthFlow": "ADMIN_NO_SRP_AUTH",
"AuthParameters": {
"USERNAME": "*********",
"PASSWORD": "***********"
}
}
3)转到邮递员>授权>不记名将idToken
值复制到令牌字段中,一切正常。
注意:对于那些想知道不使用秘密客户端密钥是否安全的人。 See this article.