残りのクライアントから認証済み API ゲートウェイ エンドポイントをテストしようとしています。リクエストを行うときに「AWS_IAM」認証ヘッダーを生成/設定するにはどうすればよいですか?
2 に答える
Cognito を「パブリック」プール ID で使用し、ロールを Cognito プール ID にアタッチして、API ゲートウェイにアクセスすることができます。
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'REGION:YOUR_POOL_ID',
});
AWS STS を使用して、権限が制限された一時的な認証情報を取得します。その後、AWS_IAM 認証で API Gateway を使用できます
生成された 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
});
注意: プールには厳密に最小限のロールを配置します。これは公開されている ID であり、すべてのボディがそれを使用して一時的または固定 (デバイス間でユーザーを追跡するため) の user_/app_ ID を取得できます。
2016 年 4 月の更新: Christine のコメント: STS の使用方法に関するドキュメント。
TL;DR: 基本的に、ID プロバイダー (私の場合は 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
});
API Gateway
AWS v4 request signature
それを行うには、ロジックを複製する必要があります。理想的には、API 用に生成された Javascript/Java SDK を見て、これらのリクエスト シグネチャがどのように計算されるかを理解する必要があります。テスト リクエストの認証をオフにすることをお勧めします。