

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# マネージドログインに独自のドメインを使用する
<a name="cognito-user-pools-add-custom-domain"></a>

アプリケーションクライアントをセットアップしたら、[マネージドログイン](cognito-user-pools-managed-login.md)のドメインサービスでカスタムドメインのユーザープールを設定できます。カスタムドメインを使用すると、ユーザーはデフォルトの[プレフィックスドメイン](cognito-user-pools-assign-domain-prefix.md) `amazoncognito.com` の代わりに、独自のウェブアドレスを使用してアプリケーションにサインインできます。カスタムドメインは、特にルートドメインがアプリケーションをホストするドメインと一致する場合、よく知られているドメイン名を使用してアプリケーションのユーザー信頼を向上させます。カスタムドメインは、組織のセキュリティ要件へのコンプライアンスを強化できます。

カスタムドメインには、ユーザープール、アプリケーションクライアント、所有するウェブドメインなど、いくつかの前提条件があります。カスタムドメインには、米国東部 (バージニア北部) の AWS Certificate Manager (ACM) で管理されるカスタムドメインの SSL 証明書も必要です。Amazon Cognito は、ACM 証明書によって転送中に保護される Amazon CloudFront ディストリビューションを作成します。ドメインを所有している場合、カスタムドメインの CloudFront ディストリビューションにトラフィックを誘導する DNS レコードを作成する必要があります。

これらの要素の準備ができたら、Amazon Cognito のコンソールまたは API を使用してカスタムドメインをユーザープールに追加できます。これには、ドメイン名と SSL 証明書を指定したうえで、指定したエイリアスターゲットで DNS 設定を更新する必要があります。これらの変更を行った後、サインインページがカスタムドメインでアクセス可能であることを検証できます。

カスタムドメインを作成する最も簡単な方法は、Amazon Route 53 のパブリックホストゾーンを使用することです。Amazon Cognito コンソールでは、適切な DNS レコードを数ステップで作成できます。開始する前に、所有しているドメインまたはサブドメイン用の [Route 53 ホストゾーンを作成する](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html)ことを検討してください。

