pre*_*ash 10 amazon-iam aws-api-gateway
我试图从其他客户端测试经过身份验证的API网关端点.如何在发出请求时生成/设置"AWS_IAM"授权标头?
您可以将Cognito与"公共"池ID一起使用,然后将角色附加到Cognito池ID,该角色正在访问您的API GATEWAY
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'REGION:YOUR_POOL_ID',
});
Run Code Online (Sandbox Code Playgroud)
使用AWS STS获取具有有限权限的临时凭证.之后,您可以将API Gateway与AWS_IAM身份验证配合使用
生成的SDK接受AMI凭证,您必须使用从STS获得的客户端启动客户端:
var apigClient = apigClientFactory.newClient({
accessKey: 'ACCESS_KEY',
secretKey: 'SECRET_KEY',
sessionToken: 'SESSION_TOKEN', //OPTIONAL: If you are using temporary credentials you must include the session token
region: 'eu-west-1' // OPTIONAL: The region where the API is deployed, by default this parameter is set to us-east-1
});
Run Code Online (Sandbox Code Playgroud)
注意:严格按照游戏池中的最小角色,即公开的ID,每个机构都可以使用它来获取临时或固定(用于跨设备跟踪用户)user_/app_ id.
2016年4月更新:对于Christine评论:有关如何使用STS的文档.
TL; DR:基本上在您的身份提供商回电后(Google,在我的情况下),您将拥有一个令牌(在我的情况下为OpenID),只需将其提供给STS:
AWS.config.credentials = new AWS.WebIdentityCredentials({
RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>',
ProviderId: 'graph.facebook.com|www.amazon.com', // Omit this for Google
WebIdentityToken: ACCESS_TOKEN
});
Run Code Online (Sandbox Code Playgroud)
您必须复制API Gateway AWS v4 request signature逻辑才能做到这一点。理想情况下,您应该查看为您的 API 生成的 Javascript/Java SDK,以了解如何计算这些请求签名。我建议您关闭测试请求的身份验证。
| 归档时间: |
|
| 查看次数: |
5060 次 |
| 最近记录: |