10

残りのクライアントから認証済み API ゲートウェイ エンドポイントをテストしようとしています。リクエストを行うときに「AWS_IAM」認証ヘッダーを生成/設定するにはどうすればよいですか?

4

2 に答える 2

5

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
});
于 2015-09-30T12:14:08.073 に答える
1

API Gateway AWS v4 request signatureそれを行うには、ロジックを複製する必要があります。理想的には、API 用に生成された Javascript/Java SDK を見て、これらのリクエスト シグネチャがどのように計算されるかを理解する必要があります。テスト リクエストの認証をオフにすることをお勧めします。

于 2015-09-29T23:52:25.403 に答える