データベース接続でのパスワードレスは、クラシックログインではサポートされていません。API でデータベース接続のパスワードレス認証を使用するには、Authentication API を使用したデータベース接続でのパスワードレス認証をお読みください。
仕組み
- エンドユーザーは、ログインに使用する識別子を入力します。パスワードレス認証は、Auth0 Universal Login または Authentication API を介して利用できます。
- Auth0 は、データベース接続で設定されている各識別子に対応する認証方法を確認します。
- ユーザーには、
default_methodと利用可能な認証方法に基づいて、最適な選択肢が表示されます (たとえば、メールまたは電話で OTP を受け取る、またはパスワードを入力する、など) 。 - OTP が認証方法として選択された場合、Auth0 はユーザーのメールアドレスまたは電話番号にコードを送信します。
- ユーザーがコードを入力すると認証されます。パスキーを設定している場合は、段階的なパスキー登録が求められます。
始める前に
- テナントで Identifier-First Authentication Profile を使用するよう設定してください。
- 電話ベースの OTP (SMS または Voice) を使用する予定がある場合は、Branding > Phone Provider にある Unified Phone Experience 設定を有効にする必要があります。
- データベース接続で Attributes を有効にする必要があります。
- 既存の (レガシーな) パスワードレス接続を、データベース接続でのパスワードレス認証と併用する予定があり、既存のパスワードレス接続で Unified Phone Provider を使用する設定を行いたくない場合:
- Auth0 Dashboard > Authentication > Passwordless に移動します。
- SMS の Configure を選択します。
- Use Tenant-Level Messaging Provider 設定が無効になっていることを確認します。
属性 (識別子) を設定する
メール識別子と電話識別子では、パスワードが有効化されていない場合、サインアップ時に OTP 検証を有効にしておく必要があります。また、サインアップ時にはメール属性と電話属性を任意項目として設定できるため、ユーザーはメールのみ、または電話番号のみでサインアップできます。
ユーザーが Email OTP で認証すると、そのユーザーのプロファイルでは
email_verified が自動的に true に設定されます。ユーザーが Phone OTP で認証すると、phone_verified が自動的に true に設定されます。
詳しくは、Flexible Identifiers の属性を有効化して設定するを参照してください。
新しいデータベース接続を作成する
- Auth0 Dashboard
- Management API
- Auth0 Dashboard > Authentication > Database に移動し、Create DB Connection を選択して接続を作成します。
- 接続に一意の名前を入力します。
- エンドユーザーがログインまたはサインアップに使用する属性を 1 つ以上選択します。
- 認証方法を 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 の入力を求められます。
- 保存 を選択します。
-
選択した識別子に対応する認証方法を設定します。
phone_otpおよび/またはemail_otpが設定されていない場合、パスワードは無効にできません。 -
Password settings で Policy を選択し、次の項目を Block に設定します。
- Login での Password
- Signup での Password
- セルフサービスの change password (自動的に更新されます)
-
Support users without a password をオンにします。
Support users without a password をオンにしないと、エラーが発生する場合があります。
- 保存 を選択します。表示された prompt で、既存のユーザーに影響する可能性があることを理解したうえで Continue を選択します。
- アプリケーション タブに移動し、アプリケーションまたは API でこの接続を有効にします。
既存の接続を更新する
- Auth0 Dashboard
- Management API
- 接続を開く: Auth0 Dashboard > Authentication > Database に移動し、更新する接続を選択します。
- Attributes を有効化する: Attributes タブで Activate を選択し、新しい Attributes Configuration を有効化します。
-
Email 属性と Phone 属性を追加する: + Add Attributes を選択し、まだ追加されていない場合は Email と Phone Number を追加します。
完全なパスワードレス (OTP) 接続では、
username識別子 はサポートされていません。 -
OTP 認証方法を有効にする: Authentication Methods タブで以下を設定します。
- Phone を Allow Phone OTP に設定し、変更を保存します。
- Email を Allow Email OTP に設定し、変更を保存します。
-
パスワード認証をブロックする: Password settings で Policy を選択し、以下の項目を Block に設定します。
- Password on Login
- Password on Signup
- Self-service change password
Support users without a password をオンにしないと、エラーが発生する場合があります。 - 保存: 保存 を選択します。
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 > トリガー > password-reset-post-challenge の event.authentication オブジェクトでは、次の属性を利用できます。
例
event.authentication.methods を参照して、どのパスワードレス認証要素でチャレンジが完了したかを判定し、その情報を ID トークンのカスタムクレームとして追加します。
利点
- 実装の簡素化: 設定・管理する接続の数を減らせます。データベース接続とあわせてソーシャル/フェデレーション接続を使用する場合を除き、アカウントリンクは不要です。
- ユーザーエクスペリエンスの向上: Universal Login の同じ identifier-first エクスペリエンス内で、メールベースおよび電話ベースの OTP、パスワード、パスキー、ソーシャル/フェデレーションログインを組み合わせて提供できます。
- 柔軟なサインアップフロー: サインアップ時にメール属性と電話属性を任意に設定できるため、ユーザーはメールだけ、または電話番号だけでサインアップできます。モバイルファーストやメールのみのエクスペリエンスに最適です。
- 音声OTP: Unified Phone Experience で設定すると、音声OTP を第1認証要素として利用できます。