メニュー
Amazon DynamoDB
開発者ガイド (API Version 2012-08-10)

ウェブアイデンティティフェデレーションを使用するアプリケーションの記述

ウェブアイデンティティフェデレーションを使用するには、作成した IAM ロールを想定する必要があります。その時点から、アプリケーションは、そのロールに関連付けられたアクセスポリシーに従います。

実行時、アプリケーションがウェブアイデンティティフェデレーションを使用する場合、次の手順に従う必要があります。

  1. サードパーティのアイデンティティプロバイダーと認証を行います。アプリケーションは、アイデンティティプロバイダーが提供するインターフェイスを使用してそのプロバイダーを呼び出す必要があります。ユーザーを認証するときの正確な方法は、プロバイダーおよびアプリケーションを実行しているプラットフォームによって異なります。一般的に、ユーザーがまだサインインしていない場合、アイデンティティプロバイダーはそのプロバイダーのサインインページを表示するように対処します。

    アイデンティティプロバイダーはユーザーを認証した後、ウェブアイデンティティトークンをアプリケーションに返します。このトークンの形式は、プロバイダーによって異なりますが、通常は、非常に長い文字列です。

  2. 一時的な AWS セキュリティ認証情報を取得します。取得するために、アプリケーションは AssumeRoleWithWebIdentity リクエストを AWS Security Token Service(AWS STS)に送信します。このリクエストでは以下を指定します。

    • 前の手順からのウェブアイデンティティトークン

    • アイデンティティプロバイダーからのアプリケーション ID

    • このアプリケーションのこのアイデンティティプロバイダー用に作成した IAM ロールの Amazon リソースネーム(ARN)

    AWS STS は、一定の時間(デフォルトでは、3600 秒)経過した後に失効する AWS セキュリティ認証情報のセットを返します。

    次に、AWS STS で AssumeRoleWithWebIdentity アクションを実行するときのサンプルリクエストとレスポンスを示します。ウェブアイデンティティトークンは、Login with Amazon アイデンティティプロバイダーから取得しました。

    Copy
    GET / HTTP/1.1 Host: sts.amazonaws.com Content-Type: application/json; charset=utf-8 URL: https://sts.amazonaws.com/?ProviderId=www.amazon.com &DurationSeconds=900&Action=AssumeRoleWithWebIdentity &Version=2011-06-15&RoleSessionName=web-identity-federation &RoleArn=arn:aws:iam::123456789012:role/GameRole &WebIdentityToken=Atza|IQEBLjAsAhQluyKqyBiYZ8-kclvGTYM81e...(remaining characters omitted)
    Copy
    <AssumeRoleWithWebIdentityResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <AssumeRoleWithWebIdentityResult> <SubjectFromWebIdentityToken>amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE</SubjectFromWebIdentityToken> <Credentials> <SessionToken>AQoDYXdzEMf//////////wEa8AP6nNDwcSLnf+cHupC...(remaining characters omitted)</SessionToken> <SecretAccessKey>8Jhi60+EWUUbbUShTEsjTxqQtM8UKvsM6XAjdA==</SecretAccessKey> <Expiration>2013-10-01T22:14:35Z</Expiration> <AccessKeyId>06198791C436IEXAMPLE</AccessKeyId> </Credentials> <AssumedRoleUser> <Arn>arn:aws:sts::123456789012:assumed-role/GameRole/web-identity-federation</Arn> <AssumedRoleId>AROAJU4SA2VW5SZRF2YMG:web-identity-federation</AssumedRoleId> </AssumedRoleUser> </AssumeRoleWithWebIdentityResult> <ResponseMetadata> <RequestId>c265ac8e-2ae4-11e3-8775-6969323a932d</RequestId> </ResponseMetadata> </AssumeRoleWithWebIdentityResponse>
  3. AWS リソースにアクセスします。AWS STS からのレスポンスには、DynamoDB リソースにアクセスするためにアプリケーションに必要な情報が格納されています。

    • AccessKeyIDSecretAccessKey、および SessionToken フィールドには、このユーザーとこのアプリケーションにのみ有効なセキュリティ認証情報が入っています。

    • Expiration フィールドは、この認証情報の時間制限を示します。この時間を経過すると、認証情報は無効になります。

    • AssumedRoleId フィールドには、アプリケーションによって想定されたセッション固有の IAM ロールの名前が入っています。アプリケーションは、このセッションの期間中、IAM ポリシードキュメントのアクセスコントロールに従います。

    • SubjectFromWebIdentityToken フィールドには、この特定のアイデンティティプロバイダー用の IAM ポリシー変数に表示される一意の ID が入っています。次に、サポートされるプロバイダーの IAM ポリシー変数と、その値の例を示します。

      ポリシー変数 値の例
      ${www.amazon.com:user_id} amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE
      ${graph.facebook.com:id} 123456789
      ${accounts.google.com:sub} 123456789012345678901

このポリシー変数が使用される IAM ポリシーの例については、「ポリシー例: きめ細かなアクセスコントロールのための IAM ポリシー条件の使用」を参照してください。

AWS Security Token Service が一時的なアクセス認証情報を生成する方法については、『IAM ユーザーガイド』の「一時的セキュリティ認証情報のリクエスト」を参照してください。