

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

# 사용자 풀에서 SAML ID 제공업체 추가 및 관리
<a name="cognito-user-pools-managing-saml-idp"></a>

Amazon Cognito에서 작동하도록 ID 제공업체를 구성한 후 사용자 풀 및 앱 클라이언트에 추가할 수 있습니다. 다음 절차에서는 Amazon Cognito 사용자 풀에서 SAML 제공업체를 생성, 수정 및 삭제하는 방법을 보여줍니다.

------
#### [ AWS Management Console ]

 AWS Management Console 를 사용하여 SAML 자격 증명 공급자(IdPs.

SAML IdP를 생성하기 전에 타사 IdP로부터 얻은 SAML 메타데이터 문서가 있어야 합니다. 필요한 SAML 메타데이터 문서를 가져오거나 생성하는 방법에 대한 지침은 [타사 SAML ID 제공업체 구성](cognito-user-pools-integrating-3rd-party-saml-providers.md) 섹션을 참조하세요.

**사용자 풀에 SAML 2.0 IdP를 구성하려면**

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. **소셜 및 외부 제공업체** 메뉴를 선택한 다음 **ID 제공업체 추가**를 선택합니다.

1. **SAML** IdP를 선택합니다.

1. **제공업체 이름**을 입력합니다. `identity_provider` 요청 파라미터에서 이 친숙한 이름을 [권한 부여 엔드포인트](authorization-endpoint.md)에 전달할 수 있습니다.

1. **식별자(Identifiers)**를 쉼표로 구분하여 입력합니다. 식별자는 사용자가 로그인할 때 입력한 이메일 주소를 확인한 다음, 사용자 도메인에 해당하는 공급자로 사용자를 보내도록 Amazon Cognito에 지시합니다.

1. 사용자가 로그아웃할 때 Amazon Cognito에서 서명된 로그아웃 요청을 공급자에게 보내도록 하려는 경우 **로그아웃 흐름 추가(Add sign-out flow)**를 선택합니다. 관리형 로그인을 구성할 때 생성되는 `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout` 엔드포인트에 로그아웃 응답을 보내도록 SAML 2.0 IdP를 구성해야 합니다. `saml2/logout` 엔드포인트는 POST 바인딩을 사용합니다.
**참고**  
이 옵션을 선택하고 SAML IdP에 서명된 로그아웃 요청이 필요한 경우 사용자 풀의 서명 인증서도 SAML IdP에 제공해야 합니다.  
SAML IdP가 서명된 로그아웃 요청을 처리하고 사용자를 Amazon Cognito 세션에서 로그아웃합니다.

1. **IdP 시작 SAML 로그인** 구성을 선택합니다. 보안 모범 사례로 **SP 시작 SAML 어설션만 수락**을 선택합니다. 원치 않는 SAML 로그인 세션을 안전하게 수락하도록 환경을 준비한 경우 **SP 시작 및 IdP 시작 SAML 어설션 수락**을 선택합니다. 자세한 내용은 [Amazon Cognito 사용자 풀에서 SAML 세션 시작](cognito-user-pools-SAML-session-initiation.md) 단원을 참조하십시오.

1. **메타데이터 문서 소스(Metadata document source)**를 선택합니다. IdP가 퍼블릭 URL에서 SAML 메타데이터를 제공하는 경우 **메타데이터 문서 URL(Metadata document URL)**을 선택하고 해당 퍼블릭 URL을 입력할 수 있습니다. 그렇지 않은 경우 **메타데이터 문서 업로드(Upload metadata document)**를 선택한 다음, 이전에 공급자로부터 다운로드한 메타데이터 파일을 선택합니다.
**참고**  
제공업체에게 퍼블릭 엔드포인트가 있는 경우 파일을 업로드하는 대신 메타데이터 문서 URL을 입력하는 것이 좋습니다. Amazon Cognito는 메타데이터 URL에서 메타데이터를 자동으로 새로 고칩니다. 일반적으로 메타데이터 새로 고침은 6시간마다 또는 메타데이터가 만료되기 전 중 더 빠른 시간에 발생합니다.

1. **SAML 제공업체와 앱 간에 속성 매핑**을 선택하여 SAML 제공업체 속성을 사용자 풀의 사용자 프로파일에 매핑합니다. 속성 맵에 사용자 풀 필수 속성을 포함합니다.

   예를 들어, **사용자 풀 속성(User pool attribute)** `email`을 선택한 경우 IdP의 SAML 어설션에 표시된 대로 SAML 속성 이름을 입력합니다. IdP가 샘플 SAML 어설션을 제공하는 경우 이 샘플 어설션을 사용하여 이름을 찾을 수 있습니다. 일부 IdP는 `email`과 같은 간단한 이름을 사용하는 반면 다른 IdP는 다음과 같은 이름을 사용합니다.

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

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

------
#### [ API/CLI ]

다음 명령을 사용하여 SAML 자격 증명 공급자(IdP)를 생성 및 관리합니다.

**IdP를 생성하고 메타데이터 문서를 업로드하려면**
+ AWS CLI: `aws cognito-idp create-identity-provider`

  메타데이터 파일이 포함된 예제: `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --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`에 다음 사항이 포함됩니다.

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**참고**  
*<SAML 메타데이터 XML>*에 `"` 문자의 인스턴스가 포함된 경우 `\`를 이스케이프 문자(`\"`)로 추가해야 합니다.

  메타데이터 URL이 포함된 예제: `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**IdP에 대한 새 메타데이터 문서를 업로드하려면**
+ AWS CLI: `aws cognito-idp update-identity-provider`

  메타데이터 파일이 포함된 예제: `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

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

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**참고**  
*<SAML 메타데이터 XML>*에 `"` 문자의 인스턴스가 포함된 경우 `\`를 이스케이프 문자(`\"`)로 추가해야 합니다.

  메타데이터 URL이 포함된 예제: `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**특정 IdP에 대한 정보를 가져오려면**
+ AWS CLI: `aws cognito-idp describe-identity-provider`

  `aws cognito-idp describe-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)

