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

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

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

前提条件

統合

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

備考:

現在、プラグインはまだ審査中で、WordPress プラグインディレクトリにはありません。利用可能になり次第、このページを更新します。

  1. 次のリンクのいずれかから Logto WordPress プラグインをダウンロードします:
    • 最新リリースlogto-plugin-<version>.zip 形式のファイルをダウンロードします。
  2. プラグインの ZIP ファイルをダウンロードします。
  3. WordPress 管理パネルで プラグイン > 新規追加 に移動します。
  4. プラグインのアップロード をクリックします。
  5. ダウンロードした ZIP ファイルを選択し、今すぐインストール をクリックします。
  6. 有効化 をクリックします。

プラグインの設定

これで、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:editorsgroup: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) フロー、アカウントフロー、組織フロー コネクターを設定する あなたの API を保護する