

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 사용자 풀 시작하기
<a name="getting-started-user-pools"></a>

인증 및 액세스 제어가 필요한 애플리케이션이 있습니다. Single Sign-On(SSO)을 위한 OpenID Connect(OIDC) 프레임워크 내에서 작업할 수 있습니다. Amazon Cognito에는 AWS SDK를 사용하여 애플리케이션의 인증 로직을 처리하고 클라이언트에서 브라우저를 호출하여 관리형 권한 부여 서버에 액세스하기 위한 도구가 있습니다.

Amazon Cognito 콘솔은 선호하는 애플리케이션 프레임워크의 보기에서 사용자 풀을 생성하는 과정을 안내합니다. 여기에서 외부 [소셜](tutorial-create-user-pool-social-idp.md) 또는 [SAML 2.0](tutorial-create-user-pool-saml-idp.md) ID 제공업체(idP)를 통한 페더레이션 로그인과 같은 기능을 계속 추가할 수 있습니다. Amazon Cognito 콘솔의 애플리케이션 모델은 프로젝트에 OIDC 라이브러리를 추가하고 브라우저를 호출하는 데 중점을 둡니다.

기능 세트를 확장하고 Amazon Cognito의 더 많은 구성 요소를 통합하는 작업을 수행하면서 사용자 풀로 수행할 수 있는 모든 작업에 대한 전체 설명은 [Amazon Cognito 사용자 풀](cognito-user-pools.md) 장을 참조하세요.

이 장과 Amazon Cognito 콘솔의 예제는 Amazon Cognito 사용자 풀과 애플리케이션 리소스의 기본적인 통합을 보여줍니다. 나중에 사용 가능한 옵션을 더 많이 사용하도록 사용자 풀을 조정할 수 있습니다. 그런 다음 애플리케이션을 업데이트하여 새로운 기능을 채택하고 IdP와 상호 작용할 수 있습니다.

