사용자 풀에 소셜 자격 증명 공급자 추가 - Amazon Cognito

사용자 풀에 소셜 자격 증명 공급자 추가

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

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


                소셜 로그인의 인증 개요
참고

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

사전 조건

시작하려면 다음이 필요합니다.

  • 앱 클라이언트와 사용자 풀 도메인이 있는 사용자 풀. 자세한 내용은 사용자 풀 생성을 참조하세요.

  • 소셜 IdP입니다.

1단계: 소셜 IdP에 등록

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

  1. Facebook에서 개발자 계정을 생성합니다.

  2. Facebook 자격 증명으로 로그인합니다.

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

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

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

  6. 앱 ID(App ID)앱 보안(App Secret)을 메모합니다. 다음 섹션에서 이 둘을 사용합니다.

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

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

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

    https://<your_user_pool_domain>/login?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com
  10. [Save changes]를 선택합니다.

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

    https://<your-user-pool-domain>
  12. [Save changes]를 선택합니다.

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

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

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

    https://<your-user-pool-domain>/oauth2/idpresponse
  15. [Save changes]를 선택합니다.

  1. Amazon에서 개발자 계정을 생성합니다.

  2. Amazon 자격 증명으로 로그인합니다.

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

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

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

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

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

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

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

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

    https://<your-user-pool-domain>
  10. [허용된 반환 URL(Allowed Return URLs)]에 /oauth2/idpresponse 엔드포인트가 있는 사용자 풀 도메인을 입력합니다.

    https://<your-user-pool-domain>/oauth2/idpresponse
  11. 저장(Save)을 선택합니다.

Google Cloud Platform의 OAuth 2.0에 대한 자세한 내용은 개발자용 Google Workspace 설명서의 인증 및 권한 부여 알아보기를 참조하세요.

  1. Google에서 개발자 계정을 생성합니다.

  2. Google Cloud Platform 콘솔에 로그인합니다.

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

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

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

  6. 왼쪽 탐색 모음에서 API 및 서비스(APIs and Services)Oauth 동의 화면(Oauth consent screen)을 차례로 선택합니다.

  7. 앱 정보(App information), 앱 도메인(App domain), 공인 도메인(Authorized domains)개발자 연락처 정보(Developer contact information)를 입력합니다. 공인 도메인(Authorized domains)amazoncognito.com 및 사용자 지정 도메인의 루트를 포함해야 합니다(예: example.com). 저장 후 계속(SAVE AND CONTINUE)을 선택합니다.

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

    1. .../auth/userinfo.email

    2. .../auth/userinfo.profile

    3. openid

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

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

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

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

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

    https://<your-user-pool-domain>
  14. 권한 있는 리디렉션 URI(Authorized redirect URIs)에서 URI 추가(ADD URI)를 선택합니다. 사용자 풀 도메인의 /oauth2/idpresponse 엔드포인트에 대한 경로를 입력합니다.

    https://<your-user-pool-domain>/oauth2/idpresponse
  15. 생성(CREATE)을 선택합니다.

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

Apple로 로그인 설정에 대한 자세한 내용은 Apple 개발자 설명서의 Apple로 로그인용 환경 구성을 참조하세요.

  1. Apple에서 개발자 계정을 생성합니다.

  2. Apple 자격 증명으로 로그인합니다.

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

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

  5. 식별자(Identifiers) 페이지에서 + 아이콘을 선택합니다.

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

  7. 유형 선택(Select a type) 페이지에서 앱(App)을 선택하고 계속(Continue)을 선택합니다.

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

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

    2. 앱 ID 접두사(App ID Prefix)에서 번들 ID(Bundle ID)를 입력합니다. [앱 ID 접두사(App ID Prefix)] 아래의 값을 적어 둡니다. 2단계: 사용자 풀에 소셜 IdP 추가에서 자격 증명 공급자로 Apple을 선택한 후 이 값을 사용합니다.

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

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

    5. 계속을 선택합니다.

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

  10. 식별자(Identifiers) 페이지에서 + 아이콘을 선택합니다.

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

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

    1. 설명에 설명을 입력합니다.

    2. Identifier(식별자)에 식별자를 입력합니다. 2단계: 사용자 풀에 소셜 IdP 추가에서 ID 공급자로 Apple을 선택한 후 이 값이 필요하므로 이 서비스 ID를 기록해 두세요.

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

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

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

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

    3. 웹 사이트 URL(Website URLs)에서 + 아이콘을 선택합니다.

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

      <your-user-pool-domain>
    5. 반환 URL(Return URLs)에 사용자 풀 도메인의 /oauth2/idpresponse 엔드포인트에 대한 경로를 입력합니다.

      https://<your-user-pool-domain>/oauth2/idpresponse
    6. 다음(Next)완료(Done)를 차례로 선택합니다. 도메인을 확인할 필요는 없습니다.

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

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

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

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

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

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

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

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

  17. [키 다운로드(Download Your Key)] 페이지에서 [다운로드(Download)]를 선택하여 프라이빗 키를 다운로드하고 표시된 [키 ID(Key ID)]를 적어 둔 다음 [완료(Done)]를 선택합니다. 이 프라이빗 키와 이 페이지에 표시되는 키 ID(Key ID) 값은 2단계: 사용자 풀에 소셜 IdP 추가에서 자격 증명 공급자로 Apple을 선택한 후에 필요합니다.

2단계: 사용자 풀에 소셜 IdP 추가

