호스트된 UI에 고유한 도메인 사용 - Amazon Cognito

호스트된 UI에 고유한 도메인 사용

앱 클라이언트를 설정한 후 Amazon Cognito 호스팅 UI 및 인증 API 엔드포인트에 대한 사용자 지정 도메인으로 사용자 풀을 구성할 수 있습니다. 사용자 지정 도메인을 사용하면 사용자가 자체 웹 주소를 사용하여 애플리케이션에 로그인할 수 있습니다.

사용자 풀에 사용자 정의 도메인 추가

사용자 풀에 사용자 지정 도메인을 추가하려면 Amazon Cognito 콘솔에서 도메인 이름을 지정하고 AWS Certificate Manager(ACM)을 사용하여 관리하는 인증서를 제공합니다. 도메인을 추가하고 나면 Amazon Cognito는 사용자가 DNS 구성에 추가할 별칭 대상을 제공합니다.

사전 조건

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

  • 앱 클라이언트가 포함된 사용자 풀. 자세한 내용은 사용자 풀 시작하기 섹션을 참조하세요.

  • 자신이 소유한 웹 도메인. 상위 도메인의 DNS에 유효한 A 레코드가 있어야 합니다. 상위 도메인은 도메인의 루트 도메인이거나 도메인 계층 구조에서 한 단계 높은 자식 도메인일 수 있습니다. 예를 들어 사용자 지정 도메인이 auth.xyz.example.com인 경우 Amazon Cognito는 xyz.example.com을 IP 주소로 확인할 수 있어야 합니다. 고객 인프라에 대한 우발적인 영향을 방지하기 위해 Amazon Cognito는 사용자 지정 도메인에 대한 최상위 도메인(TLD) 사용을 지원하지 않습니다. 자세한 내용은 도메인 이름을 참조하세요.

  • 사용자 지정 도메인의 하위 도메인을 생성하는 기능 auth를 하위 도메인으로 사용하는 것이 좋습니다. 예: auth.example.com.

    참고

    와일드카드 인증서가 없는 경우 사용자 지정 도메인의 하위 도메인에 대한 새 인증서를 받아야 할 수 있습니다.

  • ACM에서 관리하는 보안 소켓 계층(SSL) 인증서.

    참고

    인증서를 요청하거나 가져오기 전에 ACM 콘솔에서 AWS리전을 미국 동부(버지니아 북부)로 변경해야 합니다.

  • 사용자 지정 도메인 이름을 설정하거나 해당 인증서를 업데이트하려면 Amazon CloudFront 배포를 업데이트할 수 있는 권한이 있어야 합니다. 다음 IAM 정책 명령문을 AWS 계정의 IAM 사용자, 그룹 또는 역할에 연결하여 이렇게 할 수 있습니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontUpdateDistribution", "Effect": "Allow", "Action": [ "cloudfront:updateDistribution" ], "Resource": [ "*" ] } ] }

    CloudFront의 작업 권한 부여에 대한 자세한 내용은 CloudFront에 대한 자격 증명 기반 정책(IAM 정책) 사용을 참조하세요.

    Amazon Cognito는 처음에 IAM 권한을 사용하여 CloudFront 배포를 구성하지만 배포는 AWS에서 관리합니다. Amazon Cognito가 사용자 풀과 연결한 CloudFront 배포의 구성을 변경할 수 없습니다. 예를 들어 보안 정책에서 지원되는 TLS 버전을 업데이트할 수 없습니다.

1단계: 사용자 정의 도메인 이름 입력

Amazon Cognito 콘솔 또는 API를 사용하여 도메인을 사용자 풀에 추가할 수 있습니다.

Original console