[관리형 로그인 페이지를](cognito-terms.md#terms-managedlogin) 사용하지 않으려면 AWS SDK 또는를 사용하여 사용자 지정 인증 인터페이스를 사용하여 애플리케이션을 생성할 수 있습니다 AWS Amplify. 이러한 방식으로 빌드하는 애플리케이션은 [사용자 풀 API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)와 상호 작용하며 [로컬 사용자](cognito-terms.md#terms-localuser) 인증에만 적합합니다. [기타 애플리케이션 옵션](getting-started-user-pools-application-other-options.md)에서 이 인증 모델에 대해 계속 알아봅니다.

**Topics**
+ [Amazon Cognito 콘솔에서 새 애플리케이션 생성](getting-started-user-pools-application.md)
+ [기타 애플리케이션 옵션](getting-started-user-pools-application-other-options.md)
+ [사용자 풀에 더 많은 기능 및 보안 옵션 추가](user-pool-next-steps.md)

# Amazon Cognito 콘솔에서 새 애플리케이션 생성
<a name="getting-started-user-pools-application"></a>

사용자 풀은 소프트웨어 애플리케이션에 인증 옵션을 추가합니다. 가장 쉬운 시작 환경을 위해 Amazon Cognito 콘솔로 이동하여 지침을 따르세요. 여기에서 생성 프로세스는 사용자 풀 리소스 설정뿐만 아니라 애플리케이션의 초기 부분을 설정하는 과정을 안내합니다.

시작할 준비가 되면 [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/v2/idp/user-pools)로 이동하여 버튼을 선택하여 새 사용자 풀을 생성합니다. 설정 프로세스는 구성 및 프로그래밍 언어 옵션을 안내합니다.

**인증 개념을 위한 추가 리소스**
+ [Amazon Cognito 사용자 풀로 인증](authentication.md)
+ [API, OIDC 및 관리형 로그인 페이지 인증 이해](authentication-flows-public-server-side.md#user-pools-API-operations)
+ [Amazon Cognito에서 인증이 작동하는 방식](cognito-how-to-authenticate.md)
+ [웹 및 모바일 앱과 Amazon Cognito 인증 및 권한 부여 통합](cognito-integrate-apps.md)

**애플리케이션에 대한 Amazon Cognito 리소스를 생성하려면**

1. [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/)로 이동합니다. Amazon Cognito 리소스를 생성하고 관리할 수 있도록 IAM 보안 주체에 권한을 할당하려면 [AWS Amazon Cognito에 대한 관리형 정책](security-iam-awsmanpol.md) 섹션을 참조하세요. `AmazonCognitoPowerUser` 정책은 사용자 풀을 생성하기에 충분합니다.

1. **사용자 풀** 메뉴에서 **사용자 풀 생성**을 선택하거나 **5분 이내에 무료로 시작**을 선택합니다.

1. **애플리케이션 정의**에서 인증 및 권한 부여 서비스를 생성하려는 애플리케이션 시나리오에 가장 적합한 **애플리케이션 유형**을 선택합니다.

1. **애플리케이션 이름 지정**에 설명이 포함된 이름을 입력하거나 기본 이름으로 진행합니다.

1. 사용자 풀을 생성한 후에는 변경할 수 없는 설정을 지원하는 **옵션 구성**에서 몇 가지 기본 선택을 해야 합니다.

   1. **로그인 식별자 옵션**에서 사용자가 로그인할 때 사용자를 식별하는 방법을 알려줍니다. 사용자 생성 사용자 이름, 이메일 주소 또는 전화번호를 선호할 수 있습니다. 여러 옵션의 조합을 허용할 수도 있습니다. Amazon Cognito는 [관리형 로그인](cognito-user-pools-managed-login.md) 로그인 양식의 사용자 이름 필드에서 여기에서 구성하는 옵션을 수락합니다.

   1. **가입에 필요한 속성**에서 사용자가 새 계정에 등록할 때 수집하려는 사용자 정보를 알려주세요. 관리형 로그인 페이지에서 Amazon Cognito는 모든 필수 속성에 대한 프롬프트를 표시합니다.

      **로그인 식별자 옵션**은 필요한 속성에 영향을 미칩니다. **사용자 이름**에는 이메일 또는 SMS 메시지에서 암호 재설정 코드를 수신할 수 있도록 각 사용자에 대한 이메일 또는 전화 속성이 필요합니다. **이메일**에는 이메일 속성이 필요하고 **전화 번호**에는 전화 번호 속성이 필요합니다.

1. **반환 URL 추가**에서 사용자가 인증을 완료한 후에 대한 애플리케이션의 리디렉션 경로를 입력합니다. 이 위치는 OpenID Connect(OIDC) 라이브러리를 사용하여 사용자 인증 결과를 처리하는 애플리케이션의 경로여야 합니다. 테스트 애플리케이션의 반환 URL의 예는 `https://localhost:3000/callback`입니다. Amazon Cognito 콘솔의 예제 NodeJS 애플리케이션에서 이 경로는 [openid-client](https://www.npmjs.com/package/openid-client)를 사용하여 액세스 토큰을 수집하고 사용자 정보에 사용합니다. 리소스를 생성한 후 개발 플랫폼의 예를 찾아볼 수 있습니다.

1. **애플리케이션 생성**을 선택합니다. Amazon Cognito는 애플리케이션 유형에 대한 기본 설정을 사용하여 사용자 풀 및 앱 클라이언트를 생성합니다. 초기 리소스를 생성한 후 [외부 자격 증명 공급자](cognito-user-pools-identity-federation.md) 및 [다중 인증(MFA)](user-pool-settings-mfa.md#user-pool-configuring-mfa)과 같은 추가 옵션을 구성할 수 있습니다.

1. **애플리케이션 설정** 페이지에서 애플리케이션에 대한 코드 예제를 즉시 가져올 수 있습니다. 새 사용자 풀을 탐색하려면 아래로 스크롤하여 **개요로 이동**을 선택합니다.

1. 동일한 사용자 풀에 애플리케이션을 더 추가하려면 **앱 클라이언트** 메뉴로 이동하여 새 앱 클라이언트를 추가합니다. 이렇게 하면 애플리케이션 중심 생성 프로세스가 반복되지만 기존 사용자 풀에 새 앱 클라이언트만 추가됩니다.

이 프로세스로 사용자 풀과 하나 이상의 앱 클라이언트를 생성한 후 관리형 로그인으로 인증 작업 테스트를 시작할 수 있습니다. 이러한 빠른 시작 옵션은 공개 자체 가입이 가능합니다. 콘솔 프로세스를 사용하여 테스트 환경을 생성한 다음 완료된 설계를 프로덕션으로 이동하는 것이 좋습니다. 시간을 내어 Amazon Cognito의 기능을 숙지하세요. 그런 다음 프로덕션 워크로드로 이동하려면 사용자 지정 구성을 만들고 AWS CloudFormation 및와 같은 자동화 도구를 사용하여 배포합니다 AWS Cloud Development Kit (AWS CDK).

Amazon Cognito는 이 프로세스에서 되돌릴 수 없는 몇 가지 기본 구성을 만듭니다. 변경할 수 없는 사용자 풀 설정과 콘솔에서 선택할 수 있는 옵션에 대한 자세한 내용은 [사용자 풀 및 앱 클라이언트 구성 업데이트](cognito-user-pool-updating.md) 섹션을 참조하세요.


| 설정 | Effect | 변경 방법 | 추가 정보 | 
| --- | --- | --- | --- | 
| 클라이언트 보안 암호(client secret) | 인증 요청에 클라이언트 보안 암호 해시가 필요합니다. | 기존 웹 애플리케이션 또는 머신 간 애플리케이션 프로파일을 사용하여 새 앱 클라이언트를 생성합니다. | [앱 클라이언트를 사용한 애플리케이션별 설정](user-pool-settings-client-apps.md) | 
| 기본 설정 사용자 이름 | 사용자 풀은 preferred\$1username 속성을 별칭으로 수락하지 않습니다. |  AWS SDK를 사용하여 프로그래밍 방식으로 사용자 풀을 생성합니다. | [로그인 속성 사용자 지정](user-pool-settings-attributes.md#user-pool-settings-aliases) | 
| 대소문자 구분 | 사용자 풀 사용자 이름은 대/소문자를 구분하지 않습니다. 예를 들어 JohnD는 johnd와 동일한 사용자로 간주됩니다. |  AWS SDK를 사용하여 프로그래밍 방식으로 사용자 풀을 생성합니다. | [사용자 풀 대/소문자 구분](user-pool-case-sensitivity.md) | 

# 기타 애플리케이션 옵션
<a name="getting-started-user-pools-application-other-options"></a>

Amazon Cognito 인증과 통합하려는 기존 애플리케이션 UI가 있을 수 있습니다. Amazon Cognito 사용자 풀보다 기능이 낮은 디렉터리 설정이 있는 기존 인증 페이지가 있을 수도 있습니다. 다양한 프로그래밍 언어에 대한 Amazon Cognito 통합 AWS SDKs를 사용하여이 유형의 애플리케이션에 인증 구성 요소를 추가하거나 교체할 수 있습니다. 다음 예를 참조하세요.

Amazon Cognito 콘솔에서 이 용도로 사용자 풀을 생성하는 경우 대화형 로그인 페이지와 OpenID Connect(OIDC) 서비스를 호스팅하는 [사용자 풀 도메인](cognito-user-pools-assign-domain.md)이 필요하지 않을 수 있습니다. 콘솔에서 사용자 풀을 생성하는 프로세스는 자동으로 도메인을 생성합니다. 사용자 풀의 도메인 탭에서 이 **도메인**을 삭제할 수 있습니다. 다른 옵션으로는 API 요청 AWS SDKs 및 AWS Amplify CLI의 자동 설정 옵션을 사용하여 애플리케이션을 위한 Amazon Cognito 리소스의 프로그래밍 방식 생성이 있습니다. 자세한 내용은 [웹 및 모바일 앱과 Amazon Cognito 인증 및 권한 부여 통합](cognito-integrate-apps.md) 단원을 참조하십시오.

**Topics**
+ [React 단일 페이지 애플리케이션 예시 설정](#getting-started-test-application-react)
+ [Flutter를 사용하여 예시 Android 앱 설정](#getting-started-test-application-flutter)

## React 단일 페이지 애플리케이션 예시 설정
<a name="getting-started-test-application-react"></a>

이 자습서에서는 사용자 가입, 확인 및 로그인을 테스트할 수 있는 React 단일 페이지 애플리케이션을 생성합니다. React는 사용자 인터페이스(UI)에 중점을 둔 웹 및 모바일 앱용 JavaScript 기반 라이브러리입니다. 이 예시 애플리케이션은 Amazon Cognito 사용자 풀의 몇 가지 기본 함수를 보여줍니다. React를 사용한 웹 앱 개발 경험이 있는 경우 [GitHub에서 예시 앱을 다운로드](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/cognito-identity-provider/scenarios/cognito-developer-guide-react-example)합니다.

다음 스크린샷은 생성할 애플리케이션의 초기 인증 페이지입니다.

![\[React 기반 예시 웹 애플리케이션의 가입 페이지 스크린샷입니다.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/cognito-getting-started-react-app-running.png)


이 애플리케이션을 설정하려면 사용자 풀이 다음 요구 사항을 충족해야 합니다.
+ 사용자가 이메일 주소로 로그인할 수 있습니다. **Cognito 사용자 풀 로그인 옵션**: **이메일**.
+ 사용자 이름은 대/소문자를 구분하지 않습니다. **사용자 이름 요구 사항**: **사용자 이름 대소문자 구분**을 선택하지 않아야 합니다.
+ 다중 인증(MFA)은 필요하지 않습니다. **MFA 적용**: **선택적 MFA**.
+ 사용자 풀은 이메일 메시지를 사용하여 사용자 프로필 확인을 위한 속성을 확인합니다. **확인할 속성:** **이메일 메시지 전송, 이메일 주소 확인**.
+ 이메일은 유일한 필수 속성입니다. **필수 속성:** **이메일**.
+ 사용자는 사용자 풀에 직접 가입할 수 있습니다. **자체 등록**: **자체 등록 활성화**가 선택되었습니다.
+ 초기 앱 클라이언트는 사용자 이름과 암호로 로그인할 수 있는 퍼블릭 클라이언트입니다. **앱 유형:** **퍼블릭 클라이언트**, **인증 흐름**: `ALLOW_USER_PASSWORD_AUTH`.

### 애플리케이션 만들기
<a name="getting-started-test-application-react-create-app"></a>

이 애플리케이션을 빌드하려면 개발자 환경을 설정해야 합니다. 개발자 환경 요구 사항은 다음과 같습니다.

1. Node.js가 설치 및 업데이트됩니다.

1. 노드 패키지 관리자(npm)가 설치되고 최소 버전 10.2.3으로 업데이트됩니다.

1. 웹 브라우저의 TCP 포트 5173에서 환경에 액세스할 수 있습니다.

**예시 React 웹 애플리케이션을 만드는 방법**

1. 개발자 환경에 로그인하고 애플리케이션의 상위 디렉터리로 이동합니다.

   ```
   cd ~/path/to/project/folder/
   ```

1. 새 React 서비스를 만듭니다.

   ```
   npm create vite@latest frontend-client -- --template react-ts
   ```

1. GitHub의 AWS 코드 예제 리포지토리에서 `cognito-developer-guide-react-example` [프로젝트 폴더를](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/cognito-identity-provider/scenarios/cognito-developer-guide-react-example) 복제합니다.

   ```
   cd ~/some/other/path
   ```

   ```
   git clone https://github.com/awsdocs/aws-doc-sdk-examples.git
   ```

   ```
   cp -r ./aws-doc-sdk-examples/javascriptv3/example_code/cognito-identity-provider/scenarios/cognito-developer-guide-react-example/frontend-client ~/path/to/project/folder/
   ```

1. 프로젝트의 `src` 디렉터리로 이동합니다.

   ```
   cd ~/path/to/project/folder/frontend-client/src
   ```

1. `config.json`을 편집하고 다음 값을 바꿉니다.

   1. 를 AWS 리전 코드`YOUR_AWS_REGION`로 바꿉니다. 예를 들어 `us-east-1`입니다.

   1. `YOUR_COGNITO_USER_POOL_ID`를 테스트를 위해 지정한 사용자 풀의 ID로 바꿉니다. 예를 들어 `us-east-1_EXAMPLE`입니다. 사용자 풀은 이전 단계에서 AWS 리전 입력한에 있어야 합니다.

   1. `YOUR_COGNITO_APP_CLIENT_ID`를 테스트를 위해 지정한 앱 클라이언트의 ID로 바꿉니다. 예를 들어 `1example23456789`입니다. 앱 클라이언트는 이전 단계의 사용자 풀에 있어야 합니다.

1. `localhost` 이외의 IP에서 예제 애플리케이션에 액세스하려면 `package.json`을 편집하고 `"dev": "vite",` 줄을 `"dev": "vite --host 0.0.0.0",`으로 변경합니다.

1. 애플리케이션을 설치합니다.

   ```
   npm install
   ```

1. 애플리케이션을 시작합니다.

   ```
   npm run dev
   ```

1. `http://localhost:5173` 또는 `http://[IP address]:5173`의 웹 브라우저에서 애플리케이션에 액세스합니다.

1. 유효한 이메일 주소로 새 사용자를 등록합니다.

1. 이메일 메시지에서 확인 코드를 검색합니다. 애플리케이션에 확인 코드를 입력합니다.

1. 사용자 이름과 암호로 로그인합니다.

### Amazon Lightsail을 사용하여 React 개발자 환경 생성
<a name="getting-started-test-application-react-lightsail"></a>

이 애플리케이션을 시작하는 빠른 방법은 Amazon Lightsail을 사용하여 가상 클라우드 서버를 생성하는 것입니다.

Lightsail을 사용하면 이 예제 애플리케이션의 사전 요구 사항으로 사전 구성된 작은 서버 인스턴스를 빠르게 생성할 수 있습니다. 브라우저 기반 클라이언트를 사용하여 인스턴스에 SSH를 연결하고 퍼블릭 또는 프라이빗 IP 주소로 웹 서버에 연결할 수 있습니다.

**이 예시 애플리케이션의 Lightsail 인스턴스를 생성하는 방법**

1. [Lightsail 콘솔](https://lightsail.aws.amazon.com/ls/webapp/)로 이동합니다. 메시지가 표시되면 자격 AWS 증명을 입력합니다.

1. **인스턴스 생성**을 선택합니다.

1. **플랫폼 선택**에서 **Linux/Unix**를 선택합니다.

1. **블루프린트 선택**에서 **Node.js**를 선택합니다.

1. **인스턴스 식별**에서 개발 환경에 친숙한 이름을 지정합니다.

1. **인스턴스 생성**을 선택합니다.

1. Lightsail이 인스턴스를 생성한 후 인스턴스를 선택하고 **연결** 탭에서 **SSH를 사용하여 연결**을 선택합니다.

1. SSH 세션이 브라우저 창에서 열립니다. `node -v` 및 `npm -v`를 실행하여 인스턴스가 Node.js 및 최소 npm 버전 10.2.3으로 프로비저닝되었는지 확인합니다.

1. [React 애플리케이션 구성](#getting-started-test-application-react)을 진행합니다.

## Flutter를 사용하여 예시 Android 앱 설정
<a name="getting-started-test-application-flutter"></a>

이 자습서에서는 Android Studio에서 디바이스를 에뮬레이션하고 사용자 가입, 확인 및 로그인을 테스트할 수 있는 모바일 애플리케이션을 생성합니다. 이 예시 애플리케이션은 Flutter에서 Android용 기본 Amazon Cognito 사용자 풀 모바일 클라이언트를 생성합니다. Flutter를 사용한 모바일 앱 개발 경험이 있는 경우 [GitHub에서 예시 앱을 다운로드](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/usecases/cognito_flutter_mobile_app)하세요.

다음 스크린샷은 가상 Android 디바이스에서 실행되는 앱을 보여줍니다.

![\[가상화된 Android 예시 앱의 가입 페이지 스크린샷입니다.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/cognito-getting-started-android-app-running.png)


이 애플리케이션을 설정하려면 사용자 풀이 다음 요구 사항을 충족해야 합니다.
+ 사용자가 이메일 주소로 로그인할 수 있습니다. **Cognito 사용자 풀 로그인 옵션**: **이메일**.
+ 사용자 이름은 대/소문자를 구분하지 않습니다. **사용자 이름 요구 사항**: **사용자 이름 대소문자 구분**을 선택하지 않아야 합니다.
+ 다중 인증(MFA)은 필요하지 않습니다. **MFA 적용**: **선택적 MFA**.
+ 사용자 풀은 이메일 메시지를 사용하여 사용자 프로필 확인을 위한 속성을 확인합니다. **확인할 속성:** **이메일 메시지 전송, 이메일 주소 확인**.
+ 이메일은 유일한 필수 속성입니다. **필수 속성:** **이메일**.
+ 사용자는 사용자 풀에 직접 가입할 수 있습니다. **자체 등록**: **자체 등록 활성화**가 선택되었습니다.
+ 초기 앱 클라이언트는 사용자 이름과 암호로 로그인할 수 있는 퍼블릭 클라이언트입니다. **앱 유형:** **퍼블릭 클라이언트**, **인증 흐름**: `ALLOW_USER_PASSWORD_AUTH`.

### 애플리케이션 만들기
<a name="getting-started-test-application-flutter-create-app"></a>

**예시 Android 앱을 만드는 방법**

1. [Android Studio](https://developer.android.com/studio) 및 [명령줄 도구](https://developer.android.com/tools)를 설치합니다.

1. Android Studio에서 [Flutter 플러그인](https://docs.flutter.dev/get-started/editor?tab=androidstudio)을 설치합니다.

1. [이 예제 앱](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/usecases/cognito_flutter_mobile_app)의 `cognito_flutter_mobile_app` 디렉터리 콘텐츠에서 새 Android Studio 프로젝트를 생성합니다.

   1. `assets/config.json`을 편집하고 `<<YOUR USER POOL ID>>` 및 `<< YOUR CLIENT ID>>`를 사용자 풀 및 앱 클라이언트의 ID로 바꿉니다.

1. [Flutter](https://docs.flutter.dev/get-started/install)를 설치합니다.

   1. PATH 변수에 Flutter를 추가합니다.

   1. 다음 명령을 사용하여 라이선스를 수락합니다.

      `flutter doctor --android-licenses`

   1. Flutter 환경을 확인하고 누락된 구성 요소를 설치합니다.

      `flutter doctor`

      1. 누락된 구성 요소가 있는 경우 `flutter doctor -v`를 실행하여 문제를 해결하는 방법을 알아봅니다.

   1. 새 Flutter 프로젝트의 디렉터리로 변경하고 종속성을 설치합니다.

      1. `flutter pub add amazon_cognito_identity_dart_2`를 실행합니다.

   1. `flutter pub add flutter_secure_storage`를 실행합니다.

1. 가상 Android 디바이스를 생성합니다.

   1. Android Studio GUI에서 [디바이스 관리자](https://developer.android.com/studio/run/managing-avds)로 새 디바이스를 생성합니다.

   1. CLI에서 `flutter emulators --create --name android-device`를 실행합니다.

1. 가상 Android 디바이스를 시작합니다.

   1. Android Studio GUI에서 가상 디바이스 옆의 시작 ![\[Play button icon with a blue triangle pointing to the right.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/cognito-getting-started-android-virtual-device-start.png) 아이콘을 선택합니다.

   1. CLI에서 `flutter emulators --launch android-device`를 실행합니다.

1. 가상 디바이스에서 앱을 시작합니다.

   1. Android Studio GUI에서 배포 ![\[Green play button icon representing a start or play action.\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/cognito-getting-started-android-app-start.png) 아이콘을 선택합니다.

   1. CLI에서 `flutter run`를 실행합니다.

1. Android Studio에서 실행 중인 가상 디바이스로 이동합니다.

1. 유효한 이메일 주소로 새 사용자를 등록합니다.

1. 이메일 메시지에서 확인 코드를 검색합니다. 애플리케이션에 확인 코드를 입력합니다.

1. 사용자 이름과 암호로 로그인합니다.

# 사용자 풀에 더 많은 기능 및 보안 옵션 추가
<a name="user-pool-next-steps"></a>

자습서를 따라 예시 애플리케이션을 완료한 후 사용자 풀 구현 범위를 넓힐 수 있습니다. 또는 테스트 애플리케이션을 생성하지 않은 경우 기본 설정에 따라 새 사용자 풀을 생성합니다. 다른 애플리케이션의 사용자 풀 기능을 사용자 지정하거나 [외부 ID 제공업체를 추가](tutorial-create-user-pool-social-idp.md)할 수 있습니다. Amazon Cognito 사용자 풀을 프로덕션 애플리케이션에 배치하기 위한 전환을 계획할 때 [추가 예시 및 자습서](cognito-guided-setup.md)를 평가할 수 있습니다.

다음 우선순위가 사용자 풀에서 애플리케이션 보안 옵션을 검사하고 적용하는 경우 [Amazon Cognito 사용자 풀을 위한 보안 모범 사례](user-pool-security-best-practices.md) 섹션을 참조하세요.

Amazon Cognito에는 상위 계층에 옵트인할 때 기능 및 보안 옵션을 추가하는 기능 플랜이 있습니다. *Lite* 플랜으로 시작하고, *Essentials* 플랜을 사용하여 고급 인증 및 권한 부여 옵션을 추가하고, *Plus* 플랜을 사용하여 자동화된 이유 보안 가드레일을 추가할 수 있습니다. 자세한 내용은 [사용자 풀 기능 플랜](cognito-sign-in-feature-plans.md) 단원을 참조하십시오.

다음은 몇 가지 추가 Amazon Cognito 사용자 풀 기능입니다.
+ [관리형 로그인 페이지에 브랜딩 적용](managed-login-branding.md)
+ [사용자 풀에 MFA 추가](user-pool-settings-mfa.md)
+ [위협 방지 기능이 있는 고급 보안](cognito-user-pool-settings-threat-protection.md)
+ [Lambda 트리거를 사용하여 사용자 풀 워크플로 사용자 정의](cognito-user-pools-working-with-lambda-triggers.md)
+ [사용자 풀 분석에 Amazon Pinpoint 사용](cognito-user-pools-pinpoint-integration.md)

Amazon Cognito 인증 및 권한 부여 모델에 대한 개요는 [Amazon Cognito에서 인증이 작동하는 방식](cognito-how-to-authenticate.md) 섹션을 참조하세요.

사용자 풀 인증에 성공한 AWS 서비스 후 다른에 액세스하려면 섹션을 참조하세요[로그인 후 자격 증명 풀을 AWS 서비스 사용하여 액세스](amazon-cognito-integrating-user-pools-with-identity-pools.md).

 AWS Management Console 및 사용자 풀 SDKs를 사용하는 것 외에도를 사용하여 사용자 풀을 관리할 수도 있습니다[AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/index.html).

**Topics**
+ [사용자 풀에 소셜 로그인 추가](tutorial-create-user-pool-social-idp.md)
+ [SAML 2.0 ID 제공업체 추가](tutorial-create-user-pool-saml-idp.md)

# 사용자 풀에 소셜 로그인 추가
<a name="tutorial-create-user-pool-social-idp"></a>

사용자에게 기존 퍼블릭 또는 소셜을 통해 애플리케이션에 로그인할 수 있는 기능을 제공하면 ID 제공업체가 인증 환경을 개선할 수 있습니다. Amazon Cognito 사용자 풀은 Facebook, Google, Amazon 및 Apple과 같은 인기 있는 소셜 ID 제공업체(IdPs)와 통합되어 사용자에게 이미 익숙하고 편리한 로그인 옵션을 제공합니다.

소셜 로그인을 설정할 때 사용자에게 애플리케이션 전용 계정을 생성하는 대안을 제공합니다. 이렇게 하면 전환율이 향상되고 가입 프로세스가 더 원활하게 진행될 수 있습니다. 사용자의 관점에서 보면 다른 사용자 이름과 암호를 기억하지 않고도 기존 소셜 자격 증명을 적용하여 빠르게 인증할 수 있습니다.

사용자 풀에서 소셜 IdP를 구성하려면 몇 가지 주요 단계가 필요합니다. 클라이언트 ID와 보안 암호를 얻으려면 소셜 공급자에 애플리케이션을 등록해야 합니다. 그런 다음 소셜 IdP 구성을 사용자 풀에 추가하여 요청하려는 범위와 IdP 속성에서 매핑하려는 사용자 풀 속성을 지정할 수 있습니다. 런타임 시 Amazon Cognito는 공급자와의 토큰 교환을 처리하고, 사용자 속성을 매핑하고, 공유 사용자 풀 형식으로 애플리케이션에 토큰을 발급합니다.

## 소셜 IdP에 등록
<a name="cognito-user-pools-social-step-1"></a>

Amazon Cognito에서 소셜 IdP를 생성하려면 소셜 IdP에 애플리케이션을 등록하여 클라이언트 ID와 클라이언트 보안 암호를 받아야 합니다.

### Facebook으로 앱을 등록하려면
<a name="register-an-app-with-facebook"></a>

1. Facebook에서 [개발자 계정을 생성합니다](https://developers.facebook.com/docs/facebook-login).

1. Facebook 자격 증명으로 [로그인합니다](https://developers.facebook.com/).

1. **내 앱(My Apps)** 메뉴에서 **Create New App(새 앱 생성)**을 선택합니다.

   기존 Facebook 앱이 없는 경우 다른 옵션이 표시됩니다. **앱 생성**을 선택합니다.

1. **앱 생성** 페이지에서 앱의 사용 사례를 선택한 후 **다음**을 선택합니다.

1. Facebook 앱의 이름을 입력하고 **앱 생성**을 선택합니다.

1. 왼쪽 탐색 모음에서 **앱 설정**을 선택한 다음 **기본 사항**을 선택합니다.

1. **앱 ID(App ID)**와 **앱 보안 암호(App Secret)**를 메모합니다. 다음 섹션에서 이 둘을 사용합니다.

1. 페이지 하단에서 **\$1 플랫폼 추가**를 선택합니다.

1. **플랫폼 선택** 화면에서 플랫폼을 선택하고 **다음**을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

1. [**앱 도메인(App Domains)**]에서 사용자 풀 도메인을 입력합니다.

   ```
   https://your_user_pool_domain
   ```

1. **변경 사항 저장**을 선택합니다.

1. 탐색 모음에서 **제품**을 선택한 다음 **Facebook 로그인**에서 **구성**을 선택합니다.

1. **Facebook 로그인** **구성** 메뉴에서 **설정**을 선택합니다.

   **유효한 OAuth 리디렉션 URI(Valid OAuth Redirect URIs)**에 리디렉션 URL을 입력합니다. 리디렉션 URL은 `/oauth2/idpresponse` 엔드포인트가 있는 사용자 풀 도메인으로 구성됩니다.

   ```
   https://your_user_pool_domain/oauth2/idpresponse
   ```

1. **변경 사항 저장**을 선택합니다.

### Amazon으로 앱을 등록하려면
<a name="register-an-app-with-amazon"></a>

1. Amazon에서 [개발자 계정을 생성합니다](https://developer.amazon.com/login-with-amazon).

1. Amazon 자격 증명으로 [로그인합니다](https://developer.amazon.com/lwa/sp/overview.html).

1. Amazon 보안 프로파일을 생성하여 Amazon 클라이언트 ID와 클라이언트 보안 암호를 받아야 합니다.

   페이지 상단의 탐색 모음에서 **Apps and Services(앱 및 서비스)**를 선택한 다음 **Login with Amazon**을 선택합니다.

1. **보안 프로필 생성(Create a Security Profile)**을 선택합니다.

1. **보안 프로파일 이름(Security Profile Name)**, **보안 프로파일 설명(Security Profile Description)**, **개인 정보 보호 정책 동의 URL(Consent Privacy Notice URL)**을 입력합니다.

1. **저장(Save)**을 선택합니다.

1. **클라이언트 ID(Client ID)** 및 **클라이언트 보안 암호(Client Secret)**를 선택하여 클라이언트 ID 및 보안 암호를 표시합니다. 다음 섹션에서 이 둘을 사용합니다.

1. 톱니 모양 아이콘을 마우스로 가리키고 [**웹 설정(Web Settings)**]을 선택한 다음, [**편집(Edit)**]을 선택합니다.

1. [**허용된 원본(Allowed Origins)**]에 사용자 풀 도메인을 입력합니다.

   ```
   https://<your-user-pool-domain>
   ```

1. [**허용된 반환 URL(Allowed Return URLs)**]에 `/oauth2/idpresponse` 엔드포인트가 있는 사용자 풀 도메인을 입력합니다.

   ```
   https://<your-user-pool-domain>/oauth2/idpresponse
   ```

1. **저장(Save)**을 선택합니다.

### Google로 앱을 등록하려면
<a name="register-an-app-with-google"></a>

Google Cloud Platform의 OAuth 2.0에 대한 자세한 내용은 개발자용 Google Workspace 설명서의 [인증 및 권한 부여 알아보기](https://developers.google.com/workspace/guides/auth-overview)를 참조하세요.

1. Google에서 [개발자 계정을 생성합니다](https://developers.google.com/identity).

1. [Google Cloud Platform 콘솔](https://console.cloud.google.com/home/dashboard)에 로그인합니다.

1. 상단 탐색 모음에서 **프로젝트 선택(Select a project)**을 선택합니다. Google 플랫폼에 프로젝트가 이미 있는 경우 이 메뉴에는 대신 기본 프로젝트가 표시됩니다.

1. **새 프로젝트(NEW PROJECT)**를 선택합니다.

1. 프로젝트의 이름을 입력한 다음 **생성(CREATE)**을 선택합니다.

1. 왼쪽 탐색 모음에서 **API 및 서비스**와 **Oauth 동의 화면**을 차례로 선택합니다.

1. 앱 정보, **앱 도메인**, **권한이 부여된 도메인** 및 **개발자 연락처 정보**를 입력합니다. **권한이 부여된 도메인**은 `amazoncognito.com` 및 사용자 지정 도메인의 루트를 포함해야 합니다. 예를 들어 `example.com`입니다. **저장 후 계속(SAVE AND CONTINUE)**을 선택합니다.

1. 1. **범위(Scopes)**에서 **범위 추가 또는 제거(Add or remove scopes)**를 선택한 다음 최소한 다음 OAuth 범위를 선택합니다.

   1. `.../auth/userinfo.email`

   1. `.../auth/userinfo.profile`

   1. openid

1. **사용자 테스트(Test users)**에서 **사용자 추가(Add users)**를 선택합니다. 이메일 주소와 기타 인증된 테스트 사용자를 입력한 다음 **저장 후 계속**을 선택합니다.

1. 왼쪽 탐색 모음을 다시 확장하고 **API 및 서비스**와 **자격 증명**을 차례로 선택합니다.

1. **자격 증명 생성**과 **OAuth 클라이언트 ID**를 차례로 선택합니다.

1. **애플리케이션 유형(Application type)**을 선택하고 클라이언트 **이름**을 지정합니다.

1. **권한 있는 JavaScript 원본(Authorized JavaScript origins)**에서 **URI 추가(ADD URI)**를 선택합니다. 사용자 풀 도메인을 입력합니다.

   ```
   https://<your-user-pool-domain>
   ```

1. **권한 있는 리디렉션 URI(Authorized redirect URIs)**에서 **URI 추가(ADD URI)**를 선택합니다. 사용자 풀 도메인의 `/oauth2/idpresponse` 엔드포인트에 대한 경로를 입력합니다.

   ```
   https://<your-user-pool-domain>/oauth2/idpresponse
   ```

1. **생성(CREATE)**을 선택합니다.

1. **내 클라이언트 ID**와 **내 클라이언트 보안 암호**에서 Google이 표시하는 값을 안전하게 저장합니다. Google IdP를 추가할 때 이러한 값을 Amazon Cognito에 입력합니다.

### Apple으로 앱을 등록하려면
<a name="register-an-app-with-apple"></a>

Apple로 로그인 설정에 대한 자세한 내용은 Apple 개발자 설명서의 [Apple로 로그인용 환경 구성](https://developer.apple.com/documentation/signinwithapple/configuring-your-environment-for-sign-in-with-apple)을 참조하세요.

1. [Apple에서 개발자 계정](https://developer.apple.com/programs/enroll/)을 생성합니다.

1. Apple 자격 증명으로 [로그인](https://developer.apple.com/account/#/welcome)합니다.

1. 왼쪽 탐색 모음에서 **인증서, 식별자 및 프로필(Certificates, Identifiers & Profiles)**을 선택합니다.

1. 왼쪽 탐색 모음에서 **식별자(Identifiers)**를 선택합니다.

1. **식별자(Identifiers)** 페이지에서 **\$1** 아이콘을 선택합니다.

1. **새 식별자 등록(Register a New Identifier)** 페이지에서 **앱 ID(App IDs)**를 선택한 다음 **계속(Continue)**을 선택합니다.

1. **유형 선택** 페이지에서 **앱**을 선택하고 **계속**을 선택합니다.

1. **앱 ID 등록(Register an App ID)** 페이지에서 다음을 수행합니다.

   1. **설명(Description)**에 설명을 입력합니다.

   1. **앱 ID 접두사(App ID Prefix)**에서 **번들 ID(Bundle ID)**를 입력합니다. [**앱 ID 접두사(App ID Prefix)**] 아래의 값을 적어 둡니다. [소셜 IdP로 사용자 풀 구성](cognito-user-pools-social-idp.md#cognito-user-pools-social-idp-step-2)에서 자격 증명 공급자로 Apple을 선택한 후 이 값을 사용합니다.

   1. **기능(Capabilities)**에서 **Apple로 로그인(Sign In with Apple)**을 선택한 다음 **편집(Edit)**을 선택합니다.

   1. **Apple로 로그인: 앱 ID 구성(Sign in with Apple: App ID Configuration)** 페이지에서 앱을 기본 앱으로 설정하거나 다른 앱 ID와 함께 그룹화하도록 선택한 다음, **저장(Save)**을 선택합니다.

   1. **계속**을 선택합니다.

1. **앱 ID 확인(Confirm your App ID)** 페이지에서 **등록(Register)**을 선택합니다.

1. **식별자(Identifiers)** 페이지에서 **\$1** 아이콘을 선택합니다.

1. **새 식별자 등록(Register a New Identifier)** 페이지에서 **서비스 ID(Services IDs)**를 선택한 다음 **계속(Continue)**을 선택합니다.

1. **서비스 ID 등록(Register a Services ID)** 페이지에서 다음을 수행합니다.

   1. **설명(Description)**에 설명을 입력합니다.

   1. **식별자(Identifier)** 아래에 식별자를 입력합니다. [소셜 IdP로 사용자 풀 구성](cognito-user-pools-social-idp.md#cognito-user-pools-social-idp-step-2)에서 ID 제공업체로 Apple을 선택한 후 이 값이 필요하므로 이 서비스 ID를 기록해 두세요.

   1. **계속**, **등록**을 차례로 선택합니다.

1. 식별자 페이지에서 방금 생성한 서비스 ID를 선택합니다.

   1. **Apple로 로그인(Sign In with Apple)**을 선택한 다음 **구성(Configure)**을 선택합니다.

   1. **웹 인증 구성(Web Authentication Configuration)** 페이지에서 앞서 생성한 앱 ID를 **기본 앱 ID(Primary App ID)**로 선택합니다.

   1. **웹 사이트 URL(Website URLs)**에서 **\$1** 아이콘을 선택합니다.

   1. **도메인 및 하위 도메인(Domains and subdomains)**에서 `https://` 접두사를 사용하지 않고 사용자 풀 도메인을 입력합니다.

      ```
      <your-user-pool-domain>
      ```

   1. **반환 URL(Return URLs)**에 사용자 풀 도메인의 `/oauth2/idpresponse` 엔드포인트에 대한 경로를 입력합니다.

      ```
      https://<your-user-pool-domain>/oauth2/idpresponse
      ```

   1. **다음**을 선택한 다음 **완료**를 선택합니다. 도메인을 확인할 필요는 없습니다.

   1. **계속(Continue)**과 **저장(Save)**을 차례로 선택합니다.

1. 왼쪽 탐색 모음에서 **키(Keys)**를 선택합니다.

1. **키(Keys)** 페이지에 **\$1** 아이콘을 선택합니다.

1. **새 키 등록(Register a New Key)** 페이지에서 다음을 수행합니다.

   1. [**키 이름(Key Name)**] 아래에 키 이름을 입력합니다.

   1. **Apple로 로그인(Sign In with Apple)**을 선택한 다음 **구성(Configure)**을 선택합니다.

   1. **키 구성** 페이지에서 앞서 생성한 앱 ID를 **기본 앱 ID**로 선택합니다. **저장**을 선택합니다.

   1. **계속(Continue)**, **등록(Register)**을 차례로 선택합니다.

1. **키 다운로드** 페이지에서 **다운로드**를 선택하여 프라이빗 키를 다운로드하고 표시된 **키 ID**를 적어 둔 다음 **완료**를 선택합니다. 이 프라이빗 키와 이 페이지에 표시되는 **키 ID(Key ID)** 값은 [소셜 IdP로 사용자 풀 구성](cognito-user-pools-social-idp.md#cognito-user-pools-social-idp-step-2)에서 자격 증명 공급자로 Apple을 선택한 후에 필요합니다.

## 사용자 풀에 소셜 IdP 추가
<a name="cognito-user-pools-social-step-2"></a>

이 섹션에서는 이전 섹션의 클라이언트 ID와 클라이언트 보안 암호를 사용하여 사용자 풀에 소셜 IdP를 구성합니다.

**를 사용하여 사용자 풀 소셜 자격 증명 공급자를 구성하려면 AWS Management Console**

1. [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/home)로 이동합니다. 자격 AWS 증명을 입력하라는 메시지가 표시될 수 있습니다.

1. [**사용자 풀(User Pools)**]을 선택합니다.

1. 목록에서 기존 사용자 풀을 선택하거나 [사용자 풀을 생성합니다](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. **소셜 및 외부 제공업체** 메뉴를 선택합니다. [**페더레이션 로그인(Federated sign-in)**]을 찾아서 [**자격 증명 공급자 추가(Add an identity provider)**]를 선택합니다.

1. **Facebook**, **Google**, **Login with Amazon** 또는 **Sign in with Apple**과 같은 소셜 자격 증명 공급자를 선택합니다.

1. 선택한 소셜 ID 공급자에 따라 다음 단계 중에서 선택합니다.
   + **Google** 및 **Login with Amazon** - 이전 섹션에서 생성된 **앱 클라이언트 ID**와 **앱 클라이언트 보안 암호**를 입력합니다.
   + **Facebook** - 이전 섹션에서 생성된 **앱 클라이언트 ID**와 **앱 클라이언트 보안 암호**를 입력하고 API 버전(예: 버전 2.12)을 선택합니다. 각 Facebook API에는 수명 주기와 사용 중단 날짜가 있으므로 가능한 한 최신 버전을 선택하는 것이 좋습니다. Facebook 범위와 속성은 API 버전마다 다를 수 있습니다. Facebook에서 소셜 ID 로그인을 테스트하여 페더레이션이 의도한 대로 작동하는지 확인하는 것이 좋습니다.
   + **Sign in with Apple** - 이전 섹션에서 생성된 **서비스 ID**, **팀 ID**, **키 ID**, **프라이빗 키**를 입력합니다.

1. 사용할 **권한 있는 범위**의 이름을 입력합니다. 범위는 앱에서 액세스하고자 하는 사용자 속성(예: `name` 및 `email`)을 정의합니다. Facebook의 경우 쉼표로 구분해야 합니다. Google 및 Login with Amazon의 경우 공백으로 구분해야 합니다. Apple로 로그인의 경우, 액세스하려는 범위의 확인란을 선택합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/tutorial-create-user-pool-social-idp.html)

   앱에 이러한 속성을 제공하는 데 동의하라는 메시지가 앱 사용자에게 표시됩니다. 소셜 공급자 범위에 대한 자세한 내용은 Google, Facebook, Login with Amazon 또는 Sign in with Apple의 설명서를 참조하세요.

   Sign in with Apple의 경우 다음은 범위가 반환되지 않을 수 있는 사용자 시나리오입니다.
   + 최종 사용자가 Apple의 로그인 페이지를 떠난 후 오류가 발생합니다(Amazon Cognito 내의 내부 오류 또는 개발자가 작성한 오류일 수 있음).
   + 서비스 ID 식별자는 사용자 풀 및/또는 기타 인증 서비스에서 사용됩니다.
   + 사용자가 로그인한 후 개발자가 추가 범위를 추가합니다. 사용자는 인증할 때와 토큰을 새로 고칠 때만 새 정보를 검색합니다.
   + 개발자가 사용자를 삭제한 후 해당 사용자가 Apple ID 프로필에서 앱을 제거하지 않고 다시 로그인합니다.

1. 자격 증명 공급자의 속성을 사용자 풀에 매핑합니다. 자세한 내용은 [매핑에 대해 알아야 할 사항](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping-requirements) 단원을 참조하십시오.

1. **생성(Create)**을 선택합니다.

1. **앱 클라이언트** 메뉴에서 목록에 있는 앱 클라이언트 중 하나를 선택하고 **호스팅 UI 설정을 편집**합니다. [**자격 증명 공급자(Identity providers)**]에서 앱 클라이언트에 새 소셜 자격 증명 공급자를 추가합니다.

1. **변경 사항 저장**을 선택합니다.

## 소셜 IdP 구성 테스트
<a name="cognito-user-pools-social-step-3"></a>

이전 두 섹션의 요소를 사용하여 로그인 URL을 생성할 수 있습니다. 이것을 사용하여 소셜 IdP 구성을 테스트합니다.

```
https://mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
```

사용자 풀 **도메인 이름(Domain name)** 콘솔 페이지에서 사용자의 도메인을 찾을 수 있습니다. client\$1id는 **앱 클라이언트 설정(App client settings)** 페이지에 있습니다. **redirect\$1uri** 파라미터용 콜백 URL을 사용합니다. 이것은 인증 성공 이후에 사용자가 리디렉션되는 페이지의 URL입니다.

**참고**  
Amazon Cognito는 5분 이내에 완료되지 않는 인증 요청을 취소하고 사용자를 관리형 로그인으로 리디렉션합니다. 페이지에 `Something went wrong` 오류 메시지가 표시됩니다.

# SAML 2.0 ID 제공업체 추가
<a name="tutorial-create-user-pool-saml-idp"></a>

앱 사용자는 SAML 2.0 ID 제공업체(idP)로 로그인할 수 있습니다. 고객이 조직의 내부 고객이거나 연결된 회사인 경우 소셜 IdP보다 SAML 2.0 IdP를 선택할 수 있습니다. 소셜 IdP가 모든 사용자가 계정에 등록할 수 있도록 허용하는 경우 SAML IdP는 조직에서 제어하는 사용자 디렉터리와 페어링할 가능성이 더 높습니다. 사용자가 직접 또는 타사를 통해 로그인하는지 여부와 무관하게 모든 사용자는 사용자 풀에 프로필을 보유합니다. SAML 자격 증명 공급자를 통한 로그인 추가를 원치 않는 경우 이 단계를 건너뛰세요.

자세한 내용은 [사용자 풀에서 SAML ID 제공업체 사용](cognito-user-pools-saml-idp.md) 단원을 참조하십시오.

SAML ID 제공업체를 업데이트하고 사용자 풀을 구성해야 합니다. SAML 2.0 ID 제공업체의 신뢰 당사자 또는 애플리케이션으로 사용자 풀을 추가하는 방법에 대한 자세한 내용은 SAML ID 제공업체 설명서를 참조하십시오.

또한 SAML ID 제공업체에 어설션 소비자 서비스(ACS) 엔드포인트를 제공해야 합니다. SAML ID 제공업체의 SAML 2.0 POST 바인딩에 대해 사용자 풀 도메인에서 다음 엔드포인트 구성합니다. 사용자 풀 도메인에 대한 자세한 정보는 [사용자 풀 도메인 구성](cognito-user-pools-assign-domain.md) 섹션을 참조하세요.

```
https://Your user pool domain/saml2/idpresponse
With an Amazon Cognito domain:
https://<yourDomainPrefix>.auth.<region>.amazoncognito.com/saml2/idpresponse
With a custom domain:
https://Your custom domain/saml2/idpresponse
```

[Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/home)의 **도메인** 메뉴에서 사용자 풀의 도메인 접두사와 지역 값을 찾을 수 있습니다.

일부 SAML ID 제공업체의 경우 대상 URI 또는 SP 엔터티 ID라고도 하는 SP(서비스 제공업체) `urn`을 다음 형식으로 제공해야 합니다.

```
urn:amazon:cognito:sp:<yourUserPoolID>
```

[Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/home)의 사용자 풀 **개요** 대시보드에서 사용자 풀 ID를 찾을 수 있습니다.

사용자 풀에 필요한 속성에 대한 속성 값을 제공하려면 SAML 자격 증명 공급자도 구성해야 합니다. 일반적으로 `email`은 사용자 풀에 대해 필요한 속성입니다. 이러한 경우 SAML 자격 증명 공급자는 SAML 어설션에 `email` 값(클레임)을 제공해야 합니다.

Amazon Cognito 사용자 풀은 사후 바인딩 엔드포인트와의 SAML 2.0 페더레이션을 지원합니다. 이렇게 하면 사용자 풀이 사용자 에이전트를 통해 ID 제공업체로부터 직접 SAML 응답을 받으므로 앱에서 SAML 어설션 응답을 검색하거나 구문 분석할 필요가 없습니다.

**사용자 풀에 SAML 2.0 자격 증명 공급자를 구성하려면**

1. [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/home)로 이동합니다. 메시지가 표시되면 자격 AWS 증명을 입력합니다.

1. [**사용자 풀(User Pools)**]을 선택합니다.

1. 목록에서 기존 사용자 풀을 선택하거나 [사용자 풀을 생성합니다](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. **소셜 및 외부 제공업체** 메뉴를 선택합니다. [**페더레이션 로그인(Federated sign-in)**]을 찾아서 [**자격 증명 공급자 추가(Add an identity provider)**]를 선택합니다.

1. [**SAML**] 소셜 자격 증명 공급자를 선택합니다.

1. [**식별자(Identifiers)**]를 쉼표로 구분하여 입력합니다. 식별자는 사용자가 로그인할 때 입력하는 이메일 주소를 확인해야 한다고 Amazon Cognito에 지시합니다. 그런 다음 도메인에 해당하는 공급자로 안내합니다.

1. 사용자가 로그아웃할 때 Amazon Cognito에서 서명된 로그아웃 요청을 공급자에게 보내도록 하려는 경우 **로그아웃 흐름 추가(Add sign-out flow)**를 선택합니다. 관리형 로그인을 구성할 때 생성되는 `https://<your Amazon Cognito domain>/saml2/logout` 엔드포인트에 로그아웃 응답을 보내도록 SAML 2.0 자격 증명 공급자를 구성해야 합니다. `saml2/logout` 엔드포인트는 POST 바인딩을 사용합니다.
**참고**  
이 옵션을 선택했고 SAML ID 제공업체가 서명된 로그아웃 요청을 필요로 하는 경우 SAML IdP를 사용하여 Amazon Cognito에서 제공한 서명 인증서도 구성해야 합니다.  
SAML IdP가 서명된 로그아웃 요청을 처리하고 사용자를 Amazon Cognito 세션에서 로그아웃합니다.

1. **메타데이터 문서 소스(Metadata document source)**를 선택합니다. 자격 증명 공급자가 퍼블릭 URL에서 SAML 메타데이터를 제공하는 경우 **메타데이터 문서 URL(Metadata document URL)**을 선택하고 해당 퍼블릭 URL을 입력할 수 있습니다. 그렇지 않은 경우 **메타데이터 문서 업로드(Upload metadata document)**를 선택한 다음, 이전에 공급자로부터 다운로드한 메타데이터 파일을 선택합니다.
**참고**  
제공업체에 퍼블릭 엔드포인트가 있는 경우 파일을 업로드하는 대신 메타데이터 문서 URL을 입력하는 것이 좋습니다. 이렇게 하면 Amazon Cognito가 메타데이터를 자동으로 새로 고칠 수 있습니다. 일반적으로 메타데이터 새로 고침은 6시간마다 또는 메타데이터가 만료되기 전 중 더 빠른 시간에 발생합니다.

1. [**SAML 공급자와 앱 간에 속성 매핑(Map attributes between your SAML provider and your app)**]을 선택하여 SAML 공급자 속성을 사용자 풀의 사용자 프로파일에 매핑합니다. 속성 맵에 사용자 풀 필수 속성을 포함합니다.

   예를 들어 [**사용자 풀 속성(User pool attribute)**] `email`을 선택한 경우 자격 증명 공급자의 SAML 어설션에 표시된 대로 SAML 속성 이름을 입력합니다. 자격 증명 공급자가 참조용으로 샘플 SAML 어설션을 제공할 수도 있습니다. `email`과 같은 간단한 이름을 사용하는 자격 증명 공급자도 있고, 다음 예제와 같이 URL 포맷의 속성 이름을 사용하는 자격 증명 공급자도 있습니다.

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

1. **생성(Create)**을 선택합니다.