我有几种API网关"方法" (端点)我想只提供给具有特定IAM角色(策略)的用户。我已经尝试过我能想到的所有事情。
基本上......我想要的是找到一种方法将访问令牌传递到API网关(通过标头)并找出访问令牌属于哪个角色,然后让API网关根据授权进行授权工作该角色附带的政策。我离开基地了吗?
答案 0 :(得分:2)
您需要在方法请求>中将授权设置为AWS_IAM
授权设置,并在调用API方法时传递Authorization
HTTP请求标头。
Authorization
标题要求您为已签名的请求计算数字签名。
签署您的请求
此reference将引导您完成为已签名的请求计算数字签名所需的步骤。
如果您只想使用Postman测试API,可以选择授权标签并选择 AWS Signature 进行授权类型即可。在 AccessKey 输入字段中输入您的AWS IAM用户访问密钥ID,在 SecretKey 中输入您的IAM用户密钥,指定匹配的相应 AWS区域调用URL中指定的区域。在服务名称中输入execute-api
。
这应该构建类似于以下内容的标题:
POST /prod/yourapi HTTP/1.1
Host: XXXXXXXXXX.execute-api.us-east-1.amazonaws.com
Content-Type: application/json
X-Amz-Date: 20170302T080546Z
Authorization: AWS4-HMAC-SHA256 Credential=YOURACCESSKEY/20170302/us-east-1/execute-api/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=000000000000000000000000000000000000000000000000000000
Cache-Control: no-cache