Okta를 Amazon Cognito 사용자 풀의 SAML 자격 증명 공급자로 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 9월 3일

Okta를 Amazon Cognito 사용자 풀의 SAML 2.0(Security Assertion Markup Language 2.0) IdP(자격 증명 공급자)로 사용하고 싶습니다. 어떻게 설정해야 합니까?

간략한 설명

Amazon Cognito 사용자 풀은 Okta와 같은 IdP를 통한 로그인을 비롯하여 타사(연동)를 통한 로그인을 허용합니다. 자세한 내용은 타사를 통한 사용자 풀 로그인 추가사용자 풀에 SAML 자격 증명 공급자 추가를 참조하십시오.

사용자 풀을 Okta와 통합하면 Okta 앱의 사용자가 Amazon Cognito에서 사용자 풀 토큰을 받을 수 있습니다. 자세한 내용은 사용자 풀을 통해 토큰 사용을 참조하십시오.

​해결 방법

앱 클라이언트와 도메인 이름이 있는 Amazon Cognito 사용자 풀 생성

  1. 사용자 풀을 생성하십시오.
    참고: 생성 중에 표준 속성 이메일(email)이 기본적으로 선택됩니다. 자세한 내용은 사용자 풀 속성 구성을 참조하십시오.
  2. 사용자 풀에서 앱 클라이언트를 생성합니다. 자세한 내용은 호스팅 웹 UI 활성화하는 앱 추가를 참조하십시오.
    참고: 앱 클라이언트를 추가할 때 클라이언트 암호 생성(Generate client secret) 확인란을 선택 취소하십시오. 권한 부여 코드 부여 플로우 및 토큰 새로 고침 플로우 같은 특정 권한 부여 플로우에서 권한 부여 서버는 앱 클라이언트 암호를 사용하여 사용자 대신 요청을 제출할 수 있는 권한을 클라이언트에 부여합니다. 이 단계에서 사용되는 암시적 권한 부여 플로우에는 앱 클라이언트 암호가 필요하지 않습니다.
  3. 사용자 풀에 도메인 이름을 추가합니다.

Okta 개발자 계정 가입

참고: 이미 Okta 개발자 계정이 있는 경우에는 로그인합니다.

  1. Okta 개발자 가입 웹 페이지에 개인 정보를 입력한 다음, 시작하기(GET STARTED)를 선택합니다. Okta 개발자 팀이 입력한 이메일 주소로 확인 이메일을 보냅니다.
  2. 확인 이메일에서 계정의 로그인 정보를 찾습니다. [ACTIVATE MY ACCOUNT]를 선택하여 로그인한 후 계정 생성을 완료합니다.

Okta에서 SAML 앱 생성

  1. Okta 개발자 콘솔(Okta Developer Console)을 엽니다. 콘솔에 대한 자세한 내용은 Okta 개발자 블로그의 Okta 개발자 콘솔: 여러분을 위한 완전히 새로운 개편(The Okta Developer Console: All New, All You)을 참조하십시오.
  2. 왼쪽 상단 모서리에서 개발자 콘솔(Developer Console)을 잠시 멈추고 클래식 UI(Classic UI)를 선택합니다. 그러면 관리자 콘솔이 열립니다. 자세한 내용은 Okta 개발자 웹사이트의 Okta 조직 페이지에서 관리자 콘솔을 참조하십시오.
    중요: SAML 앱을 생성하려면 Admin Console(Classic UI)에 있어야 합니다.
  3. 바로 가기(Shortcuts)에서 애플리케이션 추가(Add Applications)를 선택합니다.
    또는 애플리케이션(Applications)을 선택한 다음, 애플리케이션 추가(Add Application)를 선택합니다.
  4. 애플리케이션 추가(Add Application) 페이지에서 새 앱 생성(Create New App)을 선택합니다.
  5. [Create a New Application Integration] 대화 상자에서 [Platform]이 [Web]으로 설정되었는지 확인합니다.
  6. [Sign on method]는 [SAML 2.0]을 선택합니다.
  7. 생성(Create)을 선택합니다.

자세한 내용은 Okta 개발자 웹사이트의 SSO(Single Sign-On) 통합 구축(Build a Single Sign-On (SSO) Integration) 가이드에서 통합 준비(Prepare your integration)를 참조하십시오.

