웹 자격 증명 연동을 사용하려면 사용자가 생성한 IAM 역할을 앱이 수임해야 합니다. 그 시점 이후로 앱은 사용자가 역할에 연결한 액세스 정책을 준수합니다.
런타임 시 앱에 웹 자격 증명 연동이 사용되는 경우 다음 단계를 따라야 합니다.
-
타사 자격 증명 공급자를 사용하여 인증합니다. 앱은 제공되는 인터페이스를 사용하여 자격 증명 공급자를 호출해야 합니다. 사용자를 인증하는 정확한 방법은 앱이 실행 중인 플랫폼과 공급자에 따라 달라집니다. 일반적으로 사용자가 아직 로그인하지 않은 경우 자격 증명 공급자가 해당 공급자의 로그인 페이지 표시를 처리합니다.
자격 증명 공급자는 사용자를 인증한 후 웹 자격 증명 토큰을 앱에 반환합니다. 이 토큰의 형식은 공급자마다 다르지만, 일반적으로는 매우 긴 문자열 형식입니다.
-
임시 AWS 보안 자격 증명을 얻습니다. 이렇게 하려면 앱이
AssumeRoleWithWebIdentity
요청을 AWS STS(AWS Security Token Service)로 보냅니다. 이 요청은 다음을 포함합니다.-
이전 단계의 웹 자격 증명 토큰
-
자격 증명 공급자에게서 받은 앱 ID
-
이 앱의 자격 증명 공급자에 대해 생성한 IAM 역할의 Amazon 리소스 이름(ARN)
AWS STS는 일정 시간(기본적으로 3600초)이 지나면 만료되는 AWS 보안 자격 증명 집합을 반환합니다.
다음은 샘플 요청과 AWS STS의
AssumeRoleWithWebIdentity
작업에서 받은 응답입니다. 웹 자격 증명 토큰은 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 정책의 예는 정책 예: 조건을 사용하여 세부적인 액세스 제어 구현 단원을 참조하세요.
AWS STS가 임시 액세스 자격 증명을 생성하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 임시 보안 자격 증명 요청 단원을 참조하세요.