사용자 풀에 대한 자격 증명 공급자 속성 매핑 지정 - Amazon Cognito

사용자 풀에 대한 자격 증명 공급자 속성 매핑 지정

AWS Management Console이나 AWS CLI 또는 API를 사용하여 사용자 풀의 자격 증명 공급자(IdP)에 대한 속성 매핑을 지정할 수 있습니다.

매핑에 대해 알아야 할 사항

매핑을 사용하기 전에 다음 중요 세부 정보를 검토하세요.

  • 페더레이션 사용자가 애플리케이션에 로그인할 때 사용자 풀에 필요한 각 사용자 풀 속성의 매핑이 있어야 합니다. 예를 들어, 사용자 풀에 로그인용 email 속성이 필요한 경우 이 속성을 IdP의 해당 속성에 매핑합니다.

  • 기본적으로 매핑된 이메일 주소는 확인되지 않습니다. 일회용 코드를 사용하여 매핑된 이메일 주소는 확인할 수 없습니다. 대신 IdP의 속성을 매핑하여 확인 상태를 가져옵니다. 예를 들어 Google과 대부분의 OIDC 공급자는 email_verified 속성을 포함합니다.

  • 매핑된 각 사용자 풀 속성의 경우 최대 값 길이(2,048자)는 Amazon Cognito가 IdP에서 가져오는 값에 대해 충분히 커야 합니다. 그러지 않으면 사용자가 애플리케이션에 로그인할 때 Amazon Cognito에서 오류를 보고합니다. 사용자 지정 속성을 IdP 토큰에 매핑하는 경우 길이를 2,048자로 설정합니다.

  • Amazon Cognito는 다음과 같이 페더레이션 IdP가 전달하는 특정 클레임에서 페더레이션 사용자 프로필의 username 속성을 추출합니다. Amazon Cognito는 이 속성 값 앞에 IdP 이름을 추가합니다. 페더레이션 사용자가 타사 디렉터리의 속성과 정확히 일치하는 속성을 가지도록 하려면 해당 속성을 preferred_username과 같은 대체 Amazon Cognito 속성에 매핑합니다.

    ID 공급자 username 소스 속성
    Facebook id
    Google sub
    Login with Amazon user_id
    Apple로 로그인 sub
    SAML 공급자 NameID
    OpenID Connect(OIDC) 공급자 sub
  • 사용자가 애플리케이션에 로그인할 때 Amazon Cognito는 매핑된 사용자 풀 속성을 업데이트할 수 있어야 합니다. 사용자가 IdP를 통해 로그인하면 Amazon Cognito가 매핑된 속성을 IdP의 최신 정보로 업데이트합니다. Amazon Cognito는 현재 값이 이미 최신 정보와 일치하더라도 매핑된 각 속성을 업데이트합니다. Amazon Cognito는 속성을 업데이트할 수 없는 경우 오류를 보고합니다. Amazon Cognito가 속성을 업데이트할 수 있는지 확인하려면 다음 요구 사항을 확인하세요.

    • IdP에서 매핑하는 모든 사용자 풀 사용자 지정 속성은 변경할 수 있어야 합니다. 변경 가능한 사용자 지정 속성은 언제든지 업데이트할 수 있습니다. 반대로 사용자 프로필을 처음 만들 때 사용자의 변경할 수 없는 사용자 지정 속성 값만 설정할 수 있습니다. Amazon Cognito 콘솔에서 변경 가능한 사용자 지정 속성을 생성하려면 가입 환경(Sign-up experience) 탭에서 사용자 지정 속성 추가(Add custom attributes)를 선택할 때 추가한 속성의 변경 가능(Mutable) 확인란을 활성화합니다. 또는 CreateUserPool API 작업을 사용하여 사용자 풀을 생성하는 경우 이러한 각 속성에 대한 Mutable 파라미터를 true로 설정할 수 있습니다.

    • 애플리케이션의 앱 클라이언트 설정에서 매핑된 속성은 쓰기 가능해야 합니다. Amazon Cognito 콘솔의 [앱 클라이언트(App clients)] 페이지에 쓸 수 있는 속성을 설정할 수 있습니다. 또는 CreateUserPoolClient API 작업을 사용하여 앱 클라이언트를 생성하는 경우 이러한 속성을 WriteAttributes 어레이에 추가할 수 있습니다.

  • IdP 속성에 여러 값이 포함된 경우 Amazon Cognito URL 양식은 영숫자가 아닌 문자('.', '-', '*' 및 '_' 문자 제외)가 포함된 값을 인코딩합니다. 이러한 값은 애플리케이션에 사용하기 전에 디코딩해야 합니다.

