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