Logto プラグインで WordPress ウェブサイトに認証機能の追加
このチュートリアルでは、公式の WordPress プラグインを使用して WordPress ウェブサイトに Logto を統合する方法を紹介します。
前提条件
- Logto Cloud アカウントまたは セルフホスト Logto。
- 作成された Logto の従来のアプリケーション。
- WordPress プロジェクト:公式の WordPress インストールガイド に従って、WordPress ウェブサイトを設定してから進めてください。
統合
プラグインのインストール
現在、プラグインはまだ審査中で、WordPress プラグインディレクトリにはありません。利用可能になり次第、このページを更新します。
- アップロードから
- 次のリンクのいずれかから Logto WordPress プラグインをダウンロードします:
- 最新リリース:
logto-plugin-<version>.zip
形式のファイルをダウンロードします。
- 最新リリース:
- プラグインの ZIP ファイルをダウンロードします。
- WordPress 管理パネルで プラグイン > 新規追加 に移動します。
- プラグインのアップロード をクリックします。
- ダウンロードした ZIP ファイルを選択し、今すぐインストール をクリックします。
- 有効化 をクリックします。
プラグインの設定
これで、WordPress 管理パネルのサイドバーに Logto メニューが表示されるはずです。Logto > 設定 をクリックしてプラグインを設定します。
プラグインを設定する前に、Logto コンソールで 従来のウェブ アプリケーションを作成しておく必要があります。まだ作成していない場合は、アプリケーションへの Logto 統合 を参照してください。
プラグインを開始するための最小限の設定は次のとおりです:
- Logto エンドポイント:Logto テナントのエンドポイント。
- アプリ ID:Logto アプリケーションのアプリ ID。
- アプリシークレット:Logto アプリケーションの有効なアプリシークレットのいずれか。
すべての値は Logto コンソールのアプリケーション詳細ページで見つけることができます。
値を入力したら、変更を保存 をクリックします(ボタンが見つからない場合はページの下までスクロールしてください)。
リダイレクト URI の設定
リダイレクト URI は、ユーザーが認証された後に Logto がリダイレクトする URL です。また、サインアウト後のリダイレクト URI は、ユーザーがログアウトした後に Logto がリダイレクトする URL です。
サインインフローを説明する非規範的なシーケンス図はこちらです:
サインアウトフローを説明する非規範的なシーケンス図はこちらです:
リダイレクトが必要な理由について詳しくは、サインイン体験の説明 を参照してください。
この場合、Logto コンソールで両方のリダイレクト URI を設定する必要があります。リダイレクト URI を見つけるには、WordPress 管理パネルの Logto > 設定 ページに移動します。リダイレクト URI と サインアウト後のリダイレクト URI フィールドが表示されます。
- リダイレクト URI と サインアウト後のリダイレクト URI の値をコピーし、Logto コンソールの リダイレクト URI と サインアウト後のリダイレクト URI フィールドに貼り付けます。
- Logto コンソールで 変更を保存 をクリックします。
チェックポイント:WordPress ウェブサイトのテスト
これで、WordPress ウェブサイトで Logto 統合をテストできます:
- 必要に応じてシークレットブラウザウィンドウを開きます。
- WordPress ウェブサイトを訪問し、該当する場合は ログイン リンクをクリックします。または、直接ログインページ(例:
https://example.com/wp-login.php
)を訪問します。 - ページは Logto サインインページにリダイレクトされるはずです。
- サインインまたはサインアッププロセスを完了します。
- 認証が成功すると、WordPress ウェブサイトに戻り、自動的にログインされるはずです。
- ログアウト リンクをクリックして WordPress ウェブサイトからログアウトします。
- Logto サインアウトページにリダイレクトされ、その後 WordPress ウェブサイトに戻るはずです。
- WordPress ウェブサイトからログアウトされているはずです。
認証設定
プラグインはそのままでも動作しますが、Logto プラグイン設定ページで認証設定をカスタマイズして、ニーズに合わせることができます。
スコープ
Logto はスコープを使用して、アプリケーションと共有される情報を制御します。Logto WordPress プラグインは、認証プロセスを処理するために Logto PHP SDK を使用しており、デフォルトで次のスコープが含まれています:
openid
: OpenID Connect に必要な基本スコープ。profile
: ユーザーの基本的なプロフィール情報を取得するため。offline_access
: オフラインアクセスのためのリフレッシュ トークンを取得するため。
スコープについての詳細は、スコープとクレームを参照してください。
プラグインはデフォルトでさらに 2 つのスコープを追加します:
email
: ユーザーのメールアドレスを取得するため。roles
: Logto でのユーザーのロールを取得するため。
これらの 2 つのスコープは、Logto のメールとロールを WordPress のメールとロールにマッピングするために使用されます。プラグイン設定の Scopes フィールドを編集してスコープをカスタマイズできます。
email
または roles
スコープを削除すると、プラグインの一部の機能が正しく動作しなくなります。
追加パラメータ
認証リクエストに追加のパラメータを追加して、認証プロセスをカスタマイズすることができます。例えば、first_screen
パラメータを追加して、認証プロセスで最初に表示する画面を決定できます。
追加パラメータについての詳細は、認証パラメータを参照してください。
確認済みメールの要求
デフォルトでは、プラグインは Logto で確認済みのメールアドレスを持つユーザーが WordPress ウェブサイトにログインすることを要求します。確認済みのメールアドレスを持たないユーザーがログインしようとすると、プラグインはエラーをスローします。
この機能は、プラグイン設定で Require verified email オプションのチェックを外すことで無効にできます。
組織 ID の要求
特定の組織メンバーシップを持つユーザーのみが Logto で WordPress ウェブサイトにログインできるようにすることができます。組織 ID が指定されると、プラグインはユーザーの ID トークンに指定された組織 ID が含まれているかどうかを確認します。含まれていない場合、エラーがスローされます。
組織について詳しく知るには、組織を参照してください。
認可設定
認証 (Authentication) に加えて、Logto は ロールベースのアクセス制御 (RBAC) などの認可 (Authorization) 機能も提供します。独自のアプリケーションを開発する場合、RBAC を実装するにはカスタムコードが必要ですが、Logto WordPress プラグインは Logto のロールを WordPress のロール にマッピングするための組み込みの方法を提供します。
ロールマッピング
Logto WordPress プラグインを使用すると、Logto のロールを WordPress のロールにマッピングできます。これにより、Logto でユーザーに異なるロールを割り当てることができ、ユーザーがログインするとプラグインが自動的に対応する WordPress のロールをそのユーザーに割り当てます。
ロールをマッピングするには、Role mapping セクションで Add をクリックして新しいロールマッピングを追加します。例えば、Logto の group:editors
ロールを WordPress の Editor
ロールにマッピングしたい場合、次の値で新しいロールマッピングを追加できます:
- Logto ロール:
group:editors
- WordPress ロール:
editor
(WordPress のEditor
ロールのロールスラッグ)
すべての WordPress ロールのロールスラッグは、Roles and Capabilities ドキュメントで確認できます。
ロールスラッグは大文字と小文字を区別します。Editor
の代わりに editor
と入力しないと、ロールマッピングは機能しません。
次に、Logto コンソールに移動し、左側のサイドバーで Roles をクリックします。group:editors
という名前の新しいロールを作成し、それをユーザーに割り当てます。その後、そのユーザーで WordPress ウェブサイトにログインします。ユーザーが WordPress で Editor
ロールに割り当てられていることが確認できます。
ユーザーがすでに WordPress ウェブサイトにログインしている場合、ロールマッピングはユーザーがログアウトして再度ログインするまで有効になりません。
複数のロールマッピングを追加して、複数の Logto ロールを WordPress ロールにマッピングすることもできます。現在、プラグインは優先順位の順序でロールをマッピングしようとします。例えば、次のロールマッピングがある場合:
- Logto ロール:
group:editors
, WordPress ロール:editor
- Logto ロール:
group:authors
, WordPress ロール:author
- Logto ロール:
group:subscribers
, WordPress ロール:subscriber
そして、ユーザーが Logto で group:editors
と group:authors
の両方のロールを持っている場合、そのユーザーは WordPress で Editor
ロールに割り当てられます。
高度な設定
セッションの記憶
デフォルトでは、プラグインはユーザーのセッションを 2 週間記憶します。つまり、ユーザーが WordPress ウェブサイトにログインすると、2 週間ログインを求められません。この時間を 2 日に短縮するには、プラグイン設定で Remember session オプションのチェックを外します。
プロフィールの同期
デフォルトでは、プラグインはログイン時にユーザーのプロフィールを同期します。つまり、ユーザーが WordPress ウェブサイトにログインすると、Logto から最新の情報でプロフィールが更新されます。この機能を無効にするには、プラグイン設定で Sync profile オプションのチェックを外します。
この機能を無効にすると、ロールマッピングはユーザーが初めてログインしたときにのみ有効になります。
WordPress フォームログイン
デフォルトでは、WordPress ログイン URL に ?form=1
を追加して WordPress フォームログインを使用できます。これはテスト目的で便利ですが、WordPress フォームでのログインを許可したくない場合は、この機能を無効にできます。
ユーザー名戦略
WordPress でユーザーのユーザー名を生成する方法はいくつかあります。ユーザーの一意の識別子としてメールを使用する場合、デフォルトの戦略を使用するのが安全です。
トラブルシューティング
コールバック URL が 404 を表示する
コールバック URL が 404 エラーを表示する場合、WordPress のリライトルールが古くなっており、手動で更新する必要がある可能性があります。これを行うには、WordPress 管理パネルで Settings > Permalinks に移動し(または /wp-admin/options-permalink.php
に直接アクセス)、Save Changes をクリックします。
よくある質問
パスワードを忘れた場合のフローをトリガーするにはどうすればよいですか?
パスワードを忘れた場合のフローをトリガーする方法は 2 つあります:
- Logto サインインページでパスワードを忘れたリンクをクリックします。
- WordPress ログイン URL に
?action=lostpassword
を追加します。例えば、https://example.com/wp-login.php?action=lostpassword
。 これにより、Logto のパスワードを忘れたページにリダイレクトされます。
WordPress フォームログインを使用するにはどうすればよいですか?
デフォルトでは、WordPress ログイン URL に ?form=1
を追加して WordPress フォームログインを使用できます。例えば、https://example.com/wp-login.php?form=1
。
この機能を無効にしたい場合は、プラグイン設定で WordPress form login オプションのチェックを外します。