사용자 풀에 대한 자격 증명 공급자 속성 매핑 지정(AWS Management Console)

AWS Management Console을 사용하여 사용자 풀의 IdP에 대한 속성 매핑을 지정할 수 있습니다.

참고

Amazon Cognito는 수신 토큰에 클레임이 있는 경우에만 수신 클레임을 사용자 풀 속성에 매핑합니다. 이전에 매핑된 클레임이 수신 토큰에 더 이상 존재하지 않으면 삭제되거나 변경되지 않습니다. 애플리케이션에 삭제된 클레임의 매핑이 필요한 경우 사전 인증 Lambda 트리거를 사용하여 인증 중에 사용자 정의 속성을 삭제하고 이러한 속성이 수신 토큰에서 다시 채워지도록 허용할 수 있습니다.

Original console

소셜 IdP 속성 매핑을 지정하려면

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

  2. 탐색 창에서 사용자 풀 관리(Manage your User Pools)를 선택한 다음 편집할 사용자 풀을 선택합니다.

  3. 속성 매핑 탭을 선택합니다.

  4. Facebook, Google, Amazon 또는 Apple 탭을 선택합니다.

  5. 매핑해야 하는 각 속성에 대해 다음 단계를 완료합니다.

    1. 캡쳐 확인란을 선택합니다.

    2. 사용자 풀 속성(User pool attribute)의 경우 드롭다운 목록에서 소셜 IdP 속성으로 매핑할 사용자 풀 속성을 선택합니다.

    3. 더 많은 속성이 필요한 경우 Facebook 속성 추가(Add Facebook attribute)(또는 Google 속성 추가(Add Google attribute), Amazon 속성 추가(Add Amazon attribute), Apple 속성 추가(Add Apple attribute))를 선택하고 다음 단계를 완료합니다.

      1. Facebook 속성(Facebook attribute), Google 속성(Google attribute), Amazon 속성(Amazon attribute) 또는 Apple 속성(Apple attribute) 필드에 매핑할 속성의 이름을 입력합니다.

      2. 사용자 풀 속성(User pool attribute) 드롭다운 목록에서 소셜 IdP 속성에 매핑할 사용자 풀 속성을 선택합니다.

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

SAML 공급자 속성 매핑을 지정하려면

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

  2. 탐색 창에서 사용자 풀 관리(Manage your User Pools)를 선택한 다음 편집할 사용자 풀을 선택합니다.

  3. 속성 매핑 탭을 선택합니다.

  4. SAML 탭을 선택합니다.

  5. 값을 캡처할 모든 속성의 캡쳐 상자를 선택합니다. 속성의 캡쳐(Capture) 상자를 선택 취소하고 변경 사항을 저장하면 Amazon Cognito에서 해당 속성의 매핑을 제거합니다.

  6. 드롭다운 목록에서 IdP를 선택합니다.

  7. 매핑해야 하는 각 속성에 대해 다음 단계를 완료합니다.

    1. SAML 속성 추가를 선택합니다.

    2. SAML 속성 필드에서 매핑할 SAML 속성의 이름을 입력합니다.

    3. 사용자 풀 속성 필드의 드롭다운 목록에서 SAML 속성을 매핑할 사용자 풀 속성을 선택합니다.

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

New console

