

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

# 사용자 풀에 소셜 로그인 추가
<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. [**앱 도메인(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. **새 식별자 등록(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. **새 식별자 등록(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. **도메인 및 하위 도메인(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. **새 키 등록(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\_id는 **앱 클라이언트 설정(App client settings)** 페이지에 있습니다. **redirect\_uri** 파라미터용 콜백 URL을 사용합니다. 이것은 인증 성공 이후에 사용자가 리디렉션되는 페이지의 URL입니다.

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