사용자 풀에서 OIDC 자격 증명 공급자 사용 - Amazon Cognito

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

사용자 풀에서 OIDC 자격 증명 공급자 사용

사용자는 OpenID Connect(OIDC) 자격 증명 공급자()의 기존 계정을 사용하여 애플리케이션에 로그인할 수 있습니다IdPs. OIDC 공급자를 사용하면 독립적인 Single Sign-On 시스템 사용자가 애플리케이션이 공유 형식의 사용자 풀로 OIDC 토큰을 수신하는 동안 기존 보안 인증을 제공할 수 있습니다. 사용자 풀은 여러 외부OIDC IdPs 와 애플리케이션 간에 중간 의존 당사자 역할을 할 수도 있는 OIDC IdP입니다.

OIDC IdP로 로그인하는 사용자는 사용자 풀 애플리케이션에 액세스하기 위해 새 자격 증명 또는 정보를 제공할 필요가 없습니다. 애플리케이션은 로그인을 위해 사용자 풀을 애플리케이션의 토큰 형식을 표준화하는 백그라운드의 도구로 사용하여 자동으로 IdP로 리디렉션할 수 있습니다. IdP 리디렉션에 대한 자세한 내용은 섹션을 참조하세요권한 부여 엔드포인트.

다른 서드 파티 자격 증명 공급자와 마찬가지로 OIDC 공급자에 애플리케이션을 등록하고 사용자 풀에 연결하려는 IdP 애플리케이션에 대한 정보를 얻어야 합니다. 사용자 풀 OIDC IdP에는 클라이언트 ID, 클라이언트 보안 암호, 요청하려는 범위 및 공급자 서비스 엔드포인트에 대한 정보가 필요합니다. 사용자 풀은 검색 OIDC 엔드포인트에서 공급자 엔드포인트를 검색하거나 수동으로 입력할 수 있습니다. 또한 공급자 ID 토큰을 검사하고 IdP와 사용자 풀의 속성 간에 속성 매핑을 생성해야 합니다.

OIDC IdP를 사용한 인증 개요
참고

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

OIDC 사용자 풀 API 메서드 를 사용하여 AWS Management Console의 사용자 풀에 IdP AWS CLI를 추가할 수 있습니다CreateIdentityProvider.

사전 조건

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

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

  • 다음 구성의 OIDC IdP:

    • client_secret_post 클라이언트 인증을 지원합니다. Amazon Cognito는 IdP 에 대한 OIDC 검색 엔드포인트에서 token_endpoint_auth_methods_supported 클레임을 확인하지 않습니다. Amazon Cognito는 client_secret_basic 클라이언트 인증을 지원하지 않습니다. 클라이언트 인증에 대한 자세한 내용은 OpenID Connect 설명서에서 클라이언트 인증을 참조하세요.

    • userInfoopenid_configuration, 및 와 같은 HTTPS OIDC 엔드포인트에만 사용됩니다jwks_uri.

    • OIDC 엔드포인트에는 TCP 포트 80 및 443만 사용합니다.

    • HMAC-SHA, ECDSA또는 RSA 알고리즘으로만 ID 토큰에 서명합니다.

    • 키 ID kid 클레임을 jwks_uri에 게시하며 토큰에 kid 클레임을 포함합니다.

    • 유효한 루트 CA 신뢰 체인이 있는 만료되지 않은 퍼블릭 키를 제공합니다.

1단계: OIDC IdP에 등록

Amazon Cognito 에서 OIDC IdP를 생성하기 전에 클라이언트 ID와 클라이언트 암호를 받으려면 애플리케이션을 OIDC IdP에 등록해야 합니다.

