

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

# 사용자 풀에서 소셜 ID 제공업체 사용
<a name="cognito-user-pools-social-idp"></a>

웹 및 모바일 앱 사용자들이 Facebook, Google, Amazon 및 Apple 같은 소셜 자격 증명 공급자(IdP)를 통해 로그인할 수 있습니다. Amazon Cognito는 기본 제공 호스트된 웹 UI를 사용하여 모든 인증된 사용자에 대한 토큰 처리 및 관리 기능을 제공합니다. 이렇게 하면 백엔드 시스템을 한 세트의 사용자 풀 토큰에서 표준화할 수 있습니다. 지원되는 소셜 ID 제공업체와 통합할 관리형 로그인을 사용하도록 설정해야 합니다. Amazon Cognito는 관리형 로그인을 빌드할 때 Amazon Cognito 및 OID와 소셜 IdP가 정보를 교환하는 데 사용하는 OAuth 2.0 엔드포인트를 생성합니다. 자세한 내용은 [Amazon Cognito 사용자 풀 인증 API 참조](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html)를 참조하세요.

에서 소셜 IdP를 추가 AWS Management Console하거나 AWS CLI 또는 Amazon Cognito API를 사용할 수 있습니다.

**참고**  
서드 파티(페더레이션)를 통한 로그인을 Amazon Cognito 사용자 풀에서 사용할 수 있습니다. 이 기능은 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명)을 통한 페더레이션과 무관합니다.

