
# カスタムログインドメインの設定

`login.acme.com` のようなカスタムドメインは、環境のエンドユーザー向けのすべての画面を提供します。ホスト型ログイン、アカウントポータル、Admin Portal、OIDC と OAuth のエンドポイント、SSO、SAML と SCIM、メール内のリンクが含まれます。お客様のアプリケーション自身のドメインは KeenAuth ではホストされません。`development` 環境にはカスタムドメインがありません。

## 始める前に

- CNAME はドメインのルートには設定できないため、名前は少なくとも 3 つのラベル（サブドメイン）が必要です。
- 名前は IDNA2008 の A ラベルに変換され、小文字になります。`keenauth.app`、`keenauth.com`、またはそのサブドメインにはできず、パブリックサフィックスにもできません。
- 名前はプラットフォーム全体で一意です。解放された名前は、別のアカウントが追加できるまで 30 日間隔離されます。
- Free プラン：ドメインは 1 つで、アカウントに確認済みの支払いカードが必要です。環境ごとに複数のドメインを使うことは Enterprise の機能です。
- 各アカウントは 1 日（UTC）に最大 10 個のドメインを追加できます。拒否された試行も数えられます。

## 手順 1：ドメインを追加する

[カスタムドメインを追加](/docs/api/management/custom-domains/create)を呼び出します。ドメインは `pending_dns` で始まり、レスポンスには公開すべき DNS レコードが一覧されます。

## 手順 2：DNS レコードを 2 つ公開する

| 種類 | 名前 | 値 |
|---|---|---|
| TXT | `_akp-verify.<hostname>` | `idp-verify=<26 文字の base32 トークン>` |
| CNAME | `<hostname>` | `<environment-slug>.<region>.edge.keenauth.app` |

ドメインが有効になった後も、TXT レコードは DNS に恒久的に残してください。これは所有権の証明です。ドメインの持ち主が変わっても、以前の所有者はこのページを配信させ続けることができなくなります。

両方のレコードが確認できる必要があります。チェックは 72 時間は 5 分ごと、その後 30 日間は 1 時間ごとに実行されます。停止したチェックを再開するには、[カスタムドメインを検証](/docs/api/management/custom-domains/verify)を呼び出します。

## 手順 3：CAA レコードを確認する

ドメインまたはその親ドメインに CAA レコードがある場合、KeenAuth が使用する 2 つの ACME 認証局の両方を許可している必要があります。許可されていないと、ドメインは失敗理由 `caa_blocked` とともに `pending_dns` に戻り、ダッシュボードに追加すべき正確な CAA 行が表示されます。CAA レコードが存在しない場合は、何も必要ありません。

## 証明書とライフサイクル

KeenAuth が TLS 証明書を取得し、更新します。証明書は残りの有効期間が 30 日を切ると更新されます。更新が 7 日間失敗すると、`custom_domain.certificate_renewal_failed` イベントとメールが届きます。イベントの配信はまだ提供されておらず、フェーズ 6A で Webhook とともに提供されます。

| 状態 | 意味 | 次の状態 |
|---|---|---|
| `pending_dns` | 追加済み。TXT と CNAME のレコードを待機中 | 両方が確認されると：`issuing` |
| `issuing` | 証明書を発行中 | 発行されると：`active`。CAA でブロックされると：`caa_blocked` とともに `pending_dns`。72 時間以内に発行されないと：`certificate_failed` とともに `pending_dns` |
| `active` | 稼働中 | 日次チェックが失敗すると：`degraded` |
| `degraded` | TXT または CNAME のレコードが 1 日以上ない。ドメインは引き続き配信される | 修正されると：`active`。7 日間修正されないと：`disabled` |
| `disabled` | 停止中。証明書は削除され、そのホストのセッションは無効になる | `:verify` で再開すると：`pending_dns` |
| `released` | ドメインまたは環境が削除された | 30 日の隔離後に名前を再び追加できる |

有効なドメインは 24 時間ごとに 1 回チェックされます。変更を通知されるには、`custom_domain.verified`、`custom_domain.activated`、`custom_domain.degraded`、`custom_domain.disabled` のイベントを購読してください。これらのイベントはまだ提供されておらず、配信はフェーズ 6A で Webhook とイベント API とともに提供されます。

## プライマリドメインと削除

環境のドメインのうち 1 つがプライマリで、メールのリンクはこれを使用します。変更するには、[カスタムドメインをプライマリに設定](/docs/api/management/custom-domains/make-primary)を使用します。環境の発行者がプライマリドメインに従っている場合、プライマリドメインを変更すると発行者も変わります。これは少なくとも 7 日前にスケジュールされる計画的な操作です。

プライマリドメイン、または発行者となっているドメインは削除できません（`409 custom_domain_in_use`）。先に別のプライマリドメインを選択してください。passkey の rpId として使われているドメインも、削除または無効化できません（`409 domain_in_use_by_rp_id`）。

## 1 つの環境に複数のドメイン

Enterprise では、1 つの環境に複数の確認済みドメインを持てます。各ドメインには独自のセッション Cookie があるため、ドメイン間で自動的な SSO は行われません。ドメインをまたぐ passkey は rpId の選択と関連オリジンのリストに依存します。このリストには登録ドメインのラベルが最大 5 つまでで、同じ環境の `active` なドメインのみを含められます。各アプリケーションは、すべてのドメインでそれぞれ独自のブランディングを持てます。[ログインページのブランディング](/docs/guides/branding)を参照してください。
