기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자격 증명 풀에 대한 예제 애플리케이션
Amazon Cognito 자격 증명 풀의 가장 일반적인 사용 사례는 여러 로그인 시스템의 사용자를 페더레이션하고 액세스가 제한된 임시 AWS 자격 증명을 클라이언트에 직접 제공하는 것입니다. 이렇게 하면 AWS 리소스에 액세스할 수 있는 권한을 위해 자격 증명 브로커를 빌드할 필요가 없습니다. 예를 들어 사용자가 소셜 미디어 계정으로 로그인하고 모바일 애플리케이션을 위해 Amazon S3에서 앱 자산에 액세스하도록 해야 할 수 있습니다. 또한 자격 증명 풀은 사용자 풀로 로그인하는 사용자에게 자격 증명을 제공합니다.
이 자습서에서는 자격 증명 풀에서 지원되는 자격 증명 공급자(IdPs)를 사용하여 향상된 기본 인증 흐름에서 임시 인증 및 게스트 자격 증명을 얻을 수 있는 웹 애플리케이션을 생성합니다. 웹 개발 경험이 있는 경우 GitHub에서 예제 앱을 다운로드하세요.
GitHub에서 예제 애플리케이션 다운로드
이 예제 애플리케이션은 Amazon Cognito 자격 증명 풀의 다음 기능을 보여줍니다.
- 자격 증명 풀의 인증 흐름
-
- 게스트(인증되지 않은) 액세스 구현
-
- 지원되는 자격 증명 공급자와의 통합
-
-
소비자 액세스를 위한 소셜 IdPs(Facebook, Amazon, Twitter, Apple 및 Google)
-
기업 사용자를 위한 엔터프라이즈 IdPs(OpenID Connect 또는 SAML을 통해)
-
Amazon Cognito 사용자 풀
- AWS 자격 증명 관리
-
개발 웹 서버에서 애플리케이션을 설정하고 브라우저에서 애플리케이션에 액세스하면 다음 옵션이 표시됩니다.
사전 조건
시작하기 전에 다음 리소스를 구성해야 합니다.
-
Amazon Cognito에 액세스할 수 있는 AWS 계정입니다. AWS 계정이 없는 경우의 지침을 따릅니다시작하기 AWS.
-
개발 시스템에 Python 3.8 이상이 설치되어 있습니다.
-
GitHub 액세스.
-
AWS Amazon Cognito APIs. 이러한 자격 증명은 개발자 인증에 필요합니다.
특정 SDK에서 AWS 자격 증명 및 자격 증명 풀 페더레이션을 구현하는 방법에 대한 자세한 내용은 섹션을 참조하세요자격 증명 얻기.
인증 공급자 설정
이 애플리케이션에서 최상의 결과를 얻으려면 하나 이상의 서드 파티 자격 증명 공급자(IdPs) 또는 Amazon Cognito 사용자 풀을 설정하고 Amazon Cognito 자격 증명 풀과 통합합니다. 사전 조건을 완료하고이 데모 애플리케이션을 실행하기 전에 구성할 자격 증명 공급자를 선택합니다. Amazon Cognito 콘솔은 자격 증명 풀 및 공급자를 구성하는 프로세스를 안내합니다.
- Amazon Cognito 사용자 풀
-
- 소셜 ID 제공업체
-
- OpenID Connect(OIDC) 공급자
-
- SAML 제공업체
-
이 데모 애플리케이션의 경우 지원되는 모든 자격 증명 공급자를 설정할 필요가 없습니다. 사용 사례와 일치하는 것으로 시작할 수 있습니다. 각 링크는 자세한 구성 지침을 제공합니다.
데모 애플리케이션 배포
리포지토리 복제
-
터미널 창을 엽니다.
-
aws-doc-sdk-examples 리포지토리를 복제하거나 리포지토리에서이 폴더를 검색합니다.
git clone https://github.com/awsdocs/aws-doc-sdk-examples.git
-
프로젝트 디렉터리로 이동합니다.
cd python/example_code/cognito/scenarios/identity_pools_example_demo/web
자격 증명 풀 생성
애플리케이션에 대한 Amazon Cognito 자격 증명 풀을 생성하려면의 지침을 따릅니다ID 풀 콘솔 개요.
데모 애플리케이션의 자격 증명 풀을 구성하려면
-
Amazon Cognito 콘솔을 엽니다.
-
왼쪽 탐색 메뉴에서 자격 증명 풀을 선택합니다. 기존 자격 증명 풀을 선택하거나 새 자격 증명 풀을 생성합니다.
-
사용자 액세스에서 인증된 액세스 및 게스트 액세스를 활성화합니다. 새 IAM 역할 또는 기존 IAM 역할을 구성하고 각 사용자 유형에 부여할 권한을 할당합니다.
-
사용자 액세스에서 구성하려는 자격 증명 공급자를 설정합니다.
-
자격 증명 풀 속성에서 기본(클래식) 인증을 활성화합니다.
-
브라우저를 자격 증명 풀의 콘솔에 열어 둡니다. 애플리케이션 설정에서 자격 증명 풀 ID 및 기타 구성 정보를 사용합니다.
다음 단계는 데모 애플리케이션의 초기 설정을 안내합니다.
자격 증명 풀의 인증 방법 살펴보기
이 섹션에서는 Amazon Cognito 자격 증명 풀 데모 애플리케이션을 사용하여 기본 및 향상된 인증 흐름을 안내합니다. 이 데모에서는 자격 증명 풀이 다양한 자격 증명 공급자와 협력하여 애플리케이션 사용자에게 임시 AWS 자격 증명을 제공하는 방법을 알아봅니다.
예제 애플리케이션의 대화형 데모 섹션에서 먼저 자격 증명 풀에서 지원하는 두 가지 유형의 액세스 중에서 선택합니다.
- 인증되지 않은(게스트) 액세스
-
아직 인증하지 않은 사용자에게 AWS 자격 증명을 제공합니다.
- 인증된 액세스
-
사용 가능한 전체 범위의 권한으로 자격 AWS 증명에 대한 자격 증명 공급자 토큰을 교환합니다. .env 파일에서 구성한 자격 증명 공급자 중에서 자격 증명 공급자를 선택합니다.
이 단계에서는 자격 증명 풀의 게스트 액세스 기능을 통해 인증되지 않은(게스트) 사용자의 임시 AWS 자격 증명을 얻는 방법을 보여줍니다. 데모 애플리케이션에서는 향상된 흐름과 기본 흐름을 모두 테스트하여 사용자 로그인 없이 자격 증명 풀이 자격 증명을 발급하는 방법을 확인합니다. 게스트 액세스는 인증된 액세스와 동일한 API 시퀀스를 사용하지만 자격 증명 공급자 토큰(예: Google, Facebook의 OAuth 토큰 또는 엔터프라이즈 공급자의 SAML 어설션)은 제공하지 않습니다.
인증 없이 사용자에게 제한된 AWS 액세스 권한을 제공하는 방법에 대한 정보를 찾고 있다면 계속 읽어보세요. 게스트 액세스를 구현한 후에는 익명 사용자에게 보안 AWS 인증을 안전하게 제공하고 두 인증 흐름 간의 차이점을 이해하는 방법을 알아봅니다.
인증되지 않은 액세스는 인터넷에 액세스할 수 있는 모든 사람에게 자격 증명을 발급할 수 있으므로 퍼블릭 APIs 및 그래픽 자산과 같이 최소한의 보안이 필요한 AWS 리소스에 가장 적합합니다. 이 단계를 진행하기 전에 게스트 액세스가 활성화된 ID 풀을 구성했는지 확인하고 권한을 제한하는 적절한 IAM 정책이 마련되어 있는지 확인합니다.
- Guest access with enhanced flow
-
향상된 흐름은 두 개의 API 요청이 있는 인증되지 않은 사용자의 자격 증명을 얻 AWS 는 간소화된 접근 방식입니다.
향상된 흐름으로 게스트 액세스를 테스트하려면
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
게스트 액세스 탭을 선택합니다.
-
향상된 흐름 탭을 선택합니다.
-
게스트 액세스 테스트를 선택합니다.
-
앱은 추가 인증 프롬프트 없이 자격 증명 풀에서 임시 자격 AWS 증명을 가져옵니다.
-
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-07T00:58:21-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
GetId()를 사용한 API 요청identityPoolId. 게스트 액세스에 인증 토큰이 필요하지 않음
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
유효한 경우 사용자의를 찾거나 생성하고 반환합니다IdentityID. 응답의 예는 다음과 같습니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
-
GetCredentialsForIdentity()를 반환합니다identityPoolId.
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
Cognito는 게스트 액세스를 검증하고, 내부적으로 인증되지 않은 역할을 수임하고 AWS STS, 임시 AWS 자격 증명을 반환합니다. (이 호출에는 IAM 인증이 없습니다. 역할 신뢰는를 허용해야 합니다cognito-identity-amazonzaws.com.)
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-07T00:58:21-07:00"
}
}
- Guest access with basic flow
-
기본 흐름은 자격 증명 검색 및 자격 증명 생성을 위한 별도의 API 요청을 통해 인증 프로세스에 대한 세분화된 제어를 제공합니다.
기본 흐름을 사용하여 게스트 액세스를 테스트하려면
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
게스트 액세스 탭을 선택합니다.
-
기본 흐름 탭을 선택합니다.
-
게스트 액세스 테스트를 선택합니다.
-
앱은 추가 인증 프롬프트 없이 자격 증명 풀에서 임시 자격 AWS 증명을 가져옵니다.
-
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
GetId() 자격 증명 풀 ID가 있는 API 요청. 게스트 액세스에는 인증 토큰이 필요하지 않습니다.
POST GetId
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
유효한 경우 사용자의를 찾거나 생성하고 반환합니다IdentityID. 응답의 예는 다음과 같습니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetOpenIdToken() 반환된 맵IdentityID과 동일한 Logins 맵이 있는
POST GetOpenIdToken
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Token": "eyJraWQiOiJFWAMPLE......"
}
이 단계에서 발생하는 일: Amazon Cognito는 cognito-identity.amazonaws.com이를 나타내는 수명이 짧은 OpenID Connect 웹 자격 증명 토큰을 발행합니다IdentityId. 토큰에는 aud(자격 증명 풀 ID) 및 amr(인증 또는 미인증)을 포함하여가 AWS STS 평가하는 OIDC 클레임이 포함됩니다. IAM 역할의 신뢰 정책에는 이러한 클레임이 필요합니다.
-
AssumeRoleWithWebIdentity() - 앱이를 AWS STS 직접 호출하여 Amazon Cognito OpenID 토큰을 임시 AWS 자격 증명으로 교환합니다.
POST sts:AssumeRoleWithWebIdentity
{
"RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolUnauth_Role",
"WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
}
응답:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "FwoGZXIvYXdzEEXAMPLE......"
}
}
이 단계에서 일어나는 일: 일단 검증되면:는 임시 AWS 자격 증명을 반환합니다.
임시 자격 증명 사용
이러한 임시 자격 증명은 표준 AWS 자격 증명으로 작동하지만 자격 증명 풀의 인증되지 않은 IAM 역할에 정의된 제한된 권한을 갖습니다. AWS SDK 또는에서 사용할 수 있습니다 AWS CLI. 자격 증명으로 AWS SDKs 구성하는 방법에 대한 자세한 내용은SDK 및 도구 참조 안내서의 표준화된 자격 증명 공급자를 참조하세요. AWS SDKs
아래 예제는 전체 목록이 아니지만 자격 증명 풀의 게스트 기능이 사용자 경험을 개선할 수 있는 일반적인 방법을 보여줍니다.
다음 예제에서는 게스트 사용자로 제한된 Amazon S3 액세스를 위해 자격 증명 공급자를 구성합니다.
- Python
-
# Example: Using credentials with boto3
import boto3
# Configure client with temporary credentials
s3_client = boto3.client(
's3',
aws_access_key_id='AKIAIOSFODNN7EXAMPLE',
aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
aws_session_token='IQoJb3JpZ2luX2VjEEXAMPLE......'
)
# Make API requests within IAM role permissions
response = s3_client.list_objects_v2(Bucket='my-public-bucket')
# Access public content
for obj in response.get('Contents', []):
print(f"File: {obj['Key']}, Size: {obj['Size']} bytes")
- JavaScript
-
// Example: Accessing public content
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3";
const s3Client = new S3Client({
region: "us-east-1",
credentials: {
accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
sessionToken: 'IQoJb3JpZ2luX2VjEEXAMPLE......'
}
});
// Access public images or documents
const response = await s3Client.send(new GetObjectCommand({
Bucket: 'my-public-content',
Key: 'product-catalog.pdf'
}));
다음 예제에서는 Amazon DynamoDB에 대한 읽기 전용 액세스를 게스트 사용자로 사용합니다.
- Python
-
# Example: Limited app functionality for trial users
import boto3
dynamodb = boto3.client(
'dynamodb',
aws_access_key_id='AKIAIOSFODNN7EXAMPLE',
aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
aws_session_token='IQoJb3JpZ2luX2VjEEXAMPLE......'
)
# Allow guest users to view sample data (limited to 5 items)
response = dynamodb.scan(TableName='SampleProducts', Limit=5)
- JavaScript
-
// Example: Limited app functionality for trial users
import { DynamoDBClient, ScanCommand } from "@aws-sdk/client-dynamodb";
const dynamodbClient = new DynamoDBClient({
region: "us-east-1",
credentials: {
accessKeyId: 'AKIAIOSFODNN7EXAMPLE',
secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
sessionToken: 'IQoJb3JpZ2luX2VjEEXAMPLE......'
}
});
// Allow guest users to view sample data (limited to 5 items)
const response = await dynamodbClient.send(new ScanCommand({
TableName: 'SampleProducts',
Limit: 5
}));
이 단계에서는 Amazon Cognito 자격 증명 풀에서 소셜 자격 증명 공급자를 사용하는 전체 흐름을 살펴봅니다. 소셜 인증은 페더레이션 ID 관리를 통해 보안을 유지하면서 익숙한 로그인 환경을 제공합니다. Google, Facebook, Amazon과 같은 소셜 자격 증명 공급자(IdP)에서 로그인한 다음 해당 IdP 토큰을 임시 AWS 자격 증명으로 교환할 수 있습니다. Twitter와 Apple 통합은 자격 증명 풀에서도 지원되지만 예제 애플리케이션에서는 지원되지 않습니다.
자격 증명 풀 자체는 사용자 디렉터리가 아닙니다. 암호나 프로필 필드는 저장되지 않습니다. 대신 외부 IdPs를 신뢰하여 사용자를 인증하고 이미 인증된 사용자가 IAM 역할에 대한 자격 증명을 제공하여 서비스를 직접 호출 AWS 할 수 있도록 권한을 부여하는 데 중점을 둡니다.
- Social identity provider with enhanced flow
-
이 섹션에서는 소셜 자격 증명 공급자를 사용하여 사용자에 로그인하고 향상된 흐름을 사용하여 Amazon Cognito 자격 증명 풀의 공급자 토큰을 리소스를 요청하는 AWS 임시 자격 증명으로 교환하는 방법을 보여줍니다.
예제 애플리케이션에서 향상된 흐름으로 소셜 로그인 사용
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
인증된 액세스 탭을 선택합니다.
-
향상된 흐름 탭을 선택합니다.
-
Google로 로그인, Facebook으로 로그인 또는 Amazon으로 로그인과 같이 구성한 지원되는 소셜 공급자를 선택합니다.
-
로그인하고 애플리케이션과 사용자 데이터를 공유하는 데 동의합니다.
-
공급자가 앱의 리디렉션 URI로 다시 리디렉션합니다.
-
앱이 공급자 토큰을 자격 증명 풀로 전송하고 임시 AWS 자격 증명을 검색합니다.
-
앱은 웹 인터페이스에 결과 패널을 표시합니다.
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
앱은 소셜 IdP로 사용자를 로그인하고 공급자 토큰을 가져옵니다. 자격 증명 풀은 소셜 공급자의 다음 아티팩트를 수락합니다.
| ID 공급자 |
Cognito 공급자 키 |
용도 |
| Google |
accounts.google.com |
Google Sign-In의 OAuth 2.0 토큰 |
| Facebook |
graph.facebook.com |
Facebook Login의 액세스 토큰 |
| Amazon |
www.amazon.com |
Login with Amazon의 OAuth 토큰 |
소셜 공급자와의 인증에 성공하면 앱은 액세스 토큰 및 기타 인증 세부 정보가 포함된 OAuth 응답을 받습니다.
{
"access_token": "ya29.A0AS3H6NEXAMPLE......",
"expires_in": 3599,
"scope": "openid https://www.examplesocial....",
"token_type": "Bearer",
"id_token": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
}
-
GetId() 자격 증명 풀 ID 및 소셜 공급자 토큰이 포함된 Logins맵이 포함된 API 요청
POST GetId
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"accounts.google.com": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetCredentialsForIdentity() 반환된 맵IdentityID과 동일한 Logins 맵이 있는
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"accounts.google.com": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
}
}
응답:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-07T00:58:21-07:00"
},
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
발생한 일: Amazon Cognito는 구성된 공급자에 대해 토큰을 검증하고, 공급자 구성을 기반으로 IAM 역할을 선택하고, 사용자를 대신하여 AWS STS 를 호출했습니다. 그러면 자격 증명 풀이 임시 자격 증명을 반환했습니다.
- Social identity provider with basic flow
-
이 섹션에서는 소셜 자격 증명 공급자를 사용하여 사용자에 로그인하고 기본 흐름을 사용하여 Amazon Cognito 자격 증명 풀의 공급자 토큰을 AWS 서비스를 호출하기 위한 임시 자격 증명으로 교환하는 방법을 보여줍니다.
예제 애플리케이션의 기본 흐름과 함께 소셜 로그인 사용
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
인증된 액세스 탭을 선택합니다.
-
기본 흐름 탭을 선택합니다.
-
Google로 로그인, Facebook으로 로그인 또는 Amazon으로 로그인과 같이 구성한 지원되는 소셜 공급자를 선택합니다.
-
로그인하고 애플리케이션과 사용자 데이터를 공유하는 데 동의합니다.
-
공급자가 앱의 리디렉션 URI로 다시 리디렉션합니다.
-
앱이 공급자 토큰을 자격 증명 풀로 전송하고 임시 AWS 자격 증명을 검색합니다.
-
앱은 웹 인터페이스에 결과 패널을 표시합니다.
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
앱은 소셜 IdP로 사용자를 로그인하고 공급자 토큰을 가져옵니다. 자격 증명 풀은 소셜 공급자의 다음 아티팩트를 수락합니다.
| ID 공급자 |
Cognito 공급자 키 |
용도 |
| Google |
accounts.google.com |
Google Sign-In의 OAuth 2.0 토큰 |
| Facebook |
graph.facebook.com |
Facebook Login의 액세스 토큰 |
| Amazon |
www.amazon.com |
Login with Amazon의 OAuth 토큰 |
소셜 공급자와의 인증에 성공하면 앱은 액세스 토큰 및 기타 인증 세부 정보가 포함된 OAuth 응답을 받습니다.
{
"access_token": "ya29.A0AS3H6NEXAMPLE......",
"expires_in": 3599,
"scope": "openid https://www.examplesocial....",
"token_type": "Bearer",
"id_token": "eyJhbGciOiJSUzI1NiIsEXAMPLE......"
}
-
GetId() 자격 증명 풀 ID 및 소셜 공급자 토큰이 포함된 Logins 맵이 포함된 API 요청
POST GetId
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"accounts.google.com": "token..."
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetOpenIdToken() 반환IdentityID되고 동일한 로그인 맵이 있는
POST GetOpenIdToken
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"accounts.google.com": "token..."
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Token": "eyJraWQiOiJFWAMPLE......"
}
-
AssumeRoleWithWebIdentity() OpenID 토큰 사용
POST AssumeRoleWithWebIdentity
{
"RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
"WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
}
응답:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T14:36:17-07:00"
}
}
발생한 일: Amazon Cognito는 구성된 공급자에 대해 토큰을 검증하고 OpenID 토큰을 발급했습니다. 애플리케이션을 AWS STS 직접 호출하여 IAM 역할을 수임하고 임시 자격 증명을 받습니다.
소셜 액세스 이해
-
소셜 사용자는 소셜 공급자를 통해 인증한 후 Amazon Cognito 자격 증명 풀을 통해 임시 AWS 자격 증명을 받습니다.
-
인증된 각 사용자는 세션 간에 지속되는 고유한 자격 증명 ID를 가져옵니다.
-
이러한 자격 증명은 인증된 액세스를 위해 특별히 설계된 IAM 역할에 연결되어 게스트 액세스보다 광범위한 권한을 제공합니다.
-
소셜 공급자 토큰은 자격 AWS 증명으로 교환되어 사용자 자격 증명과 권한을 유지합니다.
이 단계에서는 사용자 풀 관리형 로그인 통합을 사용한 Amazon Cognito 인증을 살펴봅니다. 사용자 풀을 IdP로 자격 증명 풀에 연결하면 사용자 풀 토큰이 자격 증명 풀에 임시 자격 증명을 발급할 수 있는 권한을 부여합니다.
- User pool authentication with enhanced flow
-
향상된 흐름은 단일 API 요청으로 Amazon Cognito 자격 증명 풀을 통해 자격 증명을 얻 AWS 는 간소화된 접근 방식을 제공합니다.
자격 증명 풀 확장 흐름과 함께 Amazon Cognito 사용자 풀 인증 사용
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
인증된 액세스 탭을 선택합니다.
-
향상된 흐름 탭을 선택합니다.
-
Amazon Cognito 사용자 풀로 로그인을 선택합니다.
-
관리형 로그인에서 사용자 이름과 암호로 로그인을 완료합니다.
-
사용자 풀은 권한 부여 코드를 사용하여 애플리케이션 리디렉션 URI로 다시 리디렉션됩니다.
-
애플리케이션은 권한 부여 코드를 사용자 풀과 JSON 웹 토큰으로 교환합니다.
-
애플리케이션은 ID 토큰을 자격 증명 풀과 임시 AWS 자격 증명으로 교환합니다.
-
앱이 웹 인터페이스에 결과 패널을 표시합니다.
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
앱은 Amazon Cognito로 사용자를 로그인합니다. 사용자 풀을 사용한 인증에 성공하면 앱은 ID 토큰(JWT)이 포함된 OAuth 2.0 응답을 수신합니다. 자격 증명 풀은 다음 공급자 키 형식을 사용하여 사용자 풀에서 JWT ID 토큰을 수락합니다.
| ID 공급자 |
Cognito 공급자 키 |
용도 |
| Amazon Cognito 사용자 풀 |
cognito-idp.{region}.amazonaws.com/{user-pool-id} |
Amazon Cognito 사용자 풀의 JWT ID 토큰 |
사용자 풀을 사용한 인증에 성공하면 앱은 ID 토큰(JWT)이 포함된 OAuth 2.0 응답을 받습니다.
{
"id_token": "eyJraWQiOiJFWAMPLE......",
"token_type": "Bearer",
"expires_in": 3600
}
-
GetId() identityPoolId및에 매핑된 사용자 풀 공급자 키가 포함된 Logins 맵을 사용한 API 요청id_token. Amazon Cognito는 사용자 풀 ID 토큰의 서명, 발급자, 만료 및 대상(aud)이 자격 증명 풀의이 사용자 풀 IdP에 등록한 앱 클라이언트 IDs했습니다.
POST GetId
{
"AccountId": "111122223333",
"IdentityPoolId": "us-east-1:1ac4a76d-1fef-48aa-83af-4224799c0b5c",
"Logins": {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
}
}
유효한 경우 사용자의를 찾거나 생성하고 반환합니다IdentityID. 응답의 예는 다음과 같습니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetCredentialsForIdentity()는 반환identityPoolId되고 a는와 동일한 Logins 맵입니다id_token. Amazon Cognito는 사용자 풀 ID 토큰의 서명, 발급자, 만료 및 대상(aud)이 자격 증명 풀의이 사용자 풀 IdP에 등록한 앱 클라이언트 IDs 중 하나와 일치하는지 다시 검증합니다.
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
}
}
유효한 경우 IAM 역할(roles-in-token, 규칙 또는 기본값)을 선택하고 사용자를 대신하여를 호출 AWS STS 하고 임시 AWS 자격 증명을 반환합니다. 응답의 예는 다음과 같습니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "ASIAW7TIP7EJEXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T14:36:17-07:00"
}
}
- User pool authentication with basic flow
-
기본 흐름은 자격 증명 검색 및 자격 증명 생성을 위한 별도의 API 요청을 통해 인증 프로세스에 대한 세분화된 제어를 제공합니다.
자격 증명 풀 기본 흐름과 함께 Amazon Cognito 사용자 풀 인증 사용
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
인증된 액세스 탭을 선택합니다.
-
기본 흐름 탭을 선택합니다.
-
Amazon Cognito 사용자 풀로 로그인을 선택합니다.
-
관리형 로그인에서 사용자 이름과 암호로 로그인을 완료합니다.
-
사용자 풀은 권한 부여 코드를 사용하여 애플리케이션 리디렉션 URI로 다시 리디렉션됩니다.
-
애플리케이션은 권한 부여 코드를 사용자 풀과 JSON 웹 토큰으로 교환합니다.
-
애플리케이션은 ID 토큰을 자격 증명 풀과 임시 AWS 자격 증명으로 교환합니다.
-
앱이 웹 인터페이스에 결과 패널을 표시합니다.
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
앱은 Amazon Cognito 사용자 풀을 사용하여 사용자에 로그인하고 ID 토큰(JWT)을 아티팩트로 가져옵니다. 사용자 풀을 사용한 인증에 성공하면 앱은 ID 토큰(JWT)이 포함된 OAuth 응답을 수신합니다. 자격 증명 풀은 인증에이 토큰을 사용합니다.
{
"id_token": "eyJraWQiOiJFWAMPLE......",
"token_type": "Bearer",
"expires_in": 3600
}
-
GetId() ID 풀 ID와 사용자 풀 공급자 키 및 ID 토큰을 값으로 포함하는 Logins 맵이 있는 API 요청입니다. Amazon Cognito는 사용자 풀 ID 토큰의 서명, 만료 및 대상(aud)이 자격 증명 풀의이 사용자 풀 IdP에 등록한 앱 클라이언트 IDs 중 하나와 일치하는지 확인했습니다.
POST GetId
{
"AccountId": "111122223333",
"IdentityPoolId": "us-east-1:1ac4a76d-1fef-48aa-83af-4224799c0b5c",
"Logins": {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
}
}
유효한 경우 사용자의를 찾거나 생성하고 반환합니다IdentityID. 응답의 예는 다음과 같습니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetOpenIdToken() 반환된 맵IdentityID과 동일한 Logins 맵이 있는
POST GetOpenIdToken
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE123": "eyJraWQiOiJFWAMPLE......"
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Token": "eyJraWQiOiJFWAMPLE......"
}
이 단계에서 발생하는 일: Amazon Cognito는 cognito-identity.amazonaws.com이를 나타내는 수명이 짧은 OpenID Connect 웹 자격 증명 토큰을 발행합니다IdentityId. 토큰에는 aud(자격 증명 풀 ID) 및 amr(인증 또는 미인증)을 포함하여가 AWS STS 평가하는 OIDC 클레임이 포함됩니다. IAM 역할의 신뢰 정책에는 이러한 클레임이 필요합니다.
-
AssumeRoleWithWebIdentity() - 앱이를 AWS STS 직접 호출하여 Amazon Cognito OpenID 토큰을 임시 AWS 자격 증명으로 교환합니다.
POST sts:AssumeRoleWithWebIdentity
{
"RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
"WebIdentityToken": "eyJraWQiOiJFWAMPLE......",
"RoleSessionName": "CognitoIdentityCredentials"
}
응답:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "FwoGZXIvYXdzEEXAMPLE......",
"Expiration": "2025-08-12T14:36:17-07:00"
},
"AssumedRoleUser": {
"AssumedRoleId": "AROAW7TIP7EJYEXAMPLE:CognitoIdentityCredentials",
"Arn": "arn:aws:sts::111122223333:assumed-role/Cognito_IdentityPoolAuth_Role/CognitoIdentityCredentials"
}
}
데모 애플리케이션이 수행한 작업: 앱이에서 로 OpenID 토큰을 전송GetOpenIdToken()하여 임시 자격 증명을 AWS STS요청했습니다. AWS STS 는 검증 검사를 수행하고 자격 증명을 발급했습니다.
-
사용자 풀 사용자는 Amazon Cognito 자격 증명 풀을 통해 임시 AWS 자격 증명을 받습니다.
-
이러한 자격 증명은 자격 증명 풀 구성에 지정된 IAM 역할에 연결됩니다.
-
사용자 풀 ID 토큰은 자격 증명 풀을 통해 AWS 자격 증명으로 교환됩니다.
이 단계에서는 SAML 인증을 살펴봅니다. 사용자는 AWS 서비스에 액세스하기 위해 SAML을 지원하는 엔터프라이즈 자격 증명 공급자로 로그인할 수 있습니다. 예제 애플리케이션에서는 SAML을 사용한 기본 흐름이 지원되지 않습니다.
- SAML authentication with enhanced flow
-
이 섹션에서는 SAML 자격 증명 공급자를 사용하여 사용자에 로그인하고 향상된 흐름을 사용하여 Amazon Cognito 자격 증명 풀의 SAML 어설션을 서비스를 호출 AWS 하기 위한 임시 AWS 자격 증명으로 교환하는 방법을 보여줍니다.
자격 증명 풀 확장 흐름과 함께 SAML 인증 사용
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
인증된 액세스 탭을 선택합니다.
-
향상된 흐름 탭을 선택합니다.
-
SAML 공급자로 로그인을 선택합니다.
-
엔터프라이즈 자격 증명으로 로그인을 완료합니다.
-
사용자 풀은 SAML 어설션을 사용하여 애플리케이션 리디렉션 URI로 다시 리디렉션됩니다.
-
애플리케이션은 권한 부여 코드를 사용자 풀과 JSON 웹 토큰으로 교환합니다.
-
애플리케이션은 SAML 응답을 자격 증명 풀과 임시 AWS 자격 증명으로 교환합니다.
-
앱이 웹 인터페이스에 결과 패널을 표시합니다.
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
앱은 SAML IdP로 사용자를 로그인하고 SAML 응답을 가져옵니다. 자격 증명 풀은 SAML 공급자 ARN을 키로 사용하여 엔터프라이즈 공급자의 SAML 어설션을 수락합니다.
| ID 공급자 |
Cognito 공급자 키 |
용도 |
| SAML 공급자 |
arn:aws:iam::111122223333:saml-provider/EXAMPLE |
엔터프라이즈 IdPs의 SAML 어설션 |
SAML 공급자와의 인증에 성공하면 앱은 HTTP POST를 통해 콜백 URL에 대한 SAML 응답을 수신합니다.
{
"saml_response": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE...",
"provider_arn": "arn:aws:iam::111122223333:saml-provider/EXAMPLE",
"status": "Authentication successful"
}
-
GetId() 자격 증명 풀 ID와 SAML 공급자 ARN 및 어설션이 포함된 Logins 맵이 포함된 API 요청
POST GetId
{
"AccountId": "111122223333",
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"arn:aws:iam::111122223333:saml-provider/EXAMPLE": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE..."
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetCredentialsForIdentity() 반환된 맵IdentityID과 동일한 Logins 맵이 있는
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"arn:aws:iam::111122223333:saml-provider/EXAMPLE": "PD94bWwgdmVyc2lvbj0iMS4wIiBFWAMPLE..."
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......"
}
}
발생한 일: Amazon Cognito는 구성된 공급자에 대해 SAML 어설션을 검증하고, SAML 속성 또는 규칙을 기반으로 IAM 역할을 선택하고, 사용자를 대신하여 AWS STS 를 호출했습니다.
SAML 액세스 이해
-
엔터프라이즈 사용자는 SAML 공급자를 통해 인증한 후 Amazon Cognito 자격 증명 풀에서 임시 AWS 자격 증명을 받습니다.
-
인증된 각 사용자는 세션 간에 지속되는 고유한 자격 증명 ID를 가져옵니다.
-
이러한 자격 증명은 인증된 액세스를 위해 특별히 설계된 IAM 역할에 연결되어 게스트 액세스보다 광범위한 권한을 제공합니다.
-
SAML 어설션은 자격 AWS 증명과 교환되어 사용자 자격 증명과 엔터프라이즈 속성을 유지합니다.
이 단계에서는 엔터프라이즈 자격 증명 공급자를 사용한 OIDC 인증을 살펴봅니다. 사용자는 조직의 엔터프라이즈 자격 증명 공급자(예: Azure AD, Okta 또는 Google Workspace)를 통해 로그인하여 AWS 서비스에 액세스할 수 있습니다. 표준 기반 인증을 AWS 리소스와 통합하는 방법에 대한 정보를 찾고 있다면 계속 읽어보세요. OIDC 인증을 구현한 후에는 세분화된 액세스 제어를 위해 OIDC 클레임을 활용하는 방법을 알아봅니다.
- OIDC authentication with enhanced flow
-
이 섹션에서는 OIDC 자격 증명 공급자를 사용하여 사용자에 로그인하고 향상된 흐름을 사용하여 Amazon Cognito 자격 증명 풀의 OIDC 토큰을 서비스를 호출 AWS 하기 위한 임시 AWS 자격 증명으로 교환하는 방법을 보여줍니다.
자격 증명 풀 확장 흐름과 함께 OIDC 로그인 사용
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
인증된 액세스 탭을 선택합니다.
-
향상된 흐름 탭을 선택합니다.
-
OIDC 공급자로 로그인을 선택합니다.
-
엔터프라이즈 자격 증명으로 로그인을 완료합니다.
-
OIDC 공급자가 권한 부여 코드를 사용하여 앱으로 다시 리디렉션합니다.
-
애플리케이션은 권한 부여 코드를 사용자 풀과 JSON 웹 토큰으로 교환합니다.
-
애플리케이션은 OIDC 토큰을 자격 증명 풀로 보내고 임시 AWS 자격 증명을 검색합니다.
-
앱이 웹 인터페이스에 결과 패널을 표시합니다.
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
앱은 OIDC IdP로 사용자를 로그인하고 ID 토큰을 가져옵니다. 자격 증명 풀은 엔터프라이즈 공급자의 OIDC 토큰을 수락합니다.
| ID 공급자 |
Cognito 공급자 키 |
용도 |
| OIDC 공급자 |
example-provider.com/oauth2/default |
엔터프라이즈 IdPs의 OIDC ID 토큰 |
OIDC 공급자와의 인증에 성공하면 앱은 토큰이 포함된 OAuth 2.0 응답을 받습니다.
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJraWQiOiJFWAMPLE......",
"scope": "email openid profile",
"id_token": "eyJraWQiOiJFWAMPLE......"
}
-
GetId() 자격 증명 풀 ID 및 OIDC 공급자 토큰이 포함된 Logins 맵이 포함된 API 요청
POST GetId
{
"AccountId": "111122223333",
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetCredentialsForIdentity() 반환IdentityID되고 동일한 로그인 맵이 있는
POST GetCredentialsForIdentity
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......"
}
}
발생한 일: Amazon Cognito는 구성된 공급자에 대해 OIDC 토큰을 검증하고, IAM 역할(기본값, 클레임 기반 또는 규칙 매핑)을 선택하고, 사용자를 AWS STS 대신하여를 호출했습니다.
- OIDC authentication with basic flow
-
이 섹션에서는 OIDC 자격 증명 공급자를 사용하여 사용자에 로그인하고 기본 흐름을 사용하여 Amazon Cognito 자격 증명 풀의 OIDC 토큰을 서비스를 호출 AWS 하기 위한 임시 AWS 자격 증명으로 교환하는 방법을 보여줍니다.
자격 증명 풀 기본 흐름과 함께 OIDC 로그인 사용
-
데모 애플리케이션에서 대화형 데모 섹션으로 이동합니다.
-
인증된 액세스 탭을 선택합니다.
-
기본 흐름 탭을 선택합니다.
-
OIDC 공급자로 로그인을 선택합니다.
-
엔터프라이즈 자격 증명으로 로그인을 완료합니다.
-
OIDC 공급자가 권한 부여 코드를 사용하여 앱으로 다시 리디렉션합니다.
-
애플리케이션은 권한 부여 코드를 사용자 풀과 JSON 웹 토큰으로 교환합니다.
-
애플리케이션은 OIDC 토큰을 자격 증명 풀로 전송하고 임시 AWS 자격 증명을 검색합니다.
-
앱이 웹 인터페이스에 결과 패널을 표시합니다.
인증에 성공하면 결과 패널이 표시되는 웹 인터페이스가 표시되고 탐색할 수 있는 두 가지 옵션이 있습니다.
-
자격 증명만 보기 버튼: API 흐름 세부 정보 없이 생성된 임시 AWS 자격 증명을 직접 보려면이 버튼을 선택합니다.
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "IQoJb3JpZ2luX2VjEEXAMPLE......",
"Expiration": "2025-08-12T13:36:17-07:00"
}
}
-
세부 API 흐름 보기 버튼: step-by-step API 요청을 보려면이 버튼을 선택합니다.
-
앱은 OIDC IdP로 사용자를 로그인하고 ID 토큰을 가져옵니다. 자격 증명 풀은 엔터프라이즈 공급자의 OIDC 토큰을 수락합니다.
| ID 공급자 |
Cognito 공급자 키 |
용도 |
| OIDC 공급자 |
example-provider.com/oauth2/default |
엔터프라이즈 IdPs의 OIDC ID 토큰 |
OIDC 공급자와의 인증에 성공하면 앱은 토큰이 포함된 OAuth 2.0 응답을 받습니다.
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJraWQiOiJFWAMPLE......",
"scope": "openid email profile",
"id_token": "eyJraWQiOiJFWAMPLE......"
}
-
GetId() 자격 증명 풀 ID 및 OIDC 공급자 토큰이 포함된 Logins맵이 포함된 API 요청
POST GetId
{
"IdentityPoolId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
"Logins": {
"example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
-
GetOpenIdToken() 반환된 IdentityID와 동일한 Logins맵이 있는
POST GetOpenIdToken
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Logins": {
"example-provider.com/oauth2/default": "eyJraWQiOiJFWAMPLE......"
}
}
응답:
{
"IdentityId": "us-east-1:a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
"Token": "eyJraWQiOiJFWAMPLE......"
}
-
AssumeRoleWithWebIdentity() OpenID 토큰 사용
POST AssumeRoleWithWebIdentity
{
"RoleArn": "arn:aws:iam::111122223333:role/Cognito_IdentityPoolAuth_Role",
"WebIdentityToken": "eyJraWQiOiJFWAMPLE......"
}
응답:
{
"Credentials": {
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "FwoGZXIvYXdzEEXAMPLE......",
"Expiration": "2025-08-12T14:36:17-07:00"
}
}
발생한 일: Amazon Cognito는 구성된 공급자에 대해 OIDC 토큰을 검증하고 OpenID 토큰을 반환했습니다. 애플리케이션은 적절한 IAM 역할을 수임하기 위해 AWS STS 직접를 호출하고 수명이 짧은 자격 증명을 받았습니다.
OIDC 인증 이해
-
표준 기반: OIDC는 OAuth 2.0을 기반으로 하며 표준화된 자격 증명 정보를 제공합니다.
-
토큰 검증: ID 토큰의 신뢰성을 검증할 수 있습니다.
-
클레임 기반 액세스: 역할 매핑 및 액세스 제어에 OIDC 클레임을 사용할 수 있습니다.
-
엔터프라이즈 통합: 널리 사용되는 엔터프라이즈 자격 증명 공급자와 함께 작동합니다.
다음 단계
이제 데모 애플리케이션을 설정하고 살펴보았으므로 다음을 수행할 수 있습니다.
-
아직 테스트하지 않은 추가 자격 증명 공급자 구성
-
향상된 인증과 기본 인증을 모두 사용하여 차이점을 이해합니다.
-
자체 사용 사례에 맞게 데모 사용자 지정
-
Amazon Cognito 자격 증명 풀을 자체 애플리케이션에 통합합니다.