メインコンテンツへスキップ
ユーザー移行機能では、Custom Databases と呼ばれる Auth0 のコア機能と、Login by Auth0 プラグインの URL エンドポイントを組み合わせることで、既存の WordPress ユーザーアカウントを使用して認証できるようにします。カスタムデータベースの詳細については、Custom Database Connections を参照してください。

仕組み

データ移行を有効にすると、プラグインは Auth0 が WordPress アカウントを使ってユーザーを認証できるようにする 2 つのセキュアなエンドポイントを公開します。これらのエンドポイントはシークレットトークンで保護されており、Auth0 が使用する IP アドレスのみを許可するように設定できます。 ログインフローは次のとおりです。
  1. ユーザーが Auth0 のログインフォーム (サイトに埋め込まれたもの、または Auth0 でホストされているもの) からログインを試みます。
  2. Auth0 が、指定された認証情報に対応するユーザーをデータベース接続内で見つけられない場合、ユーザーの認証情報と移行トークンを使って、WordPress サイト上の Migration エンドポイントを呼び出します。
  3. プラグインは、指定された username またはメールアドレスに一致するユーザーを WordPress データベース内で見つけ、パスワードを検証します。
  4. ユーザーを正常に認証できた場合、Auth0 はそのサイトのデータベース接続にユーザーを作成し、ユーザーを認証してログインさせます。
  5. 次回以降ユーザーがログインするときは、Auth0 のユーザーが使用され、Migration エンドポイントはスキップされます。
ユーザー移行は、サイトを初めて Auth0 に接続するときに設定する必要があります。すでにユーザーが存在するデータベース接続でカスタムデータベーススクリプトを有効化または無効化しようとすると失敗します。モードの切り替えの詳細については、トラブルシューティング セクションを参照してください。

セットアップと設定

ユーザー移行 を構成する最も簡単な方法は、プラグインの初回インストール時にセットアップウィザードを使用することです。手順の詳細については、Login by Auth0 のインストールを参照してください。 ユーザー移行 のセットアップウィザードを完了できなかった場合や、手順をより詳しく確認したい場合は、以下の手順に従ってください。ここでも、ユーザーが 1 人も存在しないデータベース接続から新規に開始することを前提としています。以下の作業は、トラフィックのないサイト、またはメンテナンスモードを有効にしたサイトで実施してください。
  1. アプリケーションを作成して正しく設定し、そのアプリケーション用の空のデータベース接続を作成して有効にします。これらは、標準のセットアップウィザードのプロセスで作成したものをそのまま使用することも、一から作成することもできます。セットアップウィザードの詳細については、Install Login by Auth0を参照してください。
  2. WordPress の Auth0 > Settings 画面で、Basic タブの正しいフィールドにアプリケーションのドメイン、クライアントID、クライアントシークレットが保存されていることを確認します。
  3. Advanced ビューで、User Migration Endpoints 設定を有効にし、Save Changes を選択します。定数ベースの設定を使用している場合は、AUTH0_ENV_MIGRATION_WStrue に設定し、AUTH0_ENV_MIGRATION_TOKEN には、16文字以上で、シングルクォートまたはバックスラッシュを含まない安全なランダム文字列を設定します。
  4. 設定欄に セキュリティトークン が表示されているはずです。後の手順でこの値が必要になるため、このページは開いたままにしておいてください。
  5. Auth0 Dashboard で、使用するデータベース接続に移動し、Requires UsernameImport Users to Auth0 を有効にします。
  6. Custom Database ビューを選択し、Use my own database を有効にします。
  7. この設定の下の Database Action Scripts には、Login 用と Get User 用の 2 つのタブがあるはずです。
  8. Login ビューを選択し、既存のコードを削除して、GitHub リポジトリから db-login.js のコードをコピーし、それをコードエディターに貼り付けます。
  9. この手順はバージョン 3.10.0 以前が対象です: {THE_WS_URL} を探し、WordPress インスタンスのサイト URL の末尾に /index.php?a0_action=migration-ws-login を付けたものに置き換えます。サイト URL は、wp-admin の Settings > General 画面で確認できます。完全な URL をブラウザーに貼り付けてテストできます。{"status":401,"error":"Unauthorized"} と表示されるはずです。
  10. この手順はバージョン 3.10.0 以前が対象です: {THE_WS_TOKEN} を探し、ユーザー移行エンドポイント設定に表示されているトークンに置き換えます。
  11. エディターにエラーがないことを確認してください。問題がなければ、上部の Save をクリックしてください。
  12. この手順は 3.11.0 以降向けです: Settings までスクロールし、次の設定変数を追加します。
    • endpointUrl は、WordPress インスタンスのサイト URL (wp-admin > Settings > General > “Site URL” フィールド) の末尾に /index.php?a0_action= を追加した値に設定します。
    • migrationToken は、上記のステップ 4 で確認したセキュリティ トークンの値に設定します。
    • userNamespace は、Auth0 の Application 名、または英字、数字、ダッシュのみを含む任意の値に設定します。
    WordPress プラグインの Custom Database 設定
  13. 上部のTryボタンをクリックし、表示されるフォームに有効なWordPressユーザーアカウントを入力します。すると、“The profile is” に続いて、ユーザーのデータが表示されるはずです。表示されない場合は、以下のTroubleshootingセクションを参照してください。
  14. Get User ビューを選択し、既存のコードを削除して、GitHub リポジトリから db-get-user.js のコードをコピーし、コードエディターに貼り付けます。
  15. この手順は 3.10.0 以前が対象です: {THE_WS_URL} を探し、これを WordPress インスタンスのサイト URL に置き換え、その末尾に /index.php?a0_action=migration-ws-get-user を追加します。サイト URL は、wp-admin の Settings > General 画面で確認できます。完全な URL をブラウザーに貼り付けてテストできます。{"status":401,"error":"Unauthorized"} が表示されれば成功です。
  16. この手順は 3.10.0 以前にのみ適用されます: {THE_WS_TOKEN} を探し、User Migration Endpoints 設定に表示されているトークンに置き換えます。
  17. エディターにエラーがないことを確認してください。問題がなければ、Save をクリックしてください。
  18. 上部のTryボタンをクリックし、表示されたフォームに有効なWordPressユーザーアカウントに関連付けられたメールアドレスを入力します。すると、“The profile is”に続いてユーザーのデータが表示されます。表示されない場合は、以下のTroubleshootingセクションを参照してください。
  19. 新しいブラウザーセッションで、WordPress サイトのログインページに移動し、ログインを試してください (そのユーザーはまだデータベースに存在していない必要があります) 。最初は通常よりログイン処理に少し時間がかかりますが、ログイン自体は成功するはずです。以降のログインはより速くなります。
  20. (任意) 移行エンドポイントのセキュリティをさらに強化するには、WordPress の Auth0 > Settings 画面に移動し、追加のセキュリティを有効にしてから Save Changes をクリックします。別のユーザーでログインを試し、Auth0 が引き続きエンドポイントにアクセスできることを確認してください。
