ウェブ ID フェデレーションを使用するアプリケーションの記述
ウェブ ID フェデレーションを使用するには、アプリケーションで、作成した IAM ロールを引き受ける必要があります。その時点から、アプリケーションは、そのロールに関連付けられたアクセスポリシーに従います。
実行時、アプリケーションがウェブアイデンティティフェデレーションを使用する場合、次の手順に従う必要があります。
-
サードパーティーの ID プロバイダーと認証を行います。アプリケーションは、ID プロバイダーが提供するインターフェイスを使用してそのプロバイダーを呼び出す必要があります。ユーザーを認証するときの正確な方法は、プロバイダーおよびアプリケーションを実行しているプラットフォームによって異なります。一般的に、ユーザーがまだサインインしていない場合、アイデンティティプロバイダーはそのプロバイダーのサインインページを表示するように対処します。
アイデンティティプロバイダーはユーザーを認証した後、ウェブアイデンティティトークンをアプリケーションに返します。このトークンの形式は、プロバイダーによって異なりますが、通常は、非常に長い文字列です。
-
一時的な AWS セキュリティ認証情報を取得します。取得するために、アプリケーションは
AssumeRoleWithWebIdentity
リクエストを AWS Security Token Service (AWS STS) に送信します。このリクエストには次のものが含まれます。-
前の手順からのウェブアイデンティティトークン
-
アイデンティティプロバイダーからのアプリケーション ID
-
このアプリケーションのこのアイデンティティプロバイダー用に作成した IAM ロールの Amazon リソースネーム (ARN)
AWS STS は、一定の時間 (デフォルトでは、3,600 秒) 経過した後に失効する AWS セキュリティ認証情報のセットを返します。
次に、
AssumeRoleWithWebIdentity
で AWS STS アクションを実行するときのサンプルリクエストとレスポンスを示します。ウェブアイデンティティトークンは、Login with Amazon アイデンティティプロバイダーから取得しました。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)
<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>
-
-
AWSリソースにアクセスする AWS STS からのレスポンスには、DynamoDB リソースにアクセスするためにアプリケーションに必要な情報が格納されています。
-
AccessKeyID
、SecretAccessKey
、および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 STS が一時的なアクセス認証情報を生成する詳しい方法については、IAM ユーザーガイドの一時的なセキュリティ認証情報のリクエストを参照してください。