我的目标是让我的用户使用Cognito登录并获得一个临时IAM角色,该角色允许他们通过HTTP访问API网关中的特定方法。
到目前为止我所做的:
为经过身份验证和未经身份验证的用户设置IAM角色
设置一个具有IAM角色的组,以允许访问POST到( 当前)所有API网关方法。
将我的用户加入群组
设置我的API网关方法以使用IAM
授权
我可以使用Amplify创建的前端在浏览器中通过Cognito登录。
当我检查浏览器的本地存储时,我可以看到以下内容:
idToken
accessToken
refreshToken
在API网关上使用COGNITO
授权者完成此操作后,我在Postman中要做的就是添加一个Authorization
标头并粘贴在idToken
中。这使我可以访问API。
如何使用具有IAM授权的Postman测试我的API?
我仍然获得令牌,但是现在将它们粘贴到Authorization
标头中会给我一个错误消息:
Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header.
我已阅读到我需要签署请求,但不确定如何从基于Web浏览器的应用程序中执行此操作。
即使我能做到这一点,如何在Postman中进行测试,还是不再可能?
答案 0 :(得分:0)
好吧,仍然可以通过Postman发出请求,但它们必须为Amazon的Sigv4格式。
解决方法如下。
获取登录过程中返回的accessKey
,secretKey
和sessionToken
*。
在邮递员中,对于请求,选择Authorization
标签,然后为type
选择AWS Signature
。
将从步骤1中检索到的accessKey
,secretKey
和sessionToken
输入到Postman中的相应字段。
您还需要设置AWS Region
,例如eu-central-1
。
按SEND。
邮递员将创建适当的Sigv4请求以调用您的API。您可以在邮递员的Headers
标签中查看此请求的结果,该请求将自动创建所需的标头。
*我在我的React / Amplify应用程序中添加了临时代码。