この時点で、ユーザー移行 の設定は完了しており、既存の WordPress ユーザーは Auth0 のデータベース接続に順次移行されます。

トラブルシューティング

ユーザー移行に関する問題は、通常、いくつかの原因に起因します。
  • Custom Database スクリプト内の URL またはトークンが正しくない。
  • IP 許可リストが有効になっているが、IP アドレスが正しくない。
  • WordPress インスタンス上のエンドポイントが制限されている、またはキャッシュされている。
問題のトラブルシューティングを始めるには、Auth0 Dashboard > Authentication > Database で使用中のデータベース接続の Custom Database ビューにある Login スクリプトの Try ボタンを使うのが最適です。以下に、表示される可能性があるエラーメッセージと、その修正に必要な手順を示します。

Unexpected token < in JSON at position 0

これは、カスタムスクリプトが利用できる形式でデータを受け取れていないことを意味します。多くの場合、データベーススクリプト内の endpoint URL が正しくないことが原因です。 まず、スクリプトの 10 行目にある URL をコピーし、ブラウザーに貼り付けてください。endpoint が正しければ、以下 2 つのメッセージのいずれかが表示されるはずです。 {"status":401,"error":"Unauthorized"} // or {"status":403,"error":"Forbidden"} 表示されるのがホームページまたは 404 の場合、URL は正しくありません。WordPress 管理画面の Settings > General > Site URL でサイト URL を確認してください。Login スクリプト には末尾に /index.php?a0_action=migration-ws-login を追加し、Get User スクリプトには末尾に /index.php?a0_action=migration-ws-get-user を追加します。
  • バージョン 3.10.0 以前: URL の値は、スクリプト内の request.post 呼び出しの最初のパラメーターとして記述されているはずです。
  • バージョン 3.11.0 以降: トークンの値は設定変数に保存する必要があります。関数の 1 行目に次のコードを追加し、Try ボタンを使って endpointUrl に何が保存されているか確認してください。
callback(null, configuration); URL が正しいことを確認してもこの問題が解決しない場合は、それらの URL がキャッシュされていたり、何らかの形で制限されていたりしないか、ホスティング事業者に確認してください。

メールアドレスまたはパスワードが正しくありません

これは、ほかに何らかの問題が発生したときに表示されるデフォルトのエラーです。何が起きているのかをトラブルシューティングする最も簡単な方法は、返されるエラーを一時的に出力することです (攻撃者に手がかりを与えかねない情報を表示しないよう、これらはデフォルトで不透明になっています) 。 Login スクリプト の 30 行目で、次のコードを: callback(null); 次のように変更します。 callback(wpUser.error); スクリプトを保存し、接続をもう一度試します。次のいずれかのメッセージが表示され、以下の手順で問題を特定できるはずです。問題を解決したら、スクリプトを元に戻してください。

