WordpressプラグインのLogin by Auth0のトラブルシューティング
以下ではトラブルシューティングでよくある質問をいくつか説明します。これらで問題が解消されない場合には、次を検討してください。
プラグインを初めてセットアップしているか、ユーザーのログインで問題が起きている場合には、「Login by Auth0を構成する」をお読みください。
Auth0やプラグインの使い方に関するご質問は、コミュニティサイトに投稿するか、プラグインのWordPressサポートフォーラムでリクエストを作成します。
他のドキュメントを参照して、別の回答を見つけるには、サポートサイトをご利用ください。Auth0の有料プランをお持ちの方は、トラブルチケットを送信すると、より速い対応が受けられます。
「無効な状態」のエラーメッセージが表示され、ログインできない
状態検証はバージョン3.6.0で追加されたセキュリティ機能です。通常は、キャッシュされたコールバックURLがこのエラーメッセージの原因となります(キャッシュされるべきではないコールバックURLについては、アプリケーションの設定を確認してください)。詳細については、「WordPressプラグインの無効な状態エラーのトラブルシューティング」をお読みください。
ログインで問題が起きているか、カスタムデータベースを使用したメールやパスワードの変更で問題が起きている
可能性のある解決方法については、「WordPressプラグインのLogin by Auth0でユーザーを移行する」をお読みください。
「無効なIDトークン」または「期限切れのIDトークン」のエラーメッセージが表示され、ログインできない
これは通常、サーバーの時刻設定が間違っていることが原因になります。エラーメッセージが「早すぎる」と告知している場合には、サーバーの時刻が将来に設定されています。トークンの有効期限が切れていると告知される場合には、サーバーの時刻がかなり過去に設定されています。2つのサーバー間で時刻が異なることはよくあります。サーバー上のPHPでecho date(DateTime::ISO8601)
を出力し、それを現在のUTC時間と秒まで比較します。サーバーの時刻がUCT時間よりも60秒(デフォルトの許容誤差)以上違っている場合には、サーバーのクロックスキューを調整するために許容誤差をより長く設定する必要があります。以下のコードをテーマのfunctions.php
に貼り付けるか、そのコードの実行をプラグインが読み込まれた後、ログインのフックが実行される前に処理できる場所に貼り付けます。
add_filter( 'auth0_jwt_leeway', function( $default_leeway ) { return 120; } );
Was this helpful?
そうすることで、許容誤差が120秒になります。サーバーの時刻にある誤差の程度に合わせて調整が必要かもしれません。
「このアカウントに関連付けられているメールがありません」というエラーメッセージが表示され、ログインできない
このエラーが発生した場合には、Auth0 Dashboardで[Connections(接続)]>[Social(ソーシャル)]を使用(それぞれのプロバイダーを展開)して、それぞれのプロバイダーにメールを要求していることを確認します。すべてのプロバイダーがユーザーのメールアドレスを返すとは限らないことに注意してください(例:X)。その場合には、Auth0 Dashboard(またはAPI)を通していつでもログイン済みのユーザーにメールアドレスを追加することができます。[Users(ユーザー)>[Edit(編集)]を確認します。
email_verified
フラグを提供しない接続(一部のエンタープライズ接続はこれを含めません)や、この検証を特定のソーシャル接続でスキップするには、[Skip Strategies(ストラテジーのスキップ)]フィールドに接続のストラテジーを追加します。このフィールドは[wp-admin]>[Auth0]>[Settings(設定)]>[Advanced(詳細設定)]で[Require Verified Email(検証済みのメールを要求する]スイッチの下にあります。
このフィールドは、Auth0が推奨するセキュリティ対策を迂回するため、必要な場合にのみ使用してください。
「同じメールのユーザーが存在します」というエラーメッセージが表示され、ログインできない
これは、別のAuth0ユーザーに関連付けられているログインに同じメールを使用しているWordPressユーザーが存在することを示しています。プラグインをテストしているか、既存のユーザーを新しいAuth0ユーザーに関連付けたい場合には、以下を行います。
管理者としてログインします。
[wp-admin]>[Users(ユーザー)]に移動して、使用されているメールを検索します。
ユーザーのプロファイルを表示して、一番下までスクロールします。
[Delete Auth0 Data(Auth0データの削除)]をクリックして確認します。
Auth0に同じメールアドレスで2人のユーザーが存在する限り、このエラーメッセージは今後も表示されます。ユーザーアカウントをリンクすることをお勧めします。
「クロスオリジン認証に失敗しました」または「クライアントから検証者が返されませんでした」というエラーメッセージが表示され、ログインできない
[Auth0 Dashboard]>[Applications(アプリケーション)]>[Application(アプリケーション)]に移動して、設定を表示したいWordPressアプリケーションを選択し、[Allowed Callback URLs(許可されているCallback URL)]と[Allowed Origins (CORS)(許可されているオリジン(CORS)]がWordPressサイトと一致していることを確認します。
Chromiumベースのブラウザーを使用している場合には、サードパーティーのクッキーが無効になっていないことを確認してください。詳細については、「クロスオリジン認証」をお読みください。
セットアップウィザードに戻りたいが、そのメニューが表示されなくなった
これは、ドメイン、クライアントIDとクライアントシークレットを使用して、プラグインがすでに構成されていることを示しています。セットアップウィザードを再度実行すると、予測できない結果が起こりかねません。WordPressを初めてセットアップしていて、ログインが行われる前にやり直したい場合には、以下を行います。
[wp-admin]>[Auth0]>[Settings(設定)]>[Basic]に移動します。
ドメインとクライアントIDを削除します。下にスクロールして、[Save Changes(変更を保存)]をクリックします。
[Auth0 Dashboard]>[Applications(アプリケーション)]>[Application(アプリケーション)]に移動します。
WordPressが作成したアプリケーション(WordPressサイトの名前が使用されているはずです)を見つけます。
アプリケーションを選択して、設定を表示します。下にスクロールして、[Delete Application(アプリケーションの削除)]を選択します。
[Auth0 Dashboard]>[Authentication(認証)]>[Database(データベース)]に移動します。
WordPressが作成した接続(WordPressサイトの名前が使用され、名前の先頭に「DB-」が追加されているはずです)を見つけます。
接続を選択して、設定を表示します。下にスクロールして、[I Want To Delete This Connection(この接続を削除)]を選択します。この操作が接続とそれに作成されたすべてのユーザーを削除することに注意してください。
WordPressに戻ります。これで、Auth0の管理者メニューにセットアップウィザードが表示されるようになります。
パスワードレスログインをセットアップしたい
パスワードレスログインは、Auth0対応のWebサイトであれば、メールまたはSMSを使用して実装することができます。WordPressサイトで動作させるには、以下を行います。
プラグイン設定の[Features(機能)]ビューで[Passwordless Login(パスワードレスログイン)]を有効にして保存します。
[Auth0 Dashboard]>[Authentication(認証)]>[Passwordless(パスワードレス)]に移動します。
メールを使用するには、[Email(メール)]接続を有効にして、必要であれば設定を編集します。これは、メールコードでログイン(ユーザーがメールでコードを受け取り、それをサイトのログインフォームに入力)できるようにします。
マジックリンク(メールで受け取ったリンクを使用すると、ユーザーが自動的にログイン)を使用するには、
{passwordlessMethod:'code'}
をプラグイン設定の[Advanced(詳細設定)]タブにある[Extra Settings(追加設定)]フィールドに追加します。SMSでのグインを使用するには、SMS接続を有効にして、手順に従い、Twilioの開発者アカウントをセットアップします(使用の状況によっては有料のTwilioアカウントが必要です)。
上の手順で有効にした接続に応じて、Auth0のログインフォームがパスワードレス方式を選択します。両方の接続を有効にした場合には、デフォルトでメールが選択されます。その場合にSMSを表示するには、メール接続を無効にするか、プラグイン設定の[Advanced(詳細設定)]タブにある[Connections(接続)]フィールドにsms
を追加します。
WordPressで同じユーザーに2つのアカウントがある
一部の状況では、1人のユーザーに2つのアカウントができてしまうことがあります。WordPressで1つのアカウントを削除して、そのアカウントのコンテンツを別のユーザーに移動すると、ユーザーをマージできます。[wp-admin]>[Users]に移動して、削除したいアカウントを選択し、確認ダイアログが表示されたら、コンテンツの移動先となる別のアカウントを選択します。
自分の構成が間違っていてAuth0で認証できないため、プラグインへのアクセスに別の方法が必要である
ログインURLに「?wle
」を追加すると、通常のWordPressログインで有効なWordPressの資格情報を使用して、プラグインにアクセスすることができます。例:http://yourdomain.com/wp-login.php?wle
ユーザーのログインで問題が起きているため、詳細を確認するのにログがある場所を知りたい
プラグインにはエラーログがあり、何が起きているかを確認することができます。それにアクセスするには、Auth0のプラグインメニューにある[Error Log(エラーログ)]サブ項目を使用します。追加情報を確認するには、[Auth0 Dashboard]>[Monitoring(モニタリング)]>[Logs(ログ)]に移動します。
サインアップモードにデフォルトでウィジェットまたはショートコードを表示したい
ウィジェットの[Extra configuration
(追加構成)]設定(またはショートコードのextra_conf
属性)を使用して、{"mode":"signup" }
のJSONを追加すると、プラグインが強制的にこのモードで表示されます。
プラグインでログインを強制すると、ユーザーがログインされない
これは通常、ログイン後にページがキャッシュされていることが原因になります。軽減する方法をホストに問い合わせるか、キャッシュバスティングパラメーターをURLに追加してみてください。詳細については、GitHubにあるこのgistを使用してみてください。
強制ログインのプラグインを使用すると、ユーザーがログインされない
これは、コールバックURLがAllowListに追加されていないために起きます。以下のコードをmy_forcelogin_whitelist
フィルターに追加してみてください。
function wp_auth0_forcelogin_whitelist( $whitelist ) {
if ( ! empty( $_GET['auth0'] ) ) {
$whitelist[] = site_url($_SERVER['REQUEST_URI']);
}
return $whitelist;
}
add_filter('v_forcelogin_whitelist', 'wp_auth0_forcelogin_whitelist', 10, 1);
Was this helpful?
ログイン後にユーザーを特定のURLにリダイレクトしたい
すべてのリダイレクトは実行前にwp_safe_redirect()
を使って確認されます。自身のメインドメイン以外のドメインにリダイレクトしたい場合には、WordPressのallowed_redirect_hosts
フィルターを使用して、そのドメインを確認に追加します。詳細については、wordpress.orgに記載のapply_filters( 'allowed_redirect_hosts', string[] $hosts, string $host )を参照してください。
ログインページ
このプラグインはWordPressの機能を活用し、デフォルトの設定でシームレスに動作します。リダイレクトを追加するには、ユーザーをログインページに送るときにredirect_to
クエリパラメーターをURLに付け加えることができます。ログインが成功すると、プラグインがユーザーをこのURLにリダイレクトします。
また、Auth0のプラグイン設定ページで[Login redirection URL(ログインリダイレクトURL)]の設定を使用することもできます。redirect_to
パラメーターがない場合には、ユーザーのリダイレクトにこのURLが使用されます。
ウィジェット
ウィジェットは自動的に、認証前と同じ場所にユーザーをリダイレクトします。これは、[Redirect after login:
(ログイン後のリダイレクト)]設定を使ってオーバーライドできます。
ショートコード
ショートコードは自動的に、認証前と同じ場所にユーザーをリダイレクトします。これは、redirect_to
属性を使ってオーバーライドできます。
WordPressユーザーをAuth0に移行したい
現在のバージョンのプラグインには、ユーザーをAuth0に自動移行する方法はありませんが、以下を行うことができます。
プラグインは2つのエンドポイントを公開して、カスタムデータベース接続をAuth0へのインポートモードでマークできるようにしています。エンドポイントの詳細については、「データベースからの自動移行を構成する」をお読みください。これらのプラグインスクリプトを使用して、接続をセットアップすることができます。
ユーザーデータをJSONファイルにエクスポートして、Auth0への一括インポートを行うためにアップロードします。移行後に初めてユーザーがAuth0を使ってログインするときには、パスワードをリセットする必要があります。これは、Auth0が移行中にAuth0がWordPressのパスワードを復号化できないためです。JSONファイルを生成する方法については、「ユーザーを一括してインポートする」をお読みください。それから、Auth0 Management APIのユーザーインポートエンドポイントを使用して、ファイルをアップロードする必要があります。
このスクリプトとWordPress XML RPCエンドポイントを使用して、カスタムデータベース接続で移行フローをセットアップします。移行フローの設定については、「データベースからの自動移行を構成する」をお読みください。WordPress XML RPCエンドポイントの詳細については、wordpress.orgに記載のXML-RPC対応に関するドキュメントをお読みください。
dictを設定するときにform_title設定が無視される
プラグインは内部的にdict設定を使用して、Auth0ウィジェットのタイトルを変更します。ユーザーがdictフィールドを設定すると、form_titleがオーバライドされます。
その場合にform_titleを変更するには、以下の属性をdictのJSONに追加する必要があります。
{
"signin": {
"title": "The desired form title"
}
}
Was this helpful?
埋め込まれたAuth0のログインフォームを変更したい
プラグイン設定ページの[Appearance(外観)]タブは数多くのオプションを提供して、サイト(wp-login/php
ページ、ショートカット、またはウィジェット)に埋め込まれたログインフォームの外観や操作性を変更できるようにしています。これらのオプションについては、「Login by Auth0を構成する」をお読みください。これは、Auth0がホストしているユニバーサルログインページのログインフォームには影響しません。
また、[Advanced(詳細設定)]タブには[Extra Settings(追加設定)]フィールドがあり、構成したい設定をすべて含めた有効なJSONオブジェクトを使用することができます。これは、[Appearance(外観)]タブで行った変更内容をオーバライドします。使用できるすべての構成オプションについては、「Lock構成オプション」をお読みください。
外部のスタイルシートやJSファイルはテーマ内で読み込むようにします。ショートコードやウィジェットにはwp_enqueue_scripts
フック、wp-login.php
にはlogin_enqueue_scripts
フックを使用します。詳細については、wordpress.orgに記載のdo_action( 'wp_enqueue_scripts' )
とwordpress.orgに記載のdo_action( 'login_enqueue_scripts' )
を参照してください。
セッションの期限切れが早すぎる
Auth0のプラグインはセッションを扱いません。WordPressの設定を使用しています。ユーザーセッションはデフォルトで2日間維持されます。プラグイン設定の[Advanced(詳細設定)]タブにある[Remember users session(ユーザーのセッションを記憶する)]
設定を有効にすると、セッションを14時間有効のまま維持することができます。
リフレッシュトークンを実装したい
リフレッシュトークンを使用できるように、プラグインのログイン方法には追加のパラメーターが実装されています。これを行うには、auth0_auth_scope
フィルターをauth0_user_login
アクションと組み合わせて使用します。
WordPressで保存されているプロファイルデータは、Auth0のユーザーアカウントとは同期されません。
現時点ではプラグインの制限事項の1つですが、今後のリリースで検討する予定です。ユーザーのパスワードはこの例外になります。WordPressでパスワードが変更されると、データベース接続に設定されているセキュリティポリシーに渡され、Auth0ユーザーでもそのパスワードが更新されます。今後のリリースではエラーメッセージを追加して、パスワードの強度が不十分なときに処理を停止できるようにする予定です。
Social Login with Auth0からLogin by Auth0に移行したい
Auth0はこれまで次の2つのWordPressプラグインを維持してきました。
これら2つのプラグインは実質的には同じですが、Social Login with Authはバージョン3.7.0(2018年8月13日にリリース)を最後に更新されていません。Social Login with AuthからLogin by Auth0への移行は簡単です。Auth0やWordPressでデータが失われることはありません。
Social Login with AuthからLogin by Auth0に移行すると、表示されるバージョン番号が更新されます。(wp-adminでプラグインを更新する場合と同様に)必ず先にステージングや開発用のサーバー上で変更をテストしてください。また、移行プロセス中はログインが動作しないことがあるため、必ずメンテナンスモードのプラグインを使用するか、オフピーク時間内に移行を完了させてください。
最も簡単なのは(S)FTPを使用した移行です。
WordPressサイトに管理者としてログインします。
Login by Auth0をダウンロードして、ローカルに解凍します。
[WordPress admin(WordPress管理)]>[Plugins(プラグイン)]画面に移動して、Social Login with Auth0プラグインを非アクティブ化します。
移行先のサーバーにログインして、
wp-content/plugins
に移動します。pluginsフォルダーから
social-login-with-auth0
を移動して、内容をバックアップします。新しい
auth0
プラグインフォルダーをpluginsディレクトリにアップロードします。WordPressの[Admin(管理)]>[Plugins(プラグイン)]画面に移動して、新しいLogin by Auth0プラグインをアクティブ化します。
FTPを使ってサイトにアクセスできない場合には、WordPressの管理画面から直接処理を実行することができます。
WordPressサイトに管理者としてログインします。
[Auth0]>[Import-Export Settings(インポートとエクスポートの設定)]に移動します。
[Export Settings(エクスポートの設定)]をクリックしてから、[Export(エクスポート)]をクリックします。
WordPressの[Admin(管理)]>[Plugins(プラグイン)]画面に移動して、Social Login with Auth0プラグインを非アクティブ化します。
Social Login with Auth0プラグインを削除して確認します。
[Plugins(プラグイン)]>[Add New(新しく追加)]に移動して、「Auth0」を探します。
Login by Auth0プラグイン(必ず名前を確認してください)の[Install Now(今すぐインストール)]をクリックします。
完了したら、[Activate(アクティブ化)]をクリックします。
[Auth0]>[Settings(設定)]に移動して、以前の設定が残っていることを確認します。残っていない場合には以下を行います。
[Auth0]>[Import-Export Settings(インポートとエクスポートの設定)]に移動します。
以前にエクスポートした設定のJSONを貼り付けて、[Import(インポート)]をクリックします。
設定ファイルのエクスポートのJSONを完全に削除します(機密情報が含まれています)。
これで、新しいプラグインですべてが期待通りに動作するはずです。更新は通常通りに継続されます。