メインコンテンツまでスキップ

Logto プラグインで WordPress ウェブサイトに認証機能の追加

このチュートリアルでは、公式の WordPress プラグインを使用して WordPress ウェブサイトに Logto を統合する方法を紹介します。

前提条件​

統合​

プラグインのインストール​

  1. プラグイン > 新規追加 に移動します。
  2. 「Logto」を検索するか、検索ボックスに https://wordpress.org/plugins/logto/ を入力します。
  3. 今すぐインストール をクリックします。
  4. 有効化 をクリックします。

プラグインの設定​

これで、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 フィールドが表示されます。

  1. リダイレクト URI と サインアウト後のリダイレクト URI の値をコピーし、Logto コンソールの リダイレクト URI と サインアウト後のリダイレクト URI フィールドに貼り付けます。
  2. Logto コンソールで 変更を保存 をクリックします。

チェックポイント:WordPress ウェブサイトのテスト​

これで、WordPress ウェブサイトで Logto の統合をテストできます:

  1. 必要に応じてシークレットブラウザウィンドウを開きます。
  2. WordPress ウェブサイトを訪問し、該当する場合は ログイン リンクをクリックするか、直接ログインページ(例:https://example.com/wp-login.php)にアクセスします。
  3. ページは Logto サインインページにリダイレクトされるはずです。
  4. サインインまたはサインアッププロセスを完了します。
  5. 認証が成功すると、WordPress ウェブサイトに戻り、自動的にログインされるはずです。
  6. ログアウト リンクをクリックして WordPress ウェブサイトからログアウトします。
  7. Logto サインアウトページにリダイレクトされ、その後 WordPress ウェブサイトに戻るはずです。
  8. 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 つあります:

  1. Logto サインインページでパスワードを忘れたリンクをクリックします。
  2. 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 オプションのチェックを外します。

さらなる読み物​

エンドユーザーフロー:認証 (Authentication) フロー、アカウントフロー、組織フロー コネクターの設定 認可 (Authorization)