メインコンテンツへスキップ
Login by Auth0 プラグインは、受信した Auth0 のプロフィールデータを基にユーザーアカウントを作成または照合し、ログインフローとアカウント作成フローを自動的に処理します。ログインプロセスとサインアッププロセスは似ており、WordPress データベース内のデータに基づいてアカウントが作成または照合されます。Auth0 経由でログインすると WordPress アカウントが作成され、Auth0 経由でサインアップすると既存の WordPress アカウントと照合されます。 プラグインで User Migration 設定を使用している場合、ログインフローは以下で説明する内容と多少異なります。詳細については、Login by Auth0 WordPress Plugin での User Migration を参照してください。 以下に、このプロセスの手順を示します。
  1. ユーザーは WordPress サイトのログインページにアクセスします。ログインページは、[SITE URL]/wp-login.php にあるメインのログインページ、またはウィジェットやショートコードが含まれるページです。
  2. ユーザーは、ユーザー名とパスワードを入力するか、別のIDプロバイダーを使用するためにソーシャルアイコンをクリックするか、Auth0 のログインフォームである Lock でパスワードレスのプロセスを完了します。
  3. Auth0 は、選択した方法でユーザーの認証を試みます。
    1. username + password またはパスワードレスでのログインやサインアップに失敗した場合、Lock にエラーメッセージが表示されます。
    2. 成功した場合、処理は続行されます。
  4. ユーザーは、プラグインによって生成されたログインチケットと state 値とともに /authorize エンドポイントへリダイレクトされます。これが完了すると、Auth0 のユーザーレコードが作成され、その後の処理は WordPress サイト側で行われます。
  5. 実際のログインプロセスは、Authorization Code FlowImplicit Flow のどちらを使用するかによって異なります。
    1. Authorization Code Flow ログインの場合:
      1. ユーザーはコールバック URL SITE URL/index.php?auth0=1 にリダイレクトされ、URL パラメーターに認可 code と同じ state 値が渡されます。
      2. state 値が検証されます。検証に失敗した場合は、“Invalid state” エラーが表示され、ログイン処理は停止します。state の検証について詳しくは、Auth0 WordPress Plugin によるログインのトラブルシューティングを参照してください。
      3. 転送中に改ざんされていないことを確認するために、IDトークンが検証されます。IDトークンが無効な場合は、エラーメッセージが表示され、ログイン処理は停止します (IDトークンの検証について詳しくは、トラブルシューティングのページを参照してください) 。
      4. ユーザープロファイルのデータは、Machine-to-Machine Flow を使用して Management API 経由で取得されます。詳しくは、Machine-to-Machine Flowを参照してください。
    2. Implicit Flow ログインの場合:
      1. ユーザーはコールバック URL SITE URL/wp-login.php?auth0=implicit にリダイレクトされ、アンカーリンクに IDトークン と同じ state 値が含まれます。
      2. このアンカーリンクは JS で解析された後、同じ 2 つの値を URL パラメーターに含めてコールバック URL SITE URL/index.php?auth0=implicit に POST されます。
      3. 転送中に改ざんされていないことを確認するために、IDトークンが検証されます。IDトークンが無効な場合は、エラーメッセージが表示され、ログイン処理は停止します (IDトークンの検証について詳しくは、トラブルシューティングのページを参照してください) 。
      4. 有効な IDトークン に含まれる情報が、ユーザープロファイルのデータとして使用されます。
  6. Auth0 の認証プロセスが完了すると、プラグインはプロフィールデータに一致する WordPress 内のユーザーを見つけようとします。
  7. プラグインは、サイトでメールアドレスが必須かどうか (プラグイン設定の Advanced タブ) と、受信したプロファイルで email_verified フラグが設定されているかどうかを確認します。
    1. サイトでメールアドレスが必須にもかかわらず、ログインしてきたユーザーからメールアドレスが提供されない場合 (X など、一部のソーシャルIDプロバイダーではメールアドレスが含まれません) 、ログイン処理は “This account does not have an email associated.” というエラーメッセージを表示して停止します。
    2. サイトでメールアドレスが必須で、ログインしてきたユーザーの email_verified フラグが true に設定されていない場合、ログイン処理は “This site requires a verified email address” というエラーメッセージと、確認メールを再送信するリンクを表示して停止します。これは、ユーザーがメールアドレスの確認を正常に完了するまで表示され続けます。
    3. サイトでメールアドレスが必須でない場合、またはログインしてきたユーザーの email_verified フラグが true に設定されている場合は、ログイン処理が続行されます。
  8. プラグインは、受信した Auth0 ユーザー ID と一致する usermeta 値を持つユーザーが WordPress データベース内に存在するかどうかを確認します (つまり、そのユーザーは以前に Auth0 でサインアップまたはログインしています) 。
    1. 受信したユーザー ID を持つユーザーが見つかった場合、ログイン処理は続行されます。
    2. 受信した Auth0 ユーザー ID に一致するユーザーが見つからない場合、プラグインは受信したユーザーに一致するメールアドレスを検索します:
      1. 一致するユーザーが見つかった場合、そのユーザーが選択され、ログイン処理は続行されます。
      2. 一致するユーザーが見つからない場合、プラグインは WordPress サイトで登録が有効になっているかどうかを確認します:
        1. 登録が無効になっている場合、ログイン処理は “ユーザーを作成できませんでした。登録処理は利用できません” というエラーメッセージを表示して停止します。.
        2. 登録が有効になっている場合、新しいユーザーが作成され、ログイン処理は続行されます。
  9. 見つかった、または新規作成されたユーザーは、Auth0 ユーザー ID を含む、渡された Auth0 プロファイルデータで更新されます。
  10. ユーザーは wp_set_auth_cookie を使用して WordPress アカウントにログインし、WordPress コアの do_login アクションが発火します。
  11. ユーザーはサイト上のページにリダイレクトされます。リダイレクト先は、プラグイン設定のAdvancedタブで設定されたデフォルトのページ、ショートコードまたはウィジェットを使用した場合は元のログインURL、またはログイン処理中に別途指定されたページのいずれかです。
ユーザーは現在、Auth0 と WordPress アカウントの両方にログインしており、両者は Auth0 のユーザー ID で関連付けられています。

詳細