OIDC IdP에 등록하려면
  1. OIDC IdP 를 사용하여 개발자 계정을 생성합니다.

    에 대한 링크 OIDC IdPs
    OIDC IdP 설치 방법 OIDC 검색 URL
    Salesforce

    Salesforce 자격 증명 공급자 설치

    https://login.salesforce.com

    Ping Identity

    Ping Identity 자격 증명 공급자 설치

    https://Your Ping domain address:9031/idp/userinfo.openid

    예: https://pf.company.com:9031/idp/userinfo.openid

    Okta

    Okta 자격 증명 공급자 설치

    https://Your Okta subdomain.oktapreview.com

    또는 https://Your Okta subdomain.okta.com

    Microsoft Azure Active Directory (Azure AD)

    Microsoft Azure AD 자격 증명 공급자 설치

    https://login.microsoftonline.com/{tenant}/v2.0

    Google

    Google 자격 증명 공급자 설치

    https://accounts.google.com

    참고

    Amazon Cognito는 통합 소셜 로그인 IdP로 Google을 제공합니다. 통합 IdP 사용을 권장합니다. 사용자 풀에서 소셜 자격 증명 공급자 사용을 참조하세요.

  2. OIDC IdP 를 URL 사용하여 /oauth2/idpresponse 엔드포인트에 사용자 풀 도메인을 등록합니다. 이렇게 OIDC 하면 사용자를 인증할 때 IdP가 나중에 Amazon Cognito에서 이를 수락할 수 있습니다.

    https://mydomain.us-east-1.amazoncognito.com/oauth2/idpresponse
  3. Amazon Cognito 사용자 풀URL에 콜백을 등록합니다. 인증URL에 성공한 후 Amazon Cognito가 사용자를 리디렉션하는 페이지의 입니다.

    https://www.example.com
  4. 사용자의 범위를 선택합니다. 범위 openid는 필수 항목입니다. 이메일 범위가 있어야만 이메일email_verified 클레임에 대한 액세스 권한을 받을 수 있습니다.

  5. OIDC IdP는 클라이언트 ID와 클라이언트 보안 암호를 제공합니다. 사용자 풀에서 OIDC IdP를 설정할 때 이 옵션을 사용합니다.

예: 사용자 풀에서 Salesforce를 OIDC IdP로 사용

Salesforce와 같은 OIDC호환 OIDC IdP와 사용자 풀 간에 신뢰를 설정하려는 경우 IdP를 사용합니다.

  1. Salesforce 개발자 웹사이트에서 계정을 생성합니다.

  2. 이전 단계에서 설정한 개발자 계정을 통해 로그인합니다.

  3. Salesforce 페이지에서 다음 중 하나를 수행합니다.

    • Lightning Experience를 사용 중인 경우에는 설정 기어 아이콘을 선택하고 Setup Home(설정 홈)을 선택합니다.

    • Salesforce Classic을 사용 중인 경우에는 사용자 인터페이스 헤더에 Setup(설정)이 표시됩니다. 이를 선택합니다.

    • Salesforce Classic을 사용 중인 경우에는 헤더에 Setup(설정)이 표시됩니다. 상단의 탐색 모음에서 이름을 선택하고 드롭다운 목록에서 Setup(설정)을 선택합니다.

  4. 왼쪽 탐색 모음에서 Company Settings(회사 설정)를 선택합니다.

  5. 탐색 모음에서 [도메인(Domain)]을 선택하고 도메인을 입력한 다음, [생성(Create)]을 선택합니다.

  6. 왼쪽 탐색 모음에서 [플랫폼 도구(Platform Tools)]에서 [앱(Apps)]을 선택합니다.

  7. App Manager(앱 관리자)를 선택합니다.

    1. [새 연결된 앱(New connected app)]을 선택합니다.

    2. 필수 필드를 작성합니다.

      시작 URL에서 Salesforce IdP 로 로그인하는 사용자 풀 도메인의 URL /authorize 엔드포인트에 를 입력합니다. 사용자가 연결된 앱에 액세스하면 Salesforce는 로그인을 완료URL하도록 이 앱으로 안내합니다. 그런 다음 Salesforce는 앱 클라이언트와 URL 연결된 콜백으로 사용자를 리디렉션합니다.

      https://mydomain.us-east-1.amazoncognito.com/authorize?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com&identity_provider=CorpSalesforce
    3. OAuth 설정을 활성화하고 콜백 에 사용자 풀 도메인에 대한 /oauth2/idpresponse 엔드포인트URL의 를 입력합니다. URL 여기에서 SalesforceURL는 Amazon Cognito가 OAuth 토큰으로 교환하는 권한 부여 코드를 발급합니다.

      https://mydomain.us-east-1.amazoncognito.com/oauth2/idpresponse
  8. 사용자의 범위를 선택합니다. openid 범위를 포함해야 합니다. emailemail_verified claims에 대한 액세스 권한을 부여하려면 email 범위를 추가합니다. 범위를 공백으로 구분합니다.

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

    Salesforce에서는 클라이언트 ID를 사용자 키(Consumer Key)로 부르고, 클라이언트 암호를 사용자 암호(Consumer Secret)로 부릅니다. 클라이언트 ID와 클라이언트 암호를 메모합니다. 다음 섹션에서 이 둘을 사용합니다.

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