Amazon Cognito 콘솔에서 사용자 풀에 도메인을 추가하려면

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

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

  3. [사용자 풀(Your User Pools)] 페이지에서 도메인을 추가할 사용자 풀을 선택합니다.

  4. 왼쪽 탐색 메뉴에서 [도메인 이름(Domain name)]을 선택합니다.

  5. 자체 도메인(Your own domain)에서 자체 도메인 사용(Use your domain)을 선택합니다.

  6. [도메인 이름(Domain name)에 사용자 지정 도메인 이름을 입력합니다. 도메인 이름에는 소문자, 숫자, 하이픈(-)만 사용할 수 있습니다. 첫 번째나 마지막 자리에 하이픈을 사용해서는 안 됩니다. 마침표로 하위 도메인 이름을 구분하세요.

  7. AWS managed certificate(AWS 관리형 인증서)의 경우 도메인에 사용할 SSL 인증서를 선택합니다. ACM으로 관리하는 인증서 중 하나를 선택할 수 있습니다.

    선택할 수 있는 인증서가 없는 경우 ACM을 사용하여 인증서를 프로비저닝할 수 있습니다. 자세한 내용은 AWS Certificate Manager 사용 설명서에서 시작하기를 참조하세요.

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

참고

도메인의 [별칭 대상(Alias target)]을 적어 둡니다. IP 주소 또는 도메인 이름 대신, 별칭 대상이 Amazon CloudFront 배포를 가리키는 별칭 리소스 레코드 세트로 사용됩니다. Amazon Route 53 또는 서드 파티 DNS 공급자를 사용하여 DNS 설정을 구성할 때 [별칭 대상(Alias target)]을 사용합니다.

New console

Amazon Cognito 콘솔에서 사용자 풀에 도메인을 추가하려면

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

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

  3. 도메인을 추가할 사용자 풀을 선택합니다.

  4. [앱 통합(App integration)] 탭을 선택합니다.

  5. [도메인(Domain)] 옆의 [작업(Actions)]을 선택한 다음, [사용자 정의 도메인 생성(Create custom domain)]을 선택합니다.

    참고

    사용자 풀 도메인을 이미 구성한 경우 새 사용자 정의 도메인을 생성하기 전에 [Cognito 도메인 삭제(Delete Cognito domain)] 또는 [사용자 정의 도메인 삭제(Delete custom domain)]를 선택하여 기존 도메인을 삭제합니다.

  6. [사용자 정의 도메인(Custom domain)]에 Amazon Cognito에서 사용할 도메인의 URL을 입력합니다. 도메인 이름에는 소문자, 숫자, 하이픈(-)만 사용할 수 있습니다. 첫 번째나 마지막 자리에 하이픈을 사용해서는 안 됩니다. 마침표로 하위 도메인 이름을 구분하세요.

  7. [ACM 인증서(ACM certificate)]에서 도메인에 사용할 SSL 인증서를 선택합니다. 사용자 풀의 AWS 리전에 관계없이 미국 동부(버지니아 북부)의 ACM 인증서만 Amazon Cognito 사용자 정의 도메인에 사용할 수 있습니다.

    사용 가능한 인증서가 없는 경우 ACM을 사용하여 미국 동부(버지니아 북부)에서 인증서를 프로비저닝할 수 있습니다. 자세한 내용은 AWS Certificate Manager 사용 설명서에서 시작하기를 참조하세요.

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

  9. Amazon Cognito가 [앱 통합(App integration)] 탭으로 돌아갑니다. [도메인의 DNS에 별칭 레코드 생성(Create an alias record in your domain's DNS)]이라는 제목의 메시지가 표시됩니다. 콘솔에 표시된 [도메인(Domain)]과 [별칭 대상(Alias target)]을 적어 둡니다. 이 정보는 다음 단계에서 트래픽을 사용자 정의 도메인으로 보내는 데 사용됩니다.

API

Amazon Cognito API를 사용하여 사용자 풀에 도메인을 추가하려면

2단계: 별칭 대상 및 하위 도메인 추가

이 단계에서는 도메인 이름 서버(DNS) 서비스 공급자를 통해, 이전 단계의 별칭 대상을 다시 가리키는 별칭을 설정합니다. DNS 주소 확인에 Amazon Route 53을 사용하는 경우 Route 53을 사용하여 별칭 대상 및 하위 도메인을 추가하려면 섹션을 선택하세요.

  • DNS 주소 확인에 Route 53을 사용하지 않는 경우 DNS 서비스 공급자의 구성 도구를 사용하여 이전 단계의 별칭 대상을 도메인의 DNS 레코드에 추가해야 합니다. 또한 DNS 공급자가 사용자 지정 도메인에 대한 하위 도메인을 설정해야 합니다.

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

  2. Route 53에 호스팅 영역이 없는 경우 다음 단계를 사용하여 호스팅 영역을 생성해야 합니다. 호스팅 영역이 있다면 3단계를 계속 진행합니다.

    1. Create Hosted Zone(호스팅 영역 생성)을 선택합니다.

    2. [도메인 이름(Domain Name)] 목록에서 사용자 정의 도메인(예: myapp.auth.example.com)의 상위 도메인(예: auth.example.com)을 입력합니다.

    3. {선택 사항} [설명(Comment)]에 호스팅 영역에 대한 설명을 입력합니다.

    4. 퍼블릭 클라이언트가 사용자 정의 도메인을 확인할 수 있도록 호스팅 영역 [유형(Type)]으로 [퍼블릭 호스팅 영역(Public hosted zone)]을 선택합니다. [프라이빗 호스팅 영역(Private hosted zone)]은 선택할 수 없습니다.

    5. 원하는 대로 [태그(Tags)]를 적용합니다.

    6. 호스팅 영역 생성(Create hosted zone)을 선택합니다.

      참고

      사용자 정의 도메인에 대한 새 호스팅 영역을 생성할 수도 있으며, 상위 호스팅 영역에 쿼리를 하위 도메인 호스팅 영역으로 보내는 위임 집합을 생성할 수 있습니다. 이 방법을 사용하면 호스팅 영역의 유연성과 보안이 강화됩니다. 자세한 내용은 Amazon Route 53을 통해 호스트되는 도메인의 하위 도메인 생성을 참조하세요.

  3. 호스팅 영역(Hosted Zones) 페이지에서 호스팅 영역의 이름을 선택합니다.

  4. Create Record Set(레코드 세트 생성)를 선택합니다. 상위 도메인에 대한 DNS 레코드를 추가하고 [레코드 생성(Create records)]을 선택합니다. 다음은 auth.example.com 도메인에 대한 예제 레코드입니다.

    auth.example.com. 60 IN A 198.51.100.1

    참고

    Amazon Cognito는 프로덕션 도메인이 실수로 하이재킹되지 않도록 보호하기 위해 사용자 정의 도메인의 상위 도메인에 대한 DNS 레코드가 있는지 확인합니다. 상위 도메인에 대한 DNS 레코드가 없는 경우 사용자 정의 도메인을 설정하려고 하면 Amazon Cognito에서 오류를 반환합니다.

  5. [레코드 생성(Create record)]을 다시 선택합니다.

  6. 사용자 정의 도메인과 일치하는 [레코드 이름(Record name)](예: myapp)을 입력하여 myapp.auth.example.com에 대한 레코드를 생성합니다.

  7. 이전에 적어 둔 별칭 대상 이름을 [별칭 대상(Alias Target)]에 입력합니다.

  8. [별칭(Alias)] 옵션을 사용하도록 설정합니다.

  9. [다음으로 트래픽 라우팅(Route traffic to)]에서 [CloudFront 배포에 대한 별칭(Alias to Cloudfront distribution)]을 선택합니다. 사용자 정의 도메인을 생성할 때 Amazon Cognito에서 제공한 [별칭 대상(Alias target)]을 입력합니다.

  10. [레코드 생성(Create Records)]을 선택합니다.

    참고

    새 레코드가 모든 Route 53 DNS 서버에 전파되는 데 약 60초가 걸릴 수 있습니다. Route 53 GetChange API 메서드를 사용하여 변경 사항이 전파되었는지 확인할 수 있습니다.

3단계: 로그인 페이지 확인

  • 사용자 지정 도메인에서 로그인 페이지를 사용할 수 있는지 확인합니다.

    브라우저에 이 주소를 입력하여 사용자 지정 도메인과 하위 도메인으로 로그인합니다. 다음은 사용자 지정 도메인이 example.com이고 하위 도메인이 auth인 URL의 예입니다.

    https://myapp.auth.example.com/login?response_type=code&client_id=<your_app_client_id>&redirect_uri=<your_callback_url>

사용자 정의 도메인의 SSL 인증서 변경

필요한 경우 Amazon Cognito를 사용하여 사용자 지정 도메인에 적용한 인증서를 변경할 수 있습니다.

일반적으로 ACM을 사용한 일상적인 인증서 갱신 후에는 이 작업이 필요하지 않습니다. ACM에서 기존 인증서를 갱신할 때 인증서의 ARN은 동일하게 유지되며 사용자 지정 도메인은 새 인증서를 자동으로 사용합니다.

그러나 기존 인증서를 새 인증서로 교체하는 경우에는 ACM이 새 인증서에 새 ARN을 할당합니다. 사용자 지정 도메인에 새 인증서를 적용하려면 Amazon Cognito에 이 ARN을 제공해야 합니다.

새 인증서를 제공한 후, Amazon Cognito가 사용자 지정 도메인에 인증서를 배포하는 데 최대 1시간이 소요됩니다.

시작하기 전에

Amazon Cognito에서 인증서를 변경하려면 먼저 ACM에 인증서를 추가해야 합니다. 자세한 내용은 AWS Certificate Manager 사용 설명서에서 시작하기를 참조하세요.

인증서를 ACM에 추가할 때 미국 동부(버지니아 북부)를 AWS 리전으로 선택해야 합니다.

Amazon Cognito 콘솔 또는 API를 사용하여 인증서를 변경할 수 있습니다.

Original console

Amazon Cognito 콘솔에서 인증서를 갱신하려면

  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cognito/home에서 Amazon Cognito 콘솔을 엽니다.

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

  3. [사용자 풀(Your User Pools)] 페이지에서 도메인을 추가할 사용자 풀을 선택합니다.

  4. 왼쪽 탐색 메뉴에서 도메인 이름(Domain name)을 선택합니다.

  5. 자체 도메인(Your own domain) 아래의 AWS managed certificate(AWS 관리형 인증서)의 경우 새 인증서를 선택합니다.

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

New console

Amazon Cognito 콘솔에서 인증서를 갱신하려면

  1. AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cognito/home에서 Amazon Cognito 콘솔을 엽니다.

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

  3. 인증서를 업데이트할 사용자 풀을 선택합니다.

  4. [앱 통합(App integration)] 탭을 선택합니다.

  5. [작업(Actions)], [ACM 인증서 편집(Edit ACM certificate)]을 차례로 선택합니다.

  6. 사용자 정의 도메인에 연결할 새 인증서를 선택합니다.

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

API

인증서를 갱신하려면(Amazon Cognito API)