Okta 앱에 대한 SAML 통합 구성

  1. [Create SAML Integration] 페이지의 [General Settings] 아래에 앱 이름을 입력합니다.
  2. (선택 사항) 로고를 업로드하고 앱의 가시성 설정을 선택합니다.
  3. [Next]를 선택합니다.
  4. [GENERAL]에서 [Single sign on URL]에 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse를 입력합니다.
    참고: yourDomainPrefixregion은 실제 사용자 풀의 값으로 바꾸십시오. 이 값은 Amazon Cognito 콘솔에서 해당 사용자 풀에 대한 도메인 이름(Domain name) 페이지에서 찾을 수 있습니다.
  5. 대상 URI(SP 엔터티 ID)(Audience URI (SP Entity ID))urn:amazon:cognito:sp:yourUserPoolId를 입력합니다.
    참고: yourUserPoolId를 실제 Amazon Cognito 사용자 풀 ID로 바꾸십시오. 이 ID는 Amazon Cognito 콘솔에서 사용자 풀에 대한 일반 설정(General settings) 탭에서 확인할 수 있습니다.
  6. 속성 문(선택 사항)(ATTRIBUTE STATEMENTS (OPTIONAL))에서 다음 정보가 포함된 문을 추가합니다.
    [Name]에 SAML 속성 이름 [http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress]를 입력합니다.
    [Value]에는 [user.email]을 입력합니다.
  7. 페이지의 다른 모든 설정은 기본값을 유지하거나 사용자의 기본 설정에 따라 설정합니다.
  8. [Next]를 선택합니다.
  9. Okta 지원에 대한 피드백 답변을 선택합니다.
  10. 마침(Finish)을 선택합니다.

자세한 내용은 Okta 개발자 웹사이트의 SSO(Single Sign-On) 통합 구축(Build a Single Sign-On (SSO) Integration) 가이드에서 통합 생성(Create your integration)을 참조하십시오.

Okta 애플리케이션에 사용자 할당

  1. Okta 앱의 할당(Assignments) 탭에서 할당(Assign)에 대해 사용자에게 할당(Assign to People)을 선택합니다.
  2. 할당하려는 사용자 옆에 있는 할당(Assign)을 선택합니다.
    참고: 신규 계정인 경우 유일한 옵션은 자신(관리자)만 사용자로 선택하는 것입니다.
  3. (선택 사항) 원하는 경우 [User Name]에 사용자 이름을 입력하거나 사용자의 이메일 주소를 사용자로 입력합니다.
  4. [Save and Go Back]을 선택합니다. 사용자가 할당되었습니다.
  5. 완료(Done)를 선택합니다.

자세한 내용은 Okta 개발자 웹사이트의 SSO(Single Sign-On) 통합 구축(Build a Single Sign-On (SSO) Integration) 가이드에서 사용자 할당(Assign users)을 참조하십시오.

Okta 애플리케이션의 IdP 메타데이터 가져오기

Okta 앱의 [Sign On] 탭에서 [Identity Provider metadata] 하이퍼링크를 찾습니다. 마우스 오른쪽 버튼으로 하이퍼링크를 클릭하고 URL을 복사합니다.

자세한 내용은 Okta 개발자 웹 사이트의 SSO(Single Sign-On) 통합 구축(Build a Single Sign-On (SSO) Integration) 가이드에서 통합 설정 지정(Specify your integration settings)을 참조하십시오.

Okta를 사용자 풀에서 SAML IdP로 구성

  1. [Amazon Cognito console]에서 [Manage user pools]를 선택한 다음, 사용자 풀을 선택합니다.
  2. 왼쪽 탐색 창의 [Federation]에서 [Identity providers]를 선택합니다.
  3. [SAML]을 선택합니다.
  4. [Metadata document]에 복사한 자격 증명 공급자 메타데이터 URL을 붙여 넣습니다.
  5. [Provider name]에 Okta를 입력합니다. 자세한 내용은 SAML 자격 증명 공급자 이름 선택을 참조하십시오.
  6. (선택 사항) SAML 식별자[식별자(선택 사항)]를 입력하고 사용자가 사용자 풀에서 로그아웃할 때 IdP(Okta)에서 로그아웃을 활성화합니다(IdP 로그 아웃 흐름 활성화).
  7. 공급자 생성(Create provider)을 선택합니다.

자세한 내용은 사용자 풀에 대한 SAML 자격 증명 공급자 생성 및 관리(AWS Management Console)을 참조하십시오.

IdP 속성에서 사용자 풀 속성으로 이메일 주소 매핑

  1. [Amazon Cognito console]에서 [Manage user pools]를 선택한 다음, 사용자 풀을 선택합니다.
  2. 왼쪽 탐색 창의 [Federation]에서 [Attribute mapping]을 선택합니다.
  3. 속성 매핑 페이지에서 [SAML] 탭을 선택합니다.
  4. [Add SAML attribute]를 선택합니다.
  5. [SAML Attribute]에 SAML 속성 이름 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress를 입력합니다.
  6. 사용자 풀 속성(User pool attribute)의 목록에서 이메일(Email)을 선택합니다.

자세한 내용은 사용자 풀에 대한 자격 증명 공급자 속성 매핑 지정을 참조하십시오.