**Topics**
+ [ユーザープールへのカスタムドメインの追加](#cognito-user-pools-add-custom-domain-adding)
+ [前提条件](#cognito-user-pools-add-custom-domain-prereq)
+ [ステップ 1: カスタムドメイン名を入力する](#cognito-user-pools-add-custom-domain-console-step-1)
+ [ステップ 2: エイリアスターゲットとサブドメインを追加する](#cognito-user-pools-add-custom-domain-console-step-2)
+ [ステップ 3: サインインページを検証する](#cognito-user-pools-add-custom-domain-console-step-3)
+ [カスタムドメインの SSL 証明書を変更する](#cognito-user-pools-add-custom-domain-changing-certificate)

## ユーザープールへのカスタムドメインの追加
<a name="cognito-user-pools-add-custom-domain-adding"></a>

カスタムドメインをユーザープールに追加するには、Amazon Cognito コンソールでドメイン名を指定し、[AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/) (ACM) を使用してユーザー管理の証明書を提供します。ドメインを追加したら、Amazon Cognito がエイリアスターゲットを提供するので、これを DNS 設定に追加します。

## 前提条件
<a name="cognito-user-pools-add-custom-domain-prereq"></a>

開始するには、以下が必要です。
+ アプリクライアントを持つユーザープール。詳細については、「[ユーザープールの開始方法](getting-started-user-pools.md)」を参照してください。
+ 所有するウェブドメイン。その*親ドメイン*には、DNS に有効な **A レコード**が必要です。このレコードには任意の値を割り当てることができます。親は、ドメインのルート、またはドメイン階層の 1 つ上の子ドメインです。例えば、カスタムドメインが *auth.xyz.example.com* である場合、Amazon Cognito は *xyz.example.com* を IP アドレスに解決できることが必要です。お客様のインフラストラクチャへの偶発的な影響を防ぐため、Amazon Cognito は、最上位ドメイン (TLD) のカスタムドメインへの使用をサポートしていません。詳細については、「[ドメイン名](https://tools.ietf.org/html/rfc1035)」を参照してください。
+ カスタムドメインのサブドメインを作成する機能。サブドメイン名としては、**auth** をお勧めします。たとえば、「*auth.example.com*」を使用します。
**注記**  
「[ワイルドカード証明書](https://en.wikipedia.org/wiki/Wildcard_certificate)」がない場合は、カスタムドメインのサブドメイン用に新しい証明書の取得が必要な場合があります。
+ 米国東部 (バージニア北部) の ACM によって管理されるパブリック SSL/TLS 証明書。証明書はグローバルサービスである CloudFront のディストリビューションに関連付けられるため、証明書は us-east-1 に配置する必要があります。
+ Server Name Indication (SNI) をサポートするブラウザクライアント。Amazon Cognito がカスタムドメインに割り当てる CloudFront ディストリビューションには SNI が必要です。この設定は変更できません。CloudFront ディストリビューションの SNI の詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[SNI を使用して HTTPS リクエストを処理する](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-https-dedicated-ip-or-sni.html#cnames-https-sni)」を参照してください。
+ ユーザープール認可サーバーがユーザーセッションに Cookie を追加することを許可するアプリケーション。Amazon Cognito は、マネージドログインページに必要ないくつかの Cookie を設定します。`cognito`、`cognito-fl`、`XSRF-TOKEN` などです。個々の Cookie はブラウザのサイズ制限に適合していますが、ユーザープールの設定を変更すると、マネージドログインの Cookie のサイズが大きくなる可能性があります。カスタムドメインの前の Application Load Balancer (ALB) などの中間サービスでは、ヘッダーの最大サイズまたは Cookie の合計サイズが適用される場合があります。アプリケーションが独自の Cookie も設定している場合、ユーザーのセッションはこれらの制限を超える可能性があります。サイズ制限の競合を避けるため、アプリケーションでは、ユーザープールのドメインサービスをホストするサブドメインに Cookie を設定しないようお勧めします。
+ Amazon CloudFront ディストリビューションを更新するアクセス許可。そのためには、次の IAM ポリシーステートメントを AWS アカウントのユーザーにアタッチします。

------
#### [ JSON ]

****  

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

------

  CloudFront でのアクションの承認の詳細については、「[CloudFront でのアイデンティティベースのポリシー (IAM ポリシー) の使用](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/access-control-managing-permissions.html)」を参照してください。

  Amazon Cognito は、最初に IAM アクセス許可を使用して CloudFront ディストリビューションを設定しますが、ディストリビューションは AWSによって管理されます。Amazon Cognito がユーザープールに関連付けた CloudFront ディストリビューションの設定を変更することはできません。例えば、セキュリティポリシーでサポートされている TLS バージョンを更新することはできません。

## ステップ 1: カスタムドメイン名を入力する
<a name="cognito-user-pools-add-custom-domain-console-step-1"></a>

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

------
#### [ Amazon Cognito console ]

**Amazon Cognito コンソールからユーザープールにドメインを追加する。**

1. **[ブランディング]** の下にある **[ドメイン]** メニューに移動します。

1. **[ドメイン]** の横で、**[アクション]** を選択し、**[カスタムドメインの作成]** または **[Amazon Cognito ドメインの作成]** のどちらかを選択します。ユーザープールのカスタムドメインを設定済みである場合は、新しいカスタムドメインを作成する前に、**[カスタムドメインを削除]** を選択します。

1. **[ドメイン]** の横にある **[アクション]** を選択し、**[カスタムドメインを作成]** を選択します。カスタムドメインを設定済みである場合は、新しいカスタムドメインを作成する前に、**[カスタムドメインを削除]** を選択して既存のドメインを削除します。

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

1. **[ACM certificate]** (ACM 証明書) には、ドメインに使用する SSL 証明書を選択します。ユーザープールの に関係なく、Amazon Cognito カスタムドメインで使用できるのは、米国東部 (バージニア北部) AWS リージョン の ACM 証明書のみです。

   利用可能な証明書がない場合は、ACM を使用して米国東部 (バージニア北部) にプロビジョニングできます。詳細については、*AWS Certificate Manager ユーザーガイド*の「[使用開始](https://docs.aws.amazon.com/acm/latest/userguide/gs.html)」を参照してください。

1. **[ブランディングバージョン]** を選択します。ブランディングバージョンは、そのドメインのすべてのユーザーインタラクティブページに適用されます。ユーザープールは、すべてのアプリケーションクライアントでマネージドログインブランディングまたはホステッド UI ブランディングのいずれかをホストできます。
**注記**  
カスタムドメインとプレフィックスドメインを持つことができますが、Amazon Cognito は*カスタム*ドメイン用の `/.well-known/openid-configuration` エンドポイントのみを提供します。

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

1. Amazon Cognito は **[ドメイン]** メニューに戻ります。メッセージ「**Create an alias record in your domain's DNS**」(ドメインの DNS にエイリアスレコードを作成する) が表示されます。コンソールに表示される **[Domain]** (ドメイン) と **[Alias target]** (エイリアスターゲット) を書き留めます。これらは、次のステップでカスタムドメインにトラフィックを転送するために使用します。

------
#### [ API ]

次の [CreateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolDomain.html) リクエスト本文では、カスタムドメインを作成します。

```
{
   "Domain": "auth.example.com",
   "UserPoolId": "us-east-1_EXAMPLE",
   "ManagedLoginVersion": 2,
   "CustomDomainConfig": {
    "CertificateArn": "arn:aws:acm:us-east-1:111122223333:certificate/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
   }
}
```

------

## ステップ 2: エイリアスターゲットとサブドメインを追加する
<a name="cognito-user-pools-add-custom-domain-console-step-2"></a>

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

### エイリアスターゲットおよびサブドメインを現在の DNS 設定に追加する
<a name="cognito-user-pools-add-custom-domain-console-step-2a"></a>
+ DNS アドレス解決に Route 53 を使用していない場合は、DNS サービスプロバイダーの設定ツールを使用して、前のステップで設定したエイリアスターゲットをドメインの DNS レコードに追加する必要があります。また、DNS プロバイダーで、カスタムドメインのサブドメインを設定する必要があります。

### Route 53 を使用してエイリアスターゲットとサブドメインを追加する
<a name="cognito-user-pools-add-custom-domain-console-step-2b"></a>

1. [Route 53 コンソール](https://console.aws.amazon.com/route53/)にサインインします。プロンプトが表示されたら、 AWS 認証情報を入力します。

1. Route 53 にパブリックホストゾーンがない場合は、カスタムドメインの親であるルートでパブリックホストゾーンを作成します。詳細については、「*Amazon Route 53 デベロッパーガイド*」の「[Creating a public hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html)」を参照してください。

   1. **[ホストゾーンの作成]** を選択します。

   1. **ドメイン名**のリストから、カスタムドメイン *myapp.auth.example.com* の親ドメイン *auth.example.com* を入力します。

   1. ホストゾーンの**説明**を入力します。

   1. **パブリックホストゾーン**のホストゾーン **[Type]** (タイプ) を選択して、パブリッククライアントがカスタムドメインを解決できるようにします。**Private hosted zone** (プライベートホストゾーン) はサポートされていません。

   1. 必要に応じて**タグ**を適用します。

   1. [**ホストゾーンの作成**] を選択します。
**注記**  
また、サブドメインのホストゾーンにクエリを送信する親ホストゾーン内の委任セットを持つ、カスタムドメインの新しいホストゾーンを作成することもできます。それ以外の場合は、A レコードを作成します。この方法により、ホストゾーンの柔軟性とセキュリティが向上します。詳細については、「[Amazon Route 53 を通してホストされるドメインのサブドメインの作成](https://aws.amazon.com/premiumsupport/knowledge-center/create-subdomain-route-53/)」をご覧ください。

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

1. カスタムドメインの親ドメインに DNS レコードがまだない場合は、DNS レコードを追加します。次のプロパティを使用して、親ドメインの DNS レコードを作成します。
   + **レコード名**: 空白のままにします。
   + **レコードタイプ**: `A`。
   + **エイリアス**: 有効にしないでください。
   + **値**: 選択したターゲットを入力します。このレコードは*何らかの値*に解決される必要がありますが、レコードの値は Amazon Cognito にとって重要ではありません。
   + **TTL**: 任意の TTL に設定するか、デフォルトのままにします。
   + **ルーティングポリシー**: **[シンプルルーティング]** を選択します。

1. **[レコードを作成]** を選択します。以下に、ドメイン *example.com* のレコードの例を示します。

   `example.com. 60 IN A 198.51.100.1`
**注記**  
Amazon Cognito は、本番ドメインの予想外の乗っ取りから保護するために、カスタムドメインの親ドメインで使用する DNS レコードがあることを確認します。親ドメインの DNS レコードがない場合、カスタムドメインを設定しようとすると、 Amazon Cognito はエラーを返します。Start of Authority (SOA) レコードは、親ドメインの検証のために十分な DNS レコードではありません。

1. 次のプロパティを使用して、カスタムドメインに別の DNS レコードを追加します。
   + **レコード名**: カスタムドメインプレフィックス。例えば、`auth.example.com` のレコードを作成するための `auth`。
   + **レコードタイプ**: `A`。
   + **エイリアス**: 有効にします。
   + **トラフィックのルーティング先**: **[Cloudfront ディストリビューションへのエイリアス]** を選択します。前に記録した**エイリアスターゲット** (例えば、`123example.cloudfront.net`) を入力します。
   + **ルーティングポリシー**: **[シンプルルーティング]** を選択します。

1. **[レコードを作成]** を選択します。
**注記**  
新しいレコードがすべての Route 53 の DNS サーバーに伝播されるまでに約 60 秒かかる場合があります。Route 53 の [GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html) API メソッドを使用して、変更が反映されていることが確認できます。

## ステップ 3: サインインページを検証する
<a name="cognito-user-pools-add-custom-domain-console-step-3"></a>
+ カスタムドメインでサインインページが表示できることを確認します。

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

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

## カスタムドメインの SSL 証明書を変更する
<a name="cognito-user-pools-add-custom-domain-changing-certificate"></a>

必要な場合は、Amazon Cognito を使用して、カスタムドメインに適用した証明書を変更することができます。

通常、これは ACM での定期的な証明書更新後には不要です。ACM で既存の証明書を更新するときは、証明書の ARN がそのまま維持され、カスタムドメインは自動的に新しい証明書を使用します。

ただし、既存の証明書を新しい証明書に置き換える場合は、ACM が新しい証明書に新しい ARN を提供します。新しい証明書をカスタムドメインに適用するには、この ARN を Amazon Cognito に提供する必要があります。

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

**開始する前に**  
Amazon Cognito で証明書を変更する前に、証明書を ACM に追加する必要があります。詳細については、*AWS Certificate Manager ユーザーガイド*の「[使用開始](https://docs.aws.amazon.com/acm/latest/userguide/gs.html)」を参照してください。  
証明書を ACM に追加するときは、 AWS リージョンとして米国東部 (バージニア北部) を選択する必要があります。

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

------
#### [ AWS マネジメントコンソール ]

**Amazon Cognito コンソールで証明書を更新する**

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

1. **[User Pools]** (ユーザープール) を選択します。

1. 証明書を更新するユーザープールを選択します。

1. **[ドメイン]** メニューを選択します。

1. **[Actions]** (アクション) 、**[Edit ACM certificate]** (ACM 証明書の編集) を選択します。

1. カスタムドメインに関連付ける新しい証明書を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

------
#### [ API ]

**証明書を更新する (Amazon Cognito API)**
+ [UpdateUserPoolDomain](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolDomain.html) アクションを使用します。

------