WordPressとの統合
Login by Auth0プラグインは、受信したAuth0プロファイルデータを使用してユーザーアカウントを作成または照合することにより、ログインとアカウント作成のフローを自動的に処理します。ログインプロセスとサインアッププロセスは似ており、WordPressデータベースのデータに基づいてアカウントが作成または照合されます。Auth0経由でログインするとWordPressアカウントが作成され、Auth0経由でサインアップすると既存のWordPressアカウントと一致します。
プラグインでユーザー移行の設定を使用している場合、ログインフローは以下で説明するものと若干異なります。詳細については、「WordPressプラグインのLogin by Auth0でユーザーを移行する」をお読みください。
以下はプロセスの手順です。
ユーザーがWordPressのサイトのログインページにアクセスします。これは、
[SITE URL]/wp-login.php
のメインログインページ、またはウィジェットやショートコードを含むページである可能性があります。ユーザーがユーザー名とパスワードを入力し、ソーシャルアイコンをクリックして別のIDプロバイダーを使用するか、Auth0ログインフォームのLockでパスワードレスプロセスを完了します。
Auth0が選択された方法でユーザーの認証を試みます。
ユーザー名とパスワードまたはパスワードレスでログインまたはサインアップが失敗すると、Lockにエラーメッセージが表示されます。
成功すると、プロセスが継続します。
ログインチケットとプラグインによって生成された
state
値を使用して。ユーザーが/authorize
エンドポイントにリダイレクトされます。これが完了すると、Auth0ユーザーレコードが作成され、残りのプロセスはWordPressサイトで実行されます。実際のログインプロセスは、使用しているフローが認可コードフローまたは暗黙フローかによって異なります。
認可コードフローのログインの場合:
認可コードとURLパラメーター内の同じ
state
値を持つコールバックURLのSITE URL/index.php?auth0=1
にユーザーがリダイレクトされます。state
値が検証されます。検証に合格しない場合は、「無効な状態」エラーが表示され、ログインプロセスが停止します。状態検証の詳細については、「WordPressプラグインのLogin by Auth0のトラブルシューティング」をお読みください。IDトークンが検証され、送信中に改ざんされていないことが確認されます。IDトークンが無効である場合は、エラーメッセージが表示され、ログインプロセスが停止します(IDトークンの検証の詳細については、トラブルシューティングのページを参照してください)。
ユーザープロファイルデータは、マシンツーマシンフローを使用してManagement API経由で取得されます。詳細については、「マシンツーマシンフロー」をお読みください。
暗黙フローのログインの場合:
IDトークンとアンカーリンク内の同じ
state
値を持つコールバックURLのSITE URL/wp-login.php?auth0=implicit
にユーザーがリダイレクトされます。このアンカーリンクはJSで解析され、同じ2つの値をURLパラメーターに含めてコールバックURの
SITE URL/index.php?auth0=implicit
にポストバックされます。IDトークンが検証され、送信中に改ざんされていないことが確認されます。IDトークンが無効である場合は、エラーメッセージが表示され、ログインプロセスが停止します(IDトークンの検証の詳細については、トラブルシューティングのページを参照してください)。
有効なIDトークンの情報は、ユーザープロファイルデータとして使用されます。
Auth0の認証プロセスが完了すると、プラグインがプロファイルデータをWordPressのユーザーと照合しようとします。
プラグインがサイトにメールアドレスが必要か(プラグイン設定の[Advanced(詳細)]タブ)、そして受け取るプロファイルに
email_verified
フラグが設定されているを確認します。サイトにメールアドレスが必要で、ユーザーがメールアドレスを提供しない場合(Xなどの一部のソーシャルIDプロバイダーはメールアドレスを含めません)、ログインプロセスが停止し、「このアカウントにはメールが関連付けられていません」というエラーメッセージが表示されます。
サイトにメールアドレスが必要で、ユーザーの
email_verified
フラグがtrue
に設定されていない場合は、ログインプロセスが停止し、「このサイトには確認済みのメールアドレスが必要です」というエラーメッセージと検証メールを再送信するためのリンクが表示されます。これは、ユーザーがメールアドレスを正常に確認するまで表示されたままになります。サイトにメールアドレスが不必要な場合、またはユーザーの
email_verified
フラグがtrue
に設定されている場合は、ログインプロセスが続行されます。
受け取ったAuth0ユーザーIDと一致する
usermeta
値を持つユーザーがWordPressデータベース内に存在するか(ユーザーが以前にAuth0でサインアップまたはログインしたことがあるか)をプラグインが確認します。受け取ったユーザーIDのユーザーが見つかると、ログインプロセスが続行されます。
受け取ったAuth0ユーザーIDのユーザーが見つからない場合、プラグインはユーザーと一致するメールアドレスを探します。
見つかった場合は、そのユーザーが選択され、ログインプロセスが続行されます。
見つからない場合、プラグインはWordPressサイトに登録が有効化されているかを確認します。
登録がオフの場合、ログインプロセスが停止して、「ユーザーを作成できませんでした。登録プロセスは利用できません」というエラーメッセージが表示されます
。
登録がオンの場合は新しいユーザーが作成され、ログインプロセスが続行されます。
見つかったまたは作成されたユーザーは、Auth0ユーザーIDも含めて、受け取ったAuth0プロファイルデータで更新されます。
ユーザーが
wp_set_auth_cookie
を使用してWordPressアカウントにログインし、コアのdo_login
アクションが実行されます。ユーザーがサイトのページにリダイレクトされます。このページは、プラグイン設定の[Advanced(詳細)]タブで設定されたデフォルトページ、ショートコードまたはウィジェットが使用された場合の元のログインURL、またはログインプロセス中に提供された別のページである可能性があります。
これで、ユーザーがAuth0とWordPressのアカウントにログインし、この2つがAuth0ユーザーIDを使って関連付けられます。