データベース接続でのパスワードレス認証は、Classic Login ではサポートされていません。
仕組み
- エンドユーザーが、Auth0 の Universal Login でログインに使用する識別子を入力します。
- Auth0 は、データベース接続で設定された各識別子に対応する認証方法を確認します。
default_methodと利用可能な認証方法に基づいて、ユーザーに最も適した選択肢が提示されます (たとえば、メールアドレスまたは電話番号で OTP を受け取る、またはパスワードを入力するなど) 。- OTP が選択された認証方法である場合、Auth0 はユーザーのメールアドレスまたは電話番号にコードを送信します。
- ユーザーがコードを入力すると認証されます。パスキーを設定している場合は、段階的なパスキー登録を求められます。
開始する前に
- テナントが Identifier-First Authentication Profile を使用するように設定します。
- 電話番号ベースの OTP (SMS または音声) を使用する予定がある場合は、Branding > Phone Provider で Unified Phone Experience 設定を有効にする必要があります。
- データベース接続で 属性 を有効にする必要があります。
- 既存の (レガシー) パスワードレス接続を、データベース接続でのパスワードレス認証と併用する予定で、かつ既存のパスワードレス接続で Unified Phone Provider を使用するよう設定したくない場合:
- Auth0 Dashboard > Authentication > Passwordless に移動します。
- SMS の Configure を選択します。
- Use Tenant-Level Messaging Provider 設定が無効になっていることを確認します。
属性 (識別子) を設定する
メールアドレス識別子および電話番号識別子では、パスワードが有効になっていない場合、サインアップ時の OTP 検証を有効にしておく必要があります。メールアドレス属性と電話番号属性は、サインアップ時に任意項目として設定できるため、ユーザーはメールアドレスのみ、または電話番号のみでサインアップできます。
ユーザーがメールアドレス OTP で認証すると、プロフィールの
email_verified は自動的に true に設定されます。ユーザーが電話番号 OTP で認証すると、phone_verified は自動的に true に設定されます。
詳しくは、柔軟な識別子向けの属性を有効化して設定するを参照してください。
新しいデータベース接続を作成する
- Auth0 Dashboard
- Management API
- Auth0 Dashboard > Authentication > Database に移動します。接続を作成するには、Create DB Connection を選択します。
- 接続に一意の名前を入力します。
- エンドユーザーがログインまたはサインアップに使用する属性を 1 つ以上選択します。
- 認証方法を選択します。これらの認証方法は、接続の作成後にさらに設定できます。
- 公開エンドポイントを使用したユーザーのサインアップを許可しない場合は、Disable Sign Ups をオンにします。
- この接続をサードパーティアプリケーションで使用する場合は、Promote Connection to Domain Level をオンにします。
- Create を選択します。
- 新しい接続で、Attributes タブを選択します。
- 識別子として Username を無効にするには、Configure を選択し、Use Username as Identifier をオフにします。
- Email と Phone の識別子を設定するには、Configure を選択します。
- Email 属性では、Verification Methods の One-Time Password (OTP) を選択し、完全なパスワードレス構成にするため Verify email on sign up を有効にします。これにより
email_verifiedが自動的に設定されるため、ユーザーにはログイン時とサインアップ時に常に OTP の入力が求められます。
- Save を選択します。
-
選択した識別子に対応する認証方法を設定します。
phone_otpおよび/またはemail_otpが設定されていない場合は、パスワードを無効にできません。 -
Password settings で Policy を選択し、次の項目に対して Block を選択します。
- Password on Login
- Password on Signup
- Self-service change password (自動更新)
- Support users without a password をオンにします。
- Save を選択します。表示されたプロンプトで Continue を選択し、既存のユーザーに影響が及ぶ可能性があることを確認します。
- Applications タブに移動し、アプリケーションまたは API でこの接続を有効にします。
既存の接続を更新する
- Auth0 Dashboard
- Management API
- 接続を開く: Auth0 Dashboard > Authentication > Database に移動し、更新する接続を選択します。
- Attributes を有効にする: Attributes タブで Activate を選択し、新しい Attributes Configuration を有効にします。
-
メールアドレス属性と電話番号属性を追加する: + Add Attributes を選択し、まだ追加されていない場合は Email と Phone Number を追加します。
完全なパスワードレス (OTP) 接続では、username 識別子はサポートされていません。
-
OTP 認証方法を有効にする: Authentication Methods タブで次の操作を行います。
- Phone を Allow Phone OTP に設定し、変更を保存します。
- Email を Allow Email OTP に設定し、変更を保存します。
-
パスワード認証をブロックする: Password 設定で Policy を選択し、次の項目を Block に設定します。
- Login での Password
- Signup での Password
- セルフサービスでのパスワード変更
- 保存: Save を選択します。
Auth0 Actions を使用する
Post-login トリガー
post-login トリガーは、ユーザーの認証後、認可サーバーがトークンを返す前に実行されます。Auth0 Dashboard > Actions > Triggers > Post Login の event.authentication オブジェクトでは、次のメソッドを利用できます。
ユーザーがメールアドレス OTP または電話番号 OTP で認証されると、
email_verified と phone_verified はユーザープロファイルに自動的に設定されます。以前、これらのフラグを手動で設定するために post-login Action を使用していた場合は、そのワークアラウンドを削除できます。event.authentication を使用して、次のことができます。
- ユーザーが完了したパスワードレス認証要素 (
email、sms、tel、またはpwd) を検出する - 認証方法に基づいてトークンにカスタムクレームを追加する
- ユーザーの認証方法に応じて条件付きでロジックを実行する
例
event.authentication.methods を参照して、ユーザーが完了したパスワードレスの認証要素を検出し、それを IDトークン のカスタムクレームとして追加します。
Post-challenge トリガー
post-challenge トリガーは、ユーザーがパスワードリセット、電話番号の検証、MFA などのチャレンジを完了した後に発火します。Auth0 Dashboard > Actions > Triggers > password-reset-post-challenge の event.authentication オブジェクトでは、次の属性を利用できます。
例
event.authentication.methods を読み取って、どのパスワードレス認証要素でチャレンジが完了したかを判別し、それをIDトークンのカスタムクレームとして追加します。
利点
- 実装の簡素化: 設定や管理が必要な接続の数を減らせます。データベース接続と併せてソーシャル/フェデレーション接続を使用しない限り、アカウントリンクは必要ありません。
- ユーザー体験の向上: Universal Login の同一の識別子ファースト体験で、メールアドレスや電話番号ベースの OTP、パスワード、パスキー、ソーシャル/フェデレーションログインを組み合わせて提供できます。
- 柔軟なサインアップフロー: サインアップ時にメールアドレス属性と電話番号属性を任意に設定できるため、ユーザーはメールアドレスのみ、または電話番号のみでサインアップできます。モバイルファーストやメールアドレスのみの体験に最適です。
- 音声 OTP: Unified Phone Experience で設定すると、音声 OTP を第 1 要素として含めることができます。
制限事項
- Universal Login ベースのフローでのみ使用できます。API ベースの認証はまだサポートされていません。
- データベース接続のパスワードレスは、Classic Login ではサポートされていません。
- データベース接続のパスワードレスでは、Implicit Signup & Login はサポートされていません。
- 従来のパスワードレス接続では、サインアップとログインでユーザー体験に違いはありませんでした。データベース接続ではサインアップ時とログイン時の体験が区別されるため、明示的にサインアップまたはログインする必要があります。
- Auth0 アイデンティティを持たないユーザーがログインフローに入った場合、自動的にサインアップされることはありません。OTP の検証後にエラーが返されます。
- Auth0 アイデンティティを持つユーザーがサインアップフローに入った場合は、OTP の検証後にエラーが返されます。