사용자 풀의 앱 클라이언트 설정 변경

  1. [Amazon Cognito console]에서 [Manage user pools]를 선택한 다음, 사용자 풀을 선택합니다.
  2. 왼쪽 탐색 창의 [App integration]에서 [App Client settings]를 선택합니다.
  3. 앱 클라이언트 페이지에서 다음 작업을 수행하십시오.
    [Enabled Identity Providers]에서 [Okta] 및 [Cognito User Pool] 확인란을 선택합니다.
    로그인 후 귀하의 사용자가 리디렉션하기를 원하는 URL을 [Callback URL(s)]에 입력합니다. https://www.example.com/과 같은 유효한 URL을 입력하여 테스트할 수 있습니다.
    [Sign out URL(s)]에 로그아웃 후 사용자를 리디렉션할 URL을 입력합니다. https://www.example.com/과 같은 유효한 URL을 입력하여 테스트할 수 있습니다.
    [Allowed OAuth Flows]에서 [Implicit grant] 확인란이 선택되어 있는지 확인합니다.
    [Allowed OAuth Scopes]에서 [email] 및 [openid] 확인란이 선택되어 있는지 확인합니다.
  4. 변경 사항 저장(Save changes)을 선택합니다.

자세한 내용은 앱 클라이언트 설정 개요를 참조하십시오.

엔드포인트 URL 구성

사용자 풀의 값을 사용하여 다음 로그인 엔드포인트 URL을 구성합니다.

https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl

다음을 수행해야 합니다.

  • yourDomainPrefixregion을 실제 사용자 풀의 값으로 바꿉니다. 이 값은 Amazon Cognito 콘솔에서 해당 사용자 풀에 대한 도메인 이름(Domain name) 페이지에서 찾을 수 있습니다.
  • yourClientId는 앱 클라이언트의 ID로, redirectUrl은 앱 클라이언트의 콜백 URL로 각각 바꿉니다. 이러한 값은 Amazon Cognito 콘솔의 해당 사용자 풀에 대한 앱 클라이언트 설정(App client settings) 페이지에서 찾을 수 있습니다.

자세한 내용은 Amazon Cognito의 호스팅 웹 UI를 구성하려면 어떻게 해야 합니까?로그인 엔드포인트를 참조하십시오.

엔드포인트 URL 테스트

  1. 웹 브라우저에 구성된 로그인 엔드포인트 URL을 입력합니다.
  2. 로그인 엔드포인트 웹 페이지에서 Okta를 선택합니다.
    참고: 앱 클라이언트의 콜백 URL로 리디렉션되는 경우 이미 브라우저에서 Okta 계정에 로그인한 상태입니다. 웹 브라우저의 주소 표시줄에 있는 URL에 사용자 풀 토큰이 표시됩니다.
  3. Okta [Sign In] 페이지에서 앱에 할당한 사용자의 사용자 이름과 암호를 입력합니다.
  4. [Sign in]을 선택합니다.

로그인하고 나면 앱 클라이언트의 콜백 URL로 리디렉션됩니다. 웹 브라우저의 주소 표시줄에 있는 URL에 사용자 풀 토큰이 표시됩니다.

(선택 사항) Amazon Cognito 호스팅 UI 건너뛰기

엡에 로그인할 때 사용자가 Amazon Cognito 호스팅 웹 UI를 건너뛰게 하려면 다음 엔드포인트 URL을 대신 사용합니다.

https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/authorize?response_type=token&identity_provider=samlProviderName&client_id=yourClientId&redirect_uri=redirectUrl&scope=allowedOauthScopes

다음을 수행해야 합니다.

  • yourDomainPrefixregion을 실제 사용자 풀의 값으로 바꿉니다. 이 값은 Amazon Cognito 콘솔에서 해당 사용자 풀에 대한 도메인 이름(Domain name) 페이지에서 찾을 수 있습니다.
  • samlProviderName을 사용자 풀의 SAML 공급자 이름(Okta)으로 바꿉니다.
  • (선택 사항) SAML IdP의 식별자를 이미 [Identifiers (optional)] 필드에 추가한 경우, identity_provider=samlProviderNameidp_identifier=idpIdentifier로, idpIdentifier를 사용자 지정 식별자 문자열로 교체합니다.
  • yourClientId는 앱 클라이언트의 ID로, redirectUrl은 앱 클라이언트의 콜백 URL로 각각 바꿉니다. 이러한 값은 Amazon Cognito 콘솔의 해당 사용자 풀에 대한 앱 클라이언트 설정(App client settings) 페이지에서 찾을 수 있습니다.
  • allowedOauthScopes를 Amazon Cognito 앱 클라이언트가 요청하려는 특정 범위로 교체합니다. 예를 들어, scope=email+openid입니다.

자세한 내용은 Amazon Cognito의 호스팅 웹 UI를 구성하려면 어떻게 해야 합니까?권한 부여 엔드포인트를 참조하십시오.