**모든 IdP에 대한 정보를 나열하려면**
+ AWS CLI: `aws cognito-idp list-identity-providers`

  예시: `aws cognito-idp list-identity-providers --user-pool-id us-east-1_EXAMPLE --max-results 3`
+ AWS API: [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html)

**IdP를 삭제하려면**
+ AWS CLI: `aws cognito-idp delete-identity-provider`

  `aws cognito-idp delete-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html)

------

**사용자 풀을 신뢰 당사자로 추가하도록 SAML IdP를 설정하려면**
+ 사용자 풀 서비스 공급자 URN은 `urn:amazon:cognito:sp:us-east-1_EXAMPLE`입니다. Amazon Cognito에는 SAML 응답에서 이 URN과 일치하는 대상 제한 값이 필요합니다. IdP에서 SP로 보내는 응답 메시지에 대해 다음 POST 바인딩 엔드포인트를 사용하도록 IdP를 구성합니다.

  ```
  https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse
  ```
+ SAML IdP가 SAML 어설션의 사용자 풀에 대한 필수 속성과 `NameID`를 채워야 합니다. `NameID`는 사용자 풀에서 SAML 페더레이션 사용자를 고유하게 식별하는 데 사용됩니다. IdP는 각 사용자의 SAML 이름 ID를 대/소문자를 구분하는 일관된 형식으로 전달해야 합니다. 사용자 이름 ID의 값이 변경되면 새 사용자 프로필이 생성됩니다.

**SAML 2.0 IDP에 서명 인증서를 제공하려면**
+ IdP가 SAML 로그아웃 요청을 검증하는 데 사용할 수 있는 퍼블릭 키의 사본을 Amazon Cognito에서 다운로드하려면 사용자 풀의 **소셜 및 외부 제공업체** 메뉴를 선택하고 IdP를 선택한 다음 **서명 인증서 보기**에서 **.crt로 다운로드**를 선택합니다.

Amazon Cognito 콘솔을 사용하여 사용자 풀에 설정한 SAML 공급자를 삭제할 수 있습니다.

**SAML 공급자 삭제**

1. [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/home)에 로그인합니다.

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

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

1. 삭제할 SAML IdP 옆에 있는 라디오 버튼을 선택합니다.

1. **자격 증명 공급자 삭제(Delete identity provider)** 메시지가 표시되면 SAML 공급자의 이름을 입력하여 삭제를 확인하고 **삭제(Delete)**를 선택합니다.