Amazon Cognito
開発者ガイド

ホストされた UI で自分が所有するドメインを使用する

アプリクライアントを設定したら、Amazon Cognito でホストされている UI 用のカスタムドメインでユーザープールを構成できます。カスタムドメインを使用すると、ユーザーは、独自のウェブアドレスを使用して、アプリケーションにサインインできるようになります。

カスタムドメインをユーザープールに追加する

カスタムドメインをユーザープールに追加するには、Amazon Cognito コンソールでドメイン名を指定し、管理する証明書を AWS Certificate Manager (ACM) に指定します。ドメインを追加したら、Amazon Cognito によってエイリアスターゲットが提供されます。これを DNS 設定に追加します。

前提条件

開始する前に、以下が必要です。

  • アプリのクライアントを持つユーザープール。詳細については、「ユーザープールの開始方法。」を参照してください。

  • 所有するウェブドメイン。このルートには、DNS の有効なレコードが含まれます。詳細については、「ドメイン名」を参照してください。

  • カスタムドメインのサブドメインを作成する機能。サブドメインとして [auth] を使用することをお勧めします。たとえば、「auth.example.com」を使用します。

    注記

    ワイルドカード証明書」がない場合は、カスタムドメインのサブドメイン用に新しい証明書の取得が必要な場合があります。

  • ACM によって管理されている Secure Sockets Layer (SSL) 証明書。証明書をリクエストまたはインポートするには、ACM コンソールで AWS リージョンを米国東部 (バージニア北部) に変更する必要があります。

  • カスタムドメイン名の設定や、その証明書の更新を行うには、Amazon CloudFront ディストリビューションを更新するためのアクセス許可が必要です。そのためには、次の IAM ポリシーステートメントを AWS アカウントの IAM ユーザー、グループ、またはロールにアタッチします。

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

    CloudFront でアイデンティティベースのポリシー (IAM ポリシー) を使用する」を参照してください。

ステップ 1: カスタムドメイン名を入力する

ドメインをユーザープールに追加するには、Amazon Cognito コンソールまたは API を使用します。

ドメインをユーザープールに追加するには (Amazon Cognito コンソール)

  1. Amazon Cognito コンソールにサインインします。AWS 認証情報を求められる場合があります。

  2. AWS マネジメントコンソール にサインインして、https://console.aws.amazon.com/cognito/home で Amazon Cognito コンソールを開きます。

  3. [ユーザープールの管理] を選択します。

  4. [ユーザープール] ページで、ドメインを追加するユーザープールを選択します。

  5. 左側のナビゲーションメニューで、[ドメイン名] を選択します。

  6. [Your own domain] で、[Use your domain] を選択します。

  7. [Domain name] にカスタムドメイン名を入力します。ドメイン名で使用できるのは、小文字の英文字、数字、およびハイフンのみです。最初または最後の文字にハイフンを使用しないでください。サブドメイン名は、ピリオドで区切ります。

  8. [AWS managed certificate] で、ドメインに使用する SSL 証明書を選択します。ACM で管理する証明書のいずれかを選択できます。

    選択できる証明書がない場合は、ACM を使用してプロビジョンします。詳細については、『AWS Certificate Manager ユーザーガイド』の「開始方法」を参照してください。

  9. [Save changes] を選択します。

  10. [エイリアスターゲット] を書き留めます。[エイリアスターゲット] は、IP アドレスまたはドメイン名の代わりに、Amazon CloudFront ディストリビューションを指すエイリアスリソースレコードです。

ドメインをユーザープールに追加するには (Amazon Cognito API)

ステップ 2: エイリアスターゲットとサブドメインを追加する

このステップでは、ドメイン名サーバー (DNS) サービスプロバイダーを使用して、前のステップのエイリアスターゲットを指すエイリアスを設定します。DNS アドレスの解決に Amazon Route 53 を使用している場合は、[Route 53 を使用してエイリアスターゲットおよびサブドメインを追加する] セクションを選択します。

エイリアスターゲットおよびサブドメインを現在の DNS 設定に追加するには
  • DNS アドレスの解決に Route 53 を使用していない場合は、DNS サービスプロバイダーを使用して、前のステップのエイリアスターゲットをユーザープールのカスタムドメインのエイリアスとして追加する必要があります。また、DNS プロバイダーで、カスタムドメインのサブドメインを設定する必要があります。

