カスタムドメイン
サービス公開後にドメインを変更すると、アプリケーションコードや各種連携が旧ドメインを参照し続けるため、トラブルの原因となる可能性があります。スムーズな移行のため、本番テナント作成時にカスタムドメインを設定することを推奨します。
Logto テナントには、デフォルトで無料のドメイン {{tenant-id}}.app.logto が付与されます。しかし、auth.example.com のようなカスタムドメインを利用することで、ユーザー体験やブランド認知をさらに向上させることができます。
カスタムドメインは、以下の用途で利用されます:
- サインイン・登録ページ の URL
- ソーシャルコネクター や エンタープライズ SSO コネクター のコールバック URI
- パスキー および パスキーサインイン 関連の URL(パスキー連携後にドメインを変更すると、MFA やパスキーサインインが利用できなくなる場合があります)
- アプリケーションと Logto を連携するための SDK エンドポイント
- サードパーティプラットフォーム(WeChat、Apple など、ドメイン上に静的ファイル設置が必要なサービス)のドメイン所有権検証ファイル
複数カスタムドメインのサポート
Logto では、1 テナントに対して複数のカスタムドメイン を設定できるようになりました。これにより、複数のブランドドメインからサインインページへアクセス可能です。
プランごとの上限:
- 開発テナント:2 つまで無料でカスタムドメイン追加可能(テスト用途)
- フリープラン:1 つまで無料で追加可能
- プロプラン:1 つまで標準で追加可能、アドオンで最大 10 個まで拡張可能
- エンタープライズプラン:10 個以上や特別な要件の場合は お問い合わせ ください
詳細は Logto 料金表 をご覧ください。
複数カスタムドメインの活用例:
- 地域・言語・アプリケーション・組織・トップレベルドメインごとに異なるドメインを利用
- サインイン前後で一貫したブランド体験を維持し、信頼性を向上
- カスタム UI により、地域やブランドごとに異なる認証体験を提供
Console でカスタムドメインを設定する
Logto Console で新しいカスタムドメインを追加する手順:
-
Console > 設定 > ドメイン に移動します。
-
「カスタムドメインを追加」セクションで、サブドメイン(例:
auth.example.com、auth.us.example.com)を入力し、「ドメインを追加」をクリックします。
-
テーブル内の CNAME 値
domains.logto.appをコピーし、ドメインの DNS プロバイダーでレコードを追加します。
-
検証および SSL 証明書の発行を待ちます。
- カスタムドメインが追加されるまで、10 秒ごとに自動でレコードを検証します。入力したドメイン名や DNS レコードが正しいことを確認してください。
- 検証は通常数分で完了しますが、DNS プロバイダーによっては最大 24 時間かかる場合があります。処理中は他の画面に移動しても問題ありません。
複数のカスタムドメインを追加する場合は、上記手順をドメインごとに繰り返してください。
ドメイン検証ファイル
一部のサードパーティプラットフォームでは、OAuth や SSO などの連携前に、ドメイン所有権を証明するためのテキストまたは JSON ファイルをドメイン上に設置する必要があります。Logto のカスタムドメインは Logto Cloud を指しているため、独自にファイルをアップロードすることはできませんが、Logto 側でファイルをホスティングできます。
カスタムドメインが Active になった後、Console > 設定 > ドメイン で該当ドメインカードを開き、ドメイン検証ファイル セクションからファイルの追加・更新・削除が可能です。
対応パス
- 拡張子付きのルートレベルファイル名(例:
/MP_verify_xxx.txt、/apple-developer-domain-association.txt) /.well-known/配下のパス(例:/.well-known/apple-developer-domain-association.txt)
パスセグメントには英数字・ドット・ハイフン・アンダースコアのみ使用可能です。/.well-known/ 以外のネストされたパスは非対応です。
制限事項
- 1 カスタムドメインあたり 10 ファイルまで
- 1 ファイルあたり最大 16,384 文字
- コンテンツタイプ:プレーンテキスト(
text/plain)または JSON(application/json)
保存後、Logto はカスタムドメイン上で GET および HEAD リクエストに対して完全一致でファイルを返します。例:
https://auth.example.com/MP_verify_xxx.txt
https://auth.example.com/.well-known/apple-developer-domain-association.txt
既存の Logto ルートが優先されます。他の Logto ハンドラーと一致しない場合のみ、検証ファイルが返されます。
トラブルシューティング
SSL 証明書の問題
カスタムドメイン設定時に SSL 証明書の問題が発生した場合、DNS 設定の CAA レコードが原因の可能性があります。CAA レコードは、どの認証局(CA)が証明書を発行できるかを指定します。Logto で SSL 証明書を発行するには、「letsencrypt.org」と「pki.goog」の両方を許可する必要があります。
CAA レコードに関する SSL 証明書のトラブルシューティングは Cloudflare のドキュメント をご参照ください。
「The hostname is associated with a held zone」エラー
カスタムドメイン追加時に「The hostname is associated with a held zone, please contact the owner to have the hold removed」というエラーが表示される場合、そのドメインがすでに Cloudflare のゾーンに登録され、「Zone Hold」状態になっています。詳細は Cloudflare のドキュメント をご覧ください。
この問題を解決するには、ゾーンホールドを解除する必要があります。解除方法は上記リンクをご参照ください。
Cloudflare 管理ドメインでの「接続タイムアウト(エラーコード 522)」
ドメインが Cloudflare で管理されている場合、CNAME レコードの Cloudflare プロキシを無効にしてください。
カスタムドメイン設定後の「Redirect URI does not match」エラー
カスタムドメイン追加後に「redirect URI does not match」エラーが発生した場合、SDK 設定のエンドポイントをカスタムドメインに更新する必要があります。
「プライマリドメイン」について:
Logto には「プライマリドメイン」専用の設定はありません。カスタムドメイン追加後も、カスタムドメインとデフォルトの {tenant-id}.logto.app ドメインの両方が有効です。SDK の endpoint パラメーターで指定したドメインが、認証フローで使用されるドメインとなります。
解決方法:
SDK 初期化時の endpoint パラメーターをカスタムドメインに更新してください:
const client = new LogtoClient({
endpoint: 'https://auth.example.com', // カスタムドメインを指定
appId: 'your-app-id',
// ... その他のオプション
});
また、Console → アプリケーション で登録済みのリダイレクト URI が、利用するドメインと一致しているか確認してください。
注意: Logto はカスタムドメイン用の SSL 証明書を自動で発行・管理します。独自に証明書を設定する必要はありません。
カスタムドメインの利用
設定が完了すると、カスタムドメイン名とデフォルトの Logto ドメイン名の両方がテナントで利用可能になります。ただし、カスタムドメイン名を有効化するには追加設定が必要です。
本記事では、カスタムドメインを auth.example.com と仮定します。
アプリケーションの SDK エンドポイントを更新する
Logto SDK の初期化コードで、エンドポイントのドメイン名を変更してください。
const client = new LogtoClient({
...,// その他のオプション
endpoint: 'https://auth.example.com',
});
Console > アプリケーション のアプリ詳細ページで「エンドポイント & 資格情報」セクションまでスクロールし、ドメインのドロップダウンを切り替えて、アプリ設定に必要なエンドポイントを確認・コピーできます。
その他アプリケーションの認証エンドポイントを変更する
Logto SDK を利用していないアプリケーションの場合も、認証エンドポイントのドメインを更新する必要があります。
認証エンドポイントは、次の well-known URL で確認できます:
https://auth.example.com/oidc/.well-known/openid-configuration
ソーシャルコネクターのリダイレクト URI を更新する
ソーシャルコネクター は OIDC / OAuth プロトコルを利用します。カスタムドメイン経由でサインインする場合、リダイレクト URI も自動的にカスタムドメインが使用されます。ソーシャルプロバイダーの開発者コンソールでリダイレクト URI を更新してください。
手順:
- Console > コネクター > ソーシャルコネクター で該当コネクターを選択します。
- コネクター詳細に表示されるリダイレクト URI をコピーします。Logto は設定済みカスタムドメインごとに全てのリダイレクト URI を表示します。
- このリダイレクト URI をソーシャルプロバイダーの開発者コンソール(Google、GitHub、Facebook など)に追加します。
複数カスタムドメインの場合:
- 設定した各カスタムドメインのリダイレクト URI をすべて追加してください。これにより、どのドメインからでもソーシャルログインが利用可能になります。
- デフォルトの Logto ドメイン(
*.logto.app)も引き続き有効です。デフォルトドメインでのログインも許可したい場合のみ追加してください。 - GitHub コネクターの場合、GitHub ダッシュボードで OAuth アプリではなく GitHub Apps を利用してください。GitHub Apps は複数のリダイレクト URI をサポートしますが、OAuth アプリは 1 つのみです。
OIDC ベースのエンタープライズ SSO コネクターのリダイレクト URI を更新する
OIDC ベースのエンタープライズコネクター もソーシャルコネクターと同様の手順です。
手順:
- Console > エンタープライズ SSO で該当 OIDC コネクターを選択します。
- コネクター詳細からリダイレクト URI をコピーします。Logto は設定済みカスタムドメインごとに全てのリダイレクト URI を表示します。
- アイデンティティプロバイダー (IdP) の設定でリダイレクト URI を更新してください。
複数カスタムドメインの場合: すべての対応するリダイレクト URI を IdP に追加し、どのドメインでもエンタープライズ SSO が利用できるようにしてください。
SAML ベースのエンタープライズ SSO コネクターの ACS URL を更新する
SAML ベースのエンタープライズコネクター では、リダイレクト URI の代わりに Assertion Consumer Service (ACS) URL を使用します。
手順:
- Console > エンタープライズ SSO で該当 SAML コネクターを選択します。
- 「IdP で設定」セクションで、ドメインのドロップダウンを切り替えてカスタムドメインを選択します。
- 対応するドメインの ACS URL をコピーします。
- これらの ACS URL を SAML アイデンティティプロバイダーの設定に追加してください。
重要: 選択したドメインが、SSO 認証後にユーザーがリダイレクトされる先となります。アプリケーションが SAML レスポンスを受け取る想定ドメインに合わせて設定してください。
MFA・サインイン用パスキー
多要素認証 (MFA) 用パスキー および パスキーサインイン は、登録時のドメインに紐付けられます。ユーザーは、パスキーを利用する際、登録したのと同じドメインでサインインする必要があります。
現時点の制限:Logto はクロスドメインでのパスキー認証をサポートしていません。たとえば auth.us.example.com でパスキーを登録した場合、そのパスキーは auth.us.example.com でのみ MFA 検証やパスキーサインインに利用できます。別のカスタムドメインでサインインする際には利用できません。