**Topics**
+ [소셜 IdP 개발자 계정 및 애플리케이션 설정](#cognito-user-pools-social-idp-step-1)
+ [소셜 IdP로 사용자 풀 구성](#cognito-user-pools-social-idp-step-2)
+ [소셜 IdP 구성 테스트](#cognito-user-pools-social-idp-step-3)

## 소셜 IdP 개발자 계정 및 애플리케이션 설정
<a name="cognito-user-pools-social-idp-step-1"></a>

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

------
#### [ Facebook ]

Meta 개발자 계정 구성 및 인증에 대한 최신 정보는 [Meta 앱 개발](https://developers.facebook.com/docs/development)을 참조하세요.

**Facebook/Meta로 애플리케이션을 등록하는 방법**

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

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

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

1. Facebook 앱의 이름을 입력하고 [**앱 ID 생성(Create App ID)**]을 선택합니다.

1. 왼쪽 탐색 모음에서 [**설정(Settings)**], [**기본 사항(Basic)**]을 차례로 선택합니다.

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

1. 페이지 하단에서 **\+ 플랫폼 추가(\+ Add Platform)**을 선택합니다.

1. **웹 사이트(Website)**를 선택합니다.

1. [**웹 사이트(Website)**]의 [**사이트 URL(Site URL)**]에 앱 로그인 페이지의 경로를 입력합니다.

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

1. **변경 사항 저장(Save changes)**을 선택합니다.

1. [**앱 도메인(App Domains)**]에 사용자 풀 도메인 루트의 경로를 입력합니다.

   ```
   https://{{mydomain.auth.us-east-1.amazoncognito.com}}
   ```

1. **변경 사항 저장(Save changes)**을 선택합니다.

1. 탐색 모음에서 [**제품 추가(Add Product)**]을 선택한 다음 [**Facebook 로그인(Facebook Login)**] 제품의 [**설정(Set up)**]을 선택합니다.

1. 탐색 모음에서 **Facebook 로그인(Facebook Login)**과 **설정(Settings)**을 차례로 선택합니다.

   **유효한 OAuth 리디렉션 URI(Valid OAuth Redirect URIs)**에 사용자 풀 도메인 `/oauth2/idpresponse` 엔드포인트의 경로를 입력합니다.

   ```
   https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/idpresponse
   ```

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

------
#### [ Login with Amazon ]

Login with Amazon 개발자 계정 구성 및 인증에 대한 최신 정보는 [Login with Amazon 설명서](https://developer.amazon.com/docs/login-with-amazon/documentation-overview.html)를 참조하세요.

**Login with Amazon으로 애플리케이션을 등록하는 방법**

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://{{mydomain.auth.us-east-1.amazoncognito.com}}
   ```

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

   ```
   https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/idpresponse
   ```

1. **저장**을 선택합니다.

------
#### [ Google ]

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

**Google로 애플리케이션을 등록하는 방법**

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 및 서비스(APIs and Services)**와 **Oauth 동의 화면(Oauth consent screen)**을 차례로 선택합니다.

1. 앱 정보(App information), **앱 도메인(App domain)**, **공인 도메인(Authorized domains)** 및 **개발자 연락처 정보(Developer contact information)**를 입력합니다. **공인 도메인(Authorized domains)**은 `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)**를 선택합니다. 이메일 주소와 기타 인증된 테스트 사용자를 입력한 다음 **저장 후 계속(SAVE AND CONTINUE)**을 선택합니다.

1. 왼쪽 탐색 모음을 다시 확장하고 **API 및 서비스(APIs and Services)**와 **보안 인증 정보(Credentials)**를 차례로 선택합니다.

1. **보안 인증 정보 생성(CREATE CREDENTIALS)**과 **OAuth 클라이언트 ID(OAuth client ID)**를 차례로 선택합니다.

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

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

   ```
   https://{{mydomain.auth.us-east-1.amazoncognito.com}}
   ```

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

   ```
   https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/idpresponse
   ```

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

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

------
#### [ Sign in with Apple ]

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

**Sign in with Apple(SIWA)로 애플리케이션을 등록하는 방법**

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. **유형 선택(Select a type)** 페이지에서 **앱(App)**을 선택하고 **계속(Continue)**을 선택합니다.

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-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. **설명**에 설명을 입력합니다.

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

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

1. 식별자(Identifiers) 페이지에서 방금 생성한 서비스 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://` 접두사를 사용하지 않고 사용자 풀 도메인을 입력합니다.

      ```
      {{mydomain.auth.us-east-1.amazoncognito.com}}
      ```

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

      ```
      https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/idpresponse
      ```

   1. **다음(Next)**과 **완료(Done)**를 차례로 선택합니다. 도메인을 확인할 필요는 없습니다.

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

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

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

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

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

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

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

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

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

------

## 소셜 IdP로 사용자 풀 구성
<a name="cognito-user-pools-social-idp-step-2"></a>

**를 사용하여 사용자 풀 소셜 IdP를 구성하려면 AWS Management Console**

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

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

1. 목록에서 기존 사용자 풀을 선택하거나 사용자 풀을 생성합니다.

1. **소셜 및 외부 제공업체** 메뉴를 선택한 다음 **ID 제공업체 추가**를 선택합니다.

1. **Login with Amazon** 또는 **Facebook**, **Google** **Apple로 로그인(Sign in with Apple)** 소셜 IdP를 선택합니다.

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

1. 사용할 [**권한 있는 범위(Authorized scopes)**]의 이름을 입력합니다. 범위는 앱에서 액세스하고자 하는 사용자 속성(예: `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/cognito-user-pools-social-idp.html)

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

   Sign in with Apple의 경우 다음은 범위가 반환되지 않을 수 있는 사용자 시나리오입니다.
   + 최종 사용자가 Apple 로그인 페이지를 벗어난 후 오류 발생(Amazon Cognito 내부 오류 또는 개발자가 작성한 항목에서 발생할 수 있음)
   + 서비스 ID 식별자가 여러 사용자 풀 및/또는 다른 인증 서비스에서 사용됨
   + 최종 사용자가 이전에 로그인한 후 개발자가 추가 범위를 추가함(새로운 정보가 검색되지 않음)
   + 개발자가 사용자를 삭제한 후 해당 사용자가 Apple ID 프로필에서 앱을 제거하지 않고 다시 로그인함

1. IdP의 속성을 사용자 풀에 매핑합니다. 자세한 내용은 [사용자 풀에 대한 자격 증명 공급자 속성 매핑 지정](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html)을 참조하세요.

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

1. **앱 클라이언트** 메뉴의 목록에서 앱 클라이언트를 선택합니다. 앱 클라이언트에 새 소셜 ID 제공업체를 추가하려면 **로그인 페이지** 탭으로 이동하여 **관리형 로그인 페이지 구성**에서 **편집**을 선택합니다.

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

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

애플리케이션에서 사용자가 소셜 제공업체로 로그인할 수 있도록 사용자의 클라이언트에서 브라우저를 호출해야 합니다. 이전 단원의 설정 절차를 완료한 후 소셜 제공업체로 로그인을 테스트합니다. 다음 예제 URL은 접두사 도메인이 있는 사용자 풀의 로그인 페이지를 로드합니다.

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

이 링크는 **앱 클라이언트** 메뉴로 이동하여 앱 클라이언트를 선택하고 **로그인 페이지** 탭으로 이동한 다음 **로그인 페이지 보기**를 선택할 때 Amazon Cognito에서 안내하는 페이지입니다. 사용자 풀 도메인에 대한 자세한 정보는 [사용자 풀 도메인 구성](cognito-user-pools-assign-domain.md) 섹션을 참조하세요. 클라이언트 IDs 및 콜백 URLs을 포함한 앱 클라이언트에 대한 자세한 내용은 [앱 클라이언트를 사용한 애플리케이션별 설정](user-pool-settings-client-apps.md) 섹션을 참조하세요.

다음 예제 링크는 `identity_provider` 쿼리 파라미터를 사용하여 [권한 부여 엔드포인트](authorization-endpoint.md)에서 소셜 제공업체로 자동 리디렉션을 설정합니다. 이 URL은 관리형 로그인을 통한 대화형 사용자 풀 로그인을 우회하고 IdP 로그인 페이지로 바로 이동합니다.

```
https://{{mydomain.auth.us-east-1.amazoncognito.com}}/oauth2/authorize?identity_provider={{Facebook|Google|LoginWithAmazon|SignInWithApple}}&response_type=code&client_id={{1example23456789}}&redirect_uri={{https://www.example.com}}
```