이 섹션에서는 OIDCIdP 의 OIDC기반 인증 요청을 처리하도록 사용자 풀을 구성합니다.

OIDC IdP를 추가하려면(Amazon Cognito 콘솔)

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

  2. 탐색 메뉴에서 [사용자 풀(User Pools)]을 선택합니다.

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

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

  5. OpenID Connect IdP를 선택합니다.

  6. 공급자 이름(Provider name)에 고유한 이름을 입력합니다.

  7. [클라이언트 ID(Client ID)]에 공급자로부터 받은 클라이언트 ID를 입력합니다.

  8. 클라이언트 암호(Client secret)에 공급자로부터 받은 클라이언트 암호를 입력합니다.

  9. 이 공급자의 [권한 있는 범위(Authorized scopes)]를 입력합니다. 범위는 애플리케이션이 공급자로부터 요청할 사용자 속성(예: name, email) 그룹을 정의합니다. 범위는 OAuth2.0 사양에 따라 공백으로 구분해야 합니다.

    사용자는 애플리케이션에 이러한 속성을 제공하는 것에 동의하라는 메시지를 받게 됩니다.

  10. 속성 요청 메서드를 선택하여 Amazon Cognito에 공급자가 운영하는 userInfo 엔드포인트에서 사용자 세부 정보를 가져오는 데 사용해야 하는 HTTP 메서드( GET 또는 POST)를 제공합니다.

  11. 발급자 또는 수동 입력 자동 채우기를 URL 통해 OpenID Connect 엔드포인트를 검색하려면 설정 방법을 선택합니다. Amazon Cognito가 authorization, token, userInfo.well-known/openid-configuration 엔드포인트URLs의 를 검색할 수 있는 퍼블릭 jwks_uri 엔드포인트가 제공업체에 있는 경우 발급자를 통한 자동 채우URL기를 사용합니다.

  12. IdP URLs에서 발급자 URL 또는 authorization, tokenuserInfo, 및 jwks_uri 엔드포인트를 입력합니다.

    참고

    URL 는 로 시작해야 하며 https://슬래시 로 끝나지 않아야 합니다/. 이 에는 포트 번호 443 및 80만 사용할 수 있습니다URL. 예를 들어 Salesforce는 다음 를 사용합니다URL.

    https://login.salesforce.com

    자동 채우기를 선택한 경우 검색 문서는 HTTPS , authorization_endpoint, 및 값에 token_endpointuserinfo_endpoint를 사용해야 합니다jwks_uri. 그렇지 않으면 로그인이 실패합니다.

  13. OIDC 클레임 하위는 기본적으로 사용자 풀 속성 사용자 이름에 매핑됩니다. 다른 OIDC 클레임을 사용자 풀 속성에 매핑할 수 있습니다. OIDC 클레임을 입력하고 드롭다운 목록에서 해당 사용자 풀 속성을 선택합니다. 예를 들어, 클레임 email은 주로 사용자 풀 속성 Email로 매핑됩니다.

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

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

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

  17. Save changes(변경 사항 저장)를 선택합니다.

OIDC IdP를 추가하려면(AWS CLI)

  • CreateIdentityProvider API 메서드에 대한 파라미터 설명을 참조하세요.

    aws cognito-idp create-identity-provider --user-pool-id string --provider-name string --provider-type OIDC --provider-details map --attribute-mapping string --idp-identifiers (list) --cli-input-json string --generate-cli-skeleton string

    공급자 세부 정보의 이 맵을 사용합니다.

    { "client_id": "string", "client_secret": "string", "authorize_scopes": "string", "attributes_request_method": "string", "oidc_issuer": "string", "authorize_url": "string", "token_url": "string", "attributes_url": "string", "jwks_uri": "string" }

3단계: OIDC IdP 구성 테스트

이전 두 섹션의 요소를 URL 사용하고 이를 사용하여 OIDC IdP 구성을 테스트하여 권한을 생성할 수 있습니다.

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

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