Skip to main content
ユーザー移行機能では、カスタムデータベース と呼ばれる Auth0 の中核機能と、Login by Auth0 WordPress Plugin の URL エンドポイントを組み合わせることで、ユーザーが既存の WordPress ユーザーアカウントを使って認証できるようになります。カスタムデータベースについて詳しくは、カスタムデータベース接続 をご覧ください。

仕組み

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

セットアップと設定

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

トラブルシューティング

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

JSON の位置 0 に予期しない token < があります

これは、カスタムスクリプトが利用できる形式でデータを受け取れていないことを意味します。おそらく、データベーススクリプト内の誤った endpoint URL が原因です。 まず、スクリプトの 10 行目にある URL をコピーしてブラウザーに貼り付けてください。endpoint が正しければ、以下の 2 つのメッセージのいずれかが表示されるはずです。 {"status":401,"error":"Unauthorized"} // or {"status":403,"error":"Forbidden"} ホームページまたは 404 が表示される場合は、URL が正しくありません。WordPress の管理画面で 設定 > 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 以降の場合: token の値は configuration 変数に保存されている必要があります。関数の 1 行目に以下を追加し、試す ボタンを使って endpointUrl に保存されている内容を確認してください。
callback(null, configuration); URL が正しいことを確認してもこの問題が解消しない場合は、それらの URL がキャッシュされていたり、何らかの形で制限されたりしていないかをホストに確認してください。

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

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

Forbidden

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

未認可

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

未認可: Authorization ヘッダーがありません

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

無効なトークン

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

無効な資格情報

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

Email を変更できない、またはユーザーデータが誤っている

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