Route 53 を使用してエイリアスターゲットとサブドメインを追加するには
  1. Route 53 コンソールにサインインします。AWS 認証情報を要求される場合があります。

  2. ホストゾーンが Route 53 にない場合は設定します。それ以外の場合は、この手順をスキップしてください。

    1. [Create Hosted Zone] を選択します。

    2. [ドメイン名] リストからカスタムドメインリストを選択します。

    3. [コメント] に、ホストゾーンに関するオプションのコメントを入力します。

    4. [作成] を選択します。

  3. [ホストゾーン] ページで、ホストゾーンの名前を選択します。

  4. [Create Record Set] を選択します。

  5. [エイリアス] オプションで [Yes (はい)] を選択します。

  6. 前のステップで書き留めたエイリアスターゲット名を [エイリアスターゲット] に入力します。

  7. [作成] を選択します。

    注記

    新しいレコードが Route 53 DNS サーバーに伝達されるまでに、しばらく時間がかかります。現在、変更が伝達されたことを確認するには、Route 53 の GetChange API メソッドを使用する方法しかありません。通常、変更は 60 秒以内にすべての Route 53 ネームサーバーに伝達されます。

  8. エイリアスターゲットを使用してサブドメインを Route 53 に追加します。

    1. [ホストゾーン] ページで、ホストゾーンの名前を選択します。

    2. [レコードセットの作成] を選択し、次の値を入力します。

      1. [名前] に、目的のサブドメイン名を入力します。たとえば、作成しようとしているサブドメインが auth.example.com の場合は auth と入力します。

      2. [Type] で、[A - IPv4 address] を選択します。

      3. [エイリアス] オプションで [Yes (はい)] を選択します。

      4. 前のステップで書き留めたエイリアスターゲット名を [エイリアスターゲット] に入力します。

    3. [Create (作成)] を選択します。

      注記

      または、新しいホストゾーンを作成して、サブドメインに関連付けられているレコードを保持します。クライアントがサブドメインのホストゾーンを参照する親のホストゾーンに委任セットを作成することもできます。このメソッドでは、ホストゾーンを管理する場合 (例: ゾーンを編集できるユーザーを制限する場合) の柔軟性が向上します。現在、プライベートホストゾーンへの NS レコードの追加はサポートされていないため、このメソッドは、パブリックホストゾーンにのみ使用することができます。詳細については、「Amazon Route 53 を使用してホストされたドメインのサブドメインを作成する」を参照してください。

ステップ 3: サインインページの確認

  • カスタムドメインでサインインページが表示できることを確認します。

    このアドレスをブラウザに入力して、カスタムドメインとサブドメインでサインインします。以下は、サブドメイン auth を使用したカスタムドメイン example.com のサンプル URL です。

    https://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 に適用します。新しい証明書をカスタムドメインに適用するには、この ARN を Amazon Cognito に適用する必要があります。

新しい証明書の適用後、それが Amazon Cognito によってカスタムドメインに配布されるまで、最大 1 時間かかります。

開始する前に

Amazon Cognito で証明書を変更する前に、証明書を ACM に追加する必要があります。詳細については、『AWS Certificate Manager ユーザーガイド』の「開始方法」を参照してください。

証明書を ACM に追加する場合は、米国東部(バージニア北部) を AWS リージョンとして選択する必要があります。

証明書を変更するには、Amazon Cognito コンソールまたは API を使用します。

証明書を更新するには ( Amazon Cognito コンソール)

  1. AWS マネジメントコンソール にサインインして、https://console.aws.amazon.com/cognito/home で Amazon Cognito コンソールを開きます。

  2. [ユーザープールの管理] を選択します。

  3. [ユーザープール] ページで、ドメインを追加するユーザープールを選択します。

  4. 左側のナビゲーションメニューで、[ドメイン名] を選択します。

  5. [Your own domain] の [AWS managed certificate] で、新しい証明書を選択します。

  6. [Save changes] を選択します。

証明書を更新するには (Amazon Cognito API)