Forbidden

これは、WordPress インストールで移行エンドポイントが無効になっていることを意味します。WordPress で Auth0 > Settings > Advanced に移動し、User Migration Endpoints を有効にしてください。そこに表示されるトークンが、両方の Custom Database スクリプトで使用されているものと同じであることを確認してください。
  • バージョン 3.10.0 以前: トークン値は、スクリプト内の access_token: の後に記載されている必要があります
  • バージョン 3.11.0 以降: トークン値は設定変数に保存する必要があります。関数の先頭行に次を追加し、Try ボタンを使用して migrationToken に保存されている内容を確認してください。
callback(null, configuration);

Unauthorized

これは、移行用 IP 許可リストが有効になっているものの、送信元 IP アドレスがそのリストに含まれていないことを意味します。Login スクリプトのすぐ下に、IP アドレスの一覧が表示されているはずです。
WordPress User Migration - Auth0 IP アドレス
これらの IP アドレスがすべて、プラグイン内の WordPress の Auth0 > Settings > Advanced に表示されていることを確認してください。
WordPress User Migration - IP ホワイトリスト
Auth0 に表示されている IP アドレスのうち、1 つ以上が WordPress に表示されていない場合は、不足している IP アドレスをそのフィールドに追加し、設定ページを保存してください。あわせて、不足している IP アドレスを記載した Auth0 Community への投稿を作成してください (タグは “wordpress” を付けてください) 。問題の対応に役立ちます。

Unauthorized: Authorization ヘッダーがありません

がデータベーススクリプト (16 行目) に存在しないか、サーバーがヘッダーを正しく処理できていません。Login スクリプト を確認し、トークンが存在し、WordPress 側の値と一致していることを確認してください。トークンが存在し、値も正しい場合は、Authorization ヘッダーを解析できるようにホスティング事業者に相談する必要があります。サーバーのトラブルシューティングについては、Apache 2.4 + PHP-FPM and Authorization headers on stackoverflow.com を参照してください。トークンの取得方法を確認するには、GitHub リポジトリ内のプラグインコードを参照してください。

無効なトークン

データベーススクリプト内のセキュリティトークンが正しくありません。Login スクリプト の16行目を確認し、トークンがWordPressのものと一致していることを確認してください。

無効な認証情報

使用しているメールアドレスまたはパスワードが正しくありません。正しいメールアドレスを入力していること、およびパスワードが正しいことを確認してください。正しいパスワードを使用していることを確認するには、ユーザーのパスワードを別のものにリセットすることもできます。

メールアドレスを変更できない、または誤ったユーザーデータが保存される

Auth0 テナントで複数のカスタムデータベース接続を使用していて、メールアドレスを変更できない場合や、誤ったユーザーに対してユーザーデータが保存される場合は、Auth0 内でユーザー ID が重複している可能性があります。この問題は、3.11.0 をインストールする新規サイトでは修正されています。ただし、それ以前に作成された接続については、以下のいずれかの方法で手動修正が必要です。
  • 保持すべきユーザーデータがない場合 (接続をログイン対応のためだけに使用し、メタデータを保存していない場合) は、上記の手順 (3.11.0 の注記を参照) に従って新しいカスタムデータベース接続を作成し、Application をその新しい接続に切り替えることができます (古い接続は必ずオフにしてください) 。移行は再開されるため、ユーザー体験への影響はありません。
  • Auth0 に保持すべきデータがある場合は、User Import/Export Extension を使用して、ユーザーデータを調整できます。
    1. 上記の手順 (3.11.0 の注記を参照) に従って、新しいカスタムデータベース接続を作成します。
    2. 既存の接続からすべてのユーザーをエクスポートします (切り替え時に取りこぼしが発生しないよう、この作業中はサイトをメンテナンスモードにすることを推奨します) 。
    3. 新しい接続の作成時に使用した名前空間を追加するように、すべてのユーザー ID を変更します。たとえば、ユーザー ID は auth0|123 のような形式から auth0|Your-WP-Site-Name|123 のような形式になります。あわせて、インポートスキーマに従うために必要なほかのフィールドも調整してください。詳細については、Bulk User Import Database Schema and Examples を参照してください。
    4. アプリケーションで新しい接続をオンにし、古い接続をオフにします。
    5. 新しいユーザーデータを新しい接続にインポートし、テストします。
  • 有料アカウントをご利用の場合は、サポートチームに依頼して、ユーザー ID を名前空間付きの形式に変更するデータベース更新スクリプトを実行し、同時にデータベーススクリプトへ名前空間を追加してもらうこともできます (上記 Set Up and Configuration の手順 12) 。