소셜 IdP 속성 매핑을 지정하려면

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

  2. 탐색 창에서 [사용자 풀(User Pools)]을 선택한 다음 편집할 사용자 풀을 선택합니다.

  3. 로그인 환경(Sign-in experience) 탭을 선택하고 페더레이션 로그인(Federated sign-in)을 찾습니다.

  4. 자격 증명 공급자 추가(Add an identity provider)를 선택하거나 구성한 Facebook, Google, Amazon 또는 Apple IdP를 선택합니다. 속성 매핑(Attribute mapping)을 찾아서 편집(Edit)을 선택합니다.

    소셜 IdP 추가에 대한 자세한 내용은 사용자 풀에 소셜 자격 증명 공급자 추가 섹션을 참조하세요.

  5. 매핑해야 하는 각 속성에 대해 다음 단계를 완료합니다.

    1. [사용자 풀 속성(User pool attribute)] 열에서 속성을 선택합니다. 사용자 풀의 사용자 프로파일에 할당되는 속성입니다. 사용자 정의 속성은 표준 속성 뒤에 나열됩니다.

    2. 속성(attribute) 열에서 속성을 선택합니다. 공급자 디렉터리에서 전달되는 속성입니다. 소셜 공급자의 알려진 속성이 드롭다운 목록에 제공됩니다.

    3. IdP와 Amazon Cognito 간에 추가 속성을 매핑하려면 [다른 속성 추가(Add another attribute)]를 선택합니다.

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

SAML 공급자 속성 매핑을 지정하려면

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

  2. 탐색 창에서 [사용자 풀(User Pools)]을 선택한 다음 편집할 사용자 풀을 선택합니다.

  3. 로그인 환경(Sign-in experience) 탭을 선택하고 페더레이션 로그인(Federated sign-in)을 찾습니다.

  4. 자격 증명 공급자 추가(Add an identity provider)를 선택하거나 구성한 SAML IdP를 선택합니다. 속성 매핑(Attribute mapping)을 찾아서 편집(Edit)을 선택합니다. SAML IdP 추가에 대한 자세한 내용은 사용자 풀에 SAML 자격 증명 공급자 추가 섹션을 참조하세요.

  5. 매핑해야 하는 각 속성에 대해 다음 단계를 완료합니다.

    1. [사용자 풀 속성(User pool attribute)] 열에서 속성을 선택합니다. 사용자 풀의 사용자 프로파일에 할당되는 속성입니다. 사용자 정의 속성은 표준 속성 뒤에 나열됩니다.

    2. [SAML 속성(SAML attribute)] 열에서 속성을 선택합니다. 공급자 디렉터리에서 전달되는 속성입니다.

      IdP가 샘플 SAML 어설션을 참조용으로 제공할 수도 있습니다. email과 같은 간단한 이름을 사용하는 IdP도 있고, 다음과 같이 URL 형식의 속성 이름을 사용하는 IdP도 있습니다.

      http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    3. IdP와 Amazon Cognito 간에 추가 속성을 매핑하려면 다른 속성 추가(Add another attribute)를 선택합니다.

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

사용자 풀에 대한 자격 증명 공급자 속성 매핑 지정(AWS CLI 및 AWS API)

다음 명령을 사용하여 사용자 풀에 대한 IdP 속성 매핑을 지정합니다.

공급자 생성 시 속성 매핑을 지정하려면

  • AWS CLI: aws cognito-idp create-identity-provider

    메타데이터 파일이 포함된 예제: aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

    여기서 details.json에 다음 사항이 포함됩니다.

    { "MetadataFile": "<SAML metadata XML>" }
    참고

    <SAML metadata XML>에 따옴표(")가 있으면 이스케이프해야 합니다(\").

    메타데이터 URL이 포함된 예제: aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=<metadata_url> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API: CreateIdentityProvider

기존 IdP에 대한 속성 매핑을 지정하려면

  • AWS CLI: aws cognito-idp update-identity-provider

    예: aws cognito-idp update-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API: UpdateIdentityProvider

특정 IdP에 대한 속성 매핑 정보를 가져오려면

  • AWS CLI: aws cognito-idp describe-identity-provider

    예: aws cognito-idp describe-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name>

  • AWS API: DescribeIdentityProvider