-
ユーザーがWordPressサイトのログインページにアクセスします。これは、
[SITE URL]/wp-login.phpにあるメインのログインページ、またはウィジェットやショートコードを含むページである場合があります。 - ユーザーはユーザー名とパスワードを入力するか、別のアイデンティティプロバイダーを使うためにソーシャルアイコンをクリックするか、またはLockのAuth0ログインフォームでパスワードレスの手順を完了します。
-
Auth0 は、選択された方法を使ってユーザーの認証を試みます。
- ユーザー名 + パスワード、またはパスワードレスでのログインまたはサインアップに失敗すると、Lock にエラーメッセージが表示されます。
- 成功した場合は、処理が続行されます。
-
ユーザーは、プラグインによって生成されたログインチケットと
stateの値を含めて/authorizeエンドポイントにリダイレクトされます。これが完了すると Auth0 のユーザーレコードが作成され、以降の処理は WordPress サイト上で行われます。 -
実際のログインプロセスは、認可コードフロー と Implicit Flow のいずれを使用しているかによって異なります:
-
認可コードフローでのログインの場合:
- ユーザーは、認可コードと同じ
state値が URLパラメーターに含まれたコールバックURLSITE URL/index.php?auth0=1にリダイレクトされます。 state値がバリデーションされます。バリデーションに失敗した場合は、“Invalid state” エラーが表示され、ログインプロセスは停止します。state のバリデーションの詳細については、Login by Auth0 WordPress Plugin のトラブルシューティング を参照してください。- 転送中に改変されていないことを確認するため、ID トークンが検証されます。ID トークンが無効な場合は、エラーメッセージが表示され、ログインプロセスは停止します (ID トークンの検証の詳細については、Troubleshooting ページを参照してください)
- ユーザープロファイルデータは、Machine-to-Machine Flow を使用して Management API 経由で取得されます。詳細については、Machine-to-Machine Flow を参照してください。
- ユーザーは、認可コードと同じ
-
Implicit Flow でのログインの場合:
- ユーザーは、ID トークンと同じ
state値がアンカーリンクに含まれたコールバックURLSITE URL/wp-login.php?auth0=implicitにリダイレクトされます。 - このアンカーリンクは JS で解析された後、それら2つの値を URLパラメーターに含めて、コールバックURL
SITE URL/index.php?auth0=implicitに POST されます。 - 転送中に改変されていないことを確認するため、ID トークンが検証されます。ID トークンが無効な場合は、エラーメッセージが表示され、ログインプロセスは停止します (ID トークンの検証の詳細については、Troubleshooting ページを参照してください)
- 有効な ID トークン内の情報が、ユーザープロファイルデータとして使用されます。
- ユーザーは、ID トークンと同じ
-
認可コードフローでのログインの場合:
- Auth0認証が完了すると、プラグインはそのプロファイルデータをWordPress内のユーザーと照合しようとします。
-
プラグインは、サイトでメールアドレスが必須かどうか (プラグインの設定にあるAdvancedタブ) と、渡されたプロファイルで
email_verifiedフラグが設定されているかどうかを確認します。- サイトでメールアドレスが必須で、ログインしてきたユーザーがメールアドレスを提供していない場合 (X など、一部のソーシャルアイデンティティプロバイダーではメールアドレスが含まれません) 、“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アカウントにログインされ、コアのdo_loginアクションが発火します。 - ユーザーはサイト上のページにリダイレクトされます。リダイレクト先は、プラグインの設定 Advanced タブで設定されたデフォルトのページ、ショートコードまたはウィジェットが使用された場合は元のログインURL、またはログインプロセス中に別途指定されたページです。
WordPress との連携
WordPress サイトで Auth0 WordPress プラグインを使用する際の認証プロセスについて説明します。
Login by Auth0 プラグインは、Auth0 から渡されるプロファイルデータを使ってユーザーアカウントを作成または照合し、ログインフローとアカウント作成フローを自動的に処理します。ログインプロセスとサインアッププロセスはよく似ており、WordPress データベース内のデータに基づいてアカウントが作成または照合されます。Auth0 経由でログインすると WordPress アカウントが作成され、Auth0 経由でサインアップすると既存の WordPress アカウントと照合されます。
プラグインでユーザー移行設定を使用している場合、ログインフローは以下で説明するものとは少し異なります。詳しくは、Login by Auth0 WordPress Plugin におけるユーザー移行をご覧ください。
以下は、そのプロセスの手順です。