カスタムドメインでのパスキーの仕組み
WebAuthn Relying Party ID (RP ID)
- パスキーを使用できる場所: パスキーは作成されたドメインに紐づけられます
- セキュリティ上の境界: 許可されていないドメインでパスキーが使用されるのを防ぎます
- ユーザーエクスペリエンス: ユーザーはカスタムドメインごとに個別にパスキーを登録する必要があります
ドメインごとの登録
login.brand1.comで登録したパスキーは、login.brand2.comでは使用できません- 異なるカスタムドメイン経由で認証するユーザーは、ドメインごとにパスキーを登録する必要があります
- 各ドメインのパスキーはそれぞれ独立して管理されます
パスキーのユーザーエクスペリエンスを理解する
単一ブランド、単一ドメイン
- ユーザーが
login.example.comにアクセスする - ユーザーがパスキーを登録する
- 以後、
login.example.com経由のすべてのログインでそのパスキーを使用できる
マルチブランド、別々のドメイン
- ユーザーが
login.brand1.comにアクセスしてパスキーを登録する - その後、同じユーザーが
login.brand2.com(別ブランド) にアクセスする - 以前に登録したパスキーは利用できない
- ユーザーは
login.brand2.com用に新しいパスキーを登録する必要がある
共通ドメインを使うマルチテナント
- ほとんどのユーザーは共通ドメイン経由で認証します
- ユーザーは共通ドメイン用のパスキーを一度登録するだけで済みます
- パスキーはほとんどの認証パターンで一貫して利用できます
- 特別なケース (顧客固有のドメイン) では、別途登録が必要です
設定
テナントでパスキーを有効にする
- Auth0 Dashboard > Security > Multi-factor Auth に移動します
- WebAuthn with FIDO Security Keys を有効にします
- パスキーの設定を行います
パスキー用のカスタムドメインを設定する
- RP ID の形式: カスタムドメイン自体 (例:
login.example.com) - 追加設定は不要: Auth0 により、検証済みの各カスタムドメインに RP ID が自動的に設定されます
RP ID の設定を確認する
- Auth0 Dashboard > ブランディング > カスタムドメイン に移動します
- 対象のカスタムドメインを選択します
- ドメインの詳細画面に RP ID が表示されます
実装パターン
ドメインごとにパスキー登録を促す
ドメインごとのパスキー登録を管理する
ドメインごとの登録ページ
コンテキストに応じた登録プロンプト
- ユーザーが登録プロンプトを閉じたかどうかを追跡する (
localStorageに保存) - 複数回アクセスした後にプロンプトを表示するため、ユーザーのメタデータにある
logins_countを確認する - 現在のドメインですでにパスキーが登録されていないことを確認する
ユーザーとのコミュニケーション
ドメインごとの登録についてユーザーに伝える
“セキュリティ上、パスキーはログインポータルごとに異なります。利用する各ブランドのログインページごとに、個別にパスキーを設定する必要があります。”登録画面の例:
ヘルプドキュメント
制限事項と留意点
現在の制限事項
| 制限事項 | 影響 | 回避策 |
|---|---|---|
| ドメインをまたいでパスキーを共有できません | ユーザーは各カスタムドメインごとに個別にパスキーを登録する必要があります | 認証の大半では共通ドメインを使用するか、各ドメインで登録するようユーザーに案内してください |
| ドメイン間でパスキーを移行できません | 新しいカスタムドメインに移行する際は再登録が必要です | 移行を慎重に計画し、ユーザーに周知したうえで、再登録フローを提供してください |
| 関連オリジンはまだサポートされていません | サブドメイン間または関連するドメイン間でパスキーを共有できません | 今後のリリースで対応予定です。現時点ではドメインごとの登録を使用してください |
- パスキー用にドメインを「関連」として設定できるようになります
- 関連として設定されていれば、ユーザーは
login.brand1.comで登録したパスキーをlogin.brand2.comでも使用できるようになります - マルチブランド実装で、より柔軟に運用できるようになります
移行パターン
単一のカスタムドメインから複数のカスタムドメインへの移行
- 元のドメインを有効なまま維持する: 元のカスタムドメインを共通ドメインとして維持する
- 段階的に展開する: 新しいカスタムドメインを少しずつ導入する
- ユーザーに通知する: 新しいドメインではパスキーの登録が必要になることをユーザーに知らせる
- 再登録フローを提供する: 新しいドメインでもユーザーが簡単にパスキーを登録できるようにする
- 導入状況を確認する: ドメインごとのパスキー登録率を追跡する
「ブランドごとのログインページを導入します。既存のパスキーは引き続き [original domain] でご利用いただけます。新しいログインページにアクセスした際は、そちらでもよりすばやくログインできるよう、パスキーの設定が求められます。」
カスタムドメイン間の移行
old-domain.com から new-domain.com への変更
課題: パスキーは移行できません
移行手順:
- 並行運用: 移行期間中は両方のドメインを同時に運用する
- 登録済みパスキーの把握: 旧ドメインでパスキーを登録しているユーザーを追跡する
- 再登録を促す: ユーザーが新しいドメイン経由でログインした際に、パスキーの再登録を促す
- 猶予期間: 移行期間中は旧ドメインを引き続き有効にしておく
- 旧ドメインの廃止: 利用が定着したら、旧ドメインを廃止する
テスト
ドメインごとのパスキー登録をテストする
- テスト用のカスタムドメインを設定する: 開発用テナントで複数のカスタムドメインを設定します
- 登録フローをテストする: 1 つのカスタムドメイン経由でパスキーを登録します
- 分離を確認する: そのパスキーが他のカスタムドメインでは使えないことを確認します
- 再登録をテストする: 追加のドメインでパスキーを登録します
- クロスブラウザテスト: 異なるブラウザーやデバイスでテストします
自動テスト
ベストプラクティス
- 共通ドメインを使用する: パスキー登録が必要なドメイン数を最小限に抑えるため、共通のカスタムドメインを使用します
- 明確に伝える: ドメインごとに登録が必要であることをユーザーに周知します
- 戦略的に案内する: ユーザーが継続利用していることを確認してから登録の案内を表示します (例: 3回以上ログインした後)
- 登録状況を把握する: どのユーザーがどのドメインでパスキーを登録したかを把握します
- サポートを提供する: パスキー管理に関する分かりやすいドキュメントとサポートを提供します
- 十分にテストする: 本番デプロイ前に、すべてのカスタムドメインでパスキーフローを十分にテストします
- 移行を計画する: カスタムドメインを変更する場合は、ユーザーによる再登録を考慮して計画します
- 導入状況を監視する: ドメインごとのパスキー登録率と利用率を追跡します
トラブルシューティング
カスタムドメインでPasskeyが機能しない
- ユーザーが登録時とは異なるカスタムドメインを使用している
- ブラウザーの互換性の問題
- パスキーがデバイスから削除されている
- ユーザーが正しいカスタムドメインを使用していることを確認する
- ブラウザーがWebAuthnをサポートしているか確認する
- 必要に応じて、ユーザーにパスキーを再登録してもらう
複数の登録に関してユーザーが混乱している
- ドメインごとのパスキーについて明確に案内する
- ユーザーがどのドメインでパスキーを登録済みか表示する
- ユーザーが新しいドメインを訪れた際に登録を促す