Original console

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

  1. Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 AWS 자격 증명을 입력합니다.

  2. 사용자 풀 관리(Manage User Pools)를 선택합니다.

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

  4. 왼쪽 탐색 모음에서 자격 증명 공급자(Identity providers)를 선택합니다.

  5. Facebook, Google, Login with Amazon 또는 Apple 소셜 IdP를 선택합니다.

  6. 선택한 소셜 IdP에 따라 다음 단계 중에서 선택합니다.

    • GoogleLogin 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)를 입력합니다.

  7. 권한을 부여할 범위의 이름을 입력합니다. 범위는 앱에서 액세스하고자 하는 사용자 속성(예: nameemail)을 정의합니다. Facebook의 경우 쉼표로 구분해야 합니다. Google 및 Login with Amazon의 경우 공백으로 구분해야 합니다. Apple로 로그인의 경우, 액세스하려는 범위의 확인란을 선택합니다.

    소셜 자격 증명 공급자 예제 범위
    Facebook public_profile, email
    Google profile email openid
    Login with Amazon profile postal_code
    Apple로 로그인 email name

    앱 사용자는 앱에 이러한 속성들을 제공한다는 데 동의하라는 요청 메시지를 받게 됩니다. 범위에 대한 자세한 내용은 Login with Amazon 또는 Google, Facebook, Apple로 로그인의 설명서를 참조하세요.

    Sign in with Apple의 경우 다음은 범위가 반환되지 않을 수 있는 사용자 시나리오입니다.

    • 최종 사용자가 Apple 로그인 페이지를 벗어난 후 오류 발생(Amazon Cognito 내부 오류 또는 개발자가 작성한 항목에서 발생할 수 있음)

    • 서비스 ID 식별자가 여러 사용자 풀과 기타 인증 서비스에서 사용됨

    • 최종 사용자가 이전에 로그인한 후 개발자가 추가 범위를 추가함(새로운 정보가 검색되지 않음)

    • 개발자가 사용자를 삭제한 후 해당 사용자가 Apple ID 프로필에서 앱을 제거하지 않고 다시 로그인함

  8. 구성 중인 소셜 IdP에 대해 사용(Enable)을 선택합니다.

  9. 탐색 모음에서 앱 클라이언트 설정(App client settings)을 선택합니다.

  10. 자신의 소셜 IdP를 사용자 풀 앱의 활성화된 자격 증명 공급자(Enabled Identity Providers) 중 하나로 선택합니다.

  11. 사용자 풀 앱의 콜백 URL(Callback URL(s))에 콜백 URL을 입력합니다. 인증 성공 후 사용자가 리디렉션되는 URL입니다.

    https://www.example.com
  12. [Save changes]를 선택합니다.

  13. 속성 매핑(Attribute mapping) 탭에서 다음과 같이 최소한의 필수 속성(일반적으로 email)에 대한 매핑을 추가합니다.

    1. 확인란을 선택하여 Facebook, Google 또는 Amazon 속성 이름을 선택합니다. Amazon Cognito 콘솔에 기재되어 있지 않은 추가 속성의 이름을 입력할 수도 있습니다.

    2. 드롭다운 목록에서 대상 사용자 풀 속성을 선택합니다.

    3. [Save changes]를 선택합니다.

    4. 요약본으로 이동(Go to summary)을 선택합니다.

New console

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

  1. Amazon Cognito 콘솔로 이동합니다. 메시지가 표시되면 AWS 자격 증명을 입력합니다.

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

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

  4. [로그인 환경(Sign-in experience)] 탭을 선택합니다. 페더레이션 로그인(Federated sign-in)을 찾아서 자격 증명 공급자 추가(Add an identity provider)를 선택합니다.

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

  6. 선택한 소셜 IdP에 따라 다음 단계 중에서 선택합니다.

    • GoogleLogin 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)를 입력합니다.

  7. 사용할 [권한 있는 범위(Authorized scopes)]의 이름을 입력합니다. 범위는 앱에서 액세스하고자 하는 사용자 속성(예: nameemail)을 정의합니다. Facebook의 경우 쉼표로 구분해야 합니다. Google 및 Login with Amazon의 경우 공백으로 구분해야 합니다. Apple로 로그인의 경우, 액세스하려는 범위의 확인란을 선택합니다.

    소셜 자격 증명 공급자 예제 범위
    Facebook public_profile, email
    Google profile email openid
    Login with Amazon profile postal_code
    Apple로 로그인 email name

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

    Sign in with Apple의 경우 다음은 범위가 반환되지 않을 수 있는 사용자 시나리오입니다.

    • 최종 사용자가 Apple 로그인 페이지를 벗어난 후 오류 발생(Amazon Cognito 내부 오류 또는 개발자가 작성한 항목에서 발생할 수 있음)

    • 서비스 ID 식별자가 여러 사용자 풀 및/또는 다른 인증 서비스에서 사용됨

    • 최종 사용자가 이전에 로그인한 후 개발자가 추가 범위를 추가함(새로운 정보가 검색되지 않음)

    • 개발자가 사용자를 삭제한 후 해당 사용자가 Apple ID 프로필에서 앱을 제거하지 않고 다시 로그인함

  8. IdP의 속성을 사용자 풀에 매핑합니다. 자세한 내용은 사용자 풀에 대한 자격 증명 공급자 속성 매핑 지정을 참조하세요.

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

  10. 앱 클라이언트 통합(App client integration) 탭의 목록에서 앱 클라이언트(App clients) 중 하나를 선택한 다음, 호스트된 UI 설정 편집(Edit hosted UI settings)을 선택합니다. 자격 증명 공급자(Identity providers)에서 앱 클라이언트에 새 소셜 IdP를 추가합니다.

  11. [Save changes]를 선택합니다.

3단계: 소셜 IdP 구성 테스트

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

https://<your_user_pool_domain>/login?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com

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

참고

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