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

WordPress アプリケーションへ認証機能の追加

備考:

より良いユーザー体験のために、このチュートリアルに従う代わりに、公式の WordPress プラグイン を使用することをお勧めします。

このチュートリアルでは、Logto を Wordpress ウェブサイトに統合する方法を紹介します。

前提条件

統合

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

OpenID Connect Generic プラグインを使用して、OIDC プロトコルを介して Logto を Wordpress ウェブサイトに統合します。

  1. WordPress サイトにログインします。
  2. 「プラグイン」に移動し、「新規追加」をクリックします。
  3. 「OpenID Connect Generic」を検索し、daggerhart によるプラグインをインストールします。
  4. プラグインを有効化します。

リダイレクト URI の設定

まず、リダイレクト URI を設定しましょう。プラグイン設定で見つけることができ、「Notes」セクションまでスクロールして「Redirect URI」値をコピーします。

Logto コンソールのアプリケーション詳細ページに切り替えます。リダイレクト URI を追加し、「変更を保存」をクリックします。

プラグインの設定

必要な設定詳細については、以下の表を参照してください:

プラグインフィールド説明
Client IDLogto アプリケーションのアプリ ID
Client SecretLogto アプリケーションのアプリシークレット
OpenID Scopeemail profile openid offline_access を入力
Login Endpoint URLLogto アプリケーションの認可エンドポイント URL、https://[tenant-id].logto.app/oidc/auth で、Logto アプリケーションページで「エンドポイント詳細を表示」をクリックして URL を取得できます。
Userinfo Endpoint URLLogto アプリケーションのユーザー情報エンドポイント URL、https://[tenant-id].logto.app/oidc/me。
Token Validation Endpoint URLLogto アプリケーションのトークン検証エンドポイント URL、https://[tenant-id].logto.app/oidc/token。
End Session Endpoint URLLogto アプリケーションのセッション終了エンドポイント URL、https://[tenant-id].logto.app/oidc/session/end。
Identity Keyユーザーのアイデンティティを含む ID トークン内の一意のキー、設定に応じて email または sub にできます。
Nickname Keyユーザーのニックネームを含む ID トークン内のキー、sub に設定して後で変更できます。

チェックポイント: アプリケーションのテスト

これで、アプリケーションをテストできます:

  1. WordPress サイトからログアウトします。
  2. WordPress ログインページにアクセスし、「Logto でサインイン」ボタンをクリックします。
  3. Logto サインインページにリダイレクトされます。
  4. Logto アカウントでサインインします。
  5. WordPress サイトに戻り、自動的にログインされます。

ロールのマッピング

WordPress には、サイト上でユーザーが実行できるアクション(機能)を定義する組み込みのユーザーロール管理システムがあります。デフォルトのユーザーロールには、管理者、編集者、著者、寄稿者、購読者が含まれ、それぞれに独自の機能セットがあります。

Logto は、認可 (Authorization) モデルとしてロールベースのアクセス制御 (RBAC) を採用し、「スコープ」を権限の最小単位として利用します。これらのスコープは、認証されたユーザーがアプリケーション内で実行できる特定のアクションを定義します。しかし、WordPress は、さまざまな機能をまとめた事前定義された「ロール」に依存してユーザー権限を管理する異なる原則で動作します。

この基本的な違いを考慮して、WordPress で定義されたロールに対応する特別なロールを Logto 内に作成することをお勧めします。これらのロールにはスコープがないかもしれませんが、ユーザーを WordPress ロールにマッピングするための参照として使用されます。

前提条件

  • WordPress のロールに対応する Logto 内のロールを設定します。例えば、WordPress に 'editor' ロールがある場合、Logto に 'group:editors' ロールを作成します。

ロールマッピングの実装

ロールマッピングを実装するために、WordPress テーマの functions.php ファイルにカスタムコードを追加します。これは、ユーザーがログインしたときにトリガーされる wp_login アクションフックを使用します。設定方法のステップバイステップガイドは以下の通りです:

ステップ 1: テーマの functions.php にアクセス

テーマの functions.php ファイルを開きます。このファイルには、WordPress サイトの機能を拡張するカスタム PHP 関数を追加できます。WordPress 管理パネルから「外観 > テーマエディター」に移動し、右側のファイルリストから functions.php を選択してアクセスできます。または、ソースコードで WordPress テーマディレクトリに移動し、functions.php ファイルを見つけます。

ステップ 2: ロールマッピング関数を書く

以下は、functions.php に追加する関数の簡単な例です。この関数はユーザーのログイン時にトリガーされ、Logto から取得したユーザーの roles クレームに基づいてロールを割り当てます。

function logto_handler($user_login, $user = null) {
if (!$user) {
$user = get_user_by('login', $user_login);
}

$oidc_claims = get_user_meta($user->ID, 'openid-connect-generic-last-user-claim', true);

if (in_array('group:editors', $oidc_claims['roles'])) {
$user->set_role('editor');
} else {
$user->set_role('subscriber');
}
}

add_action('wp_login', 'logto_handler', 10, 2);

ステップ 3: コードの理解とカスタマイズ

  • logto_handler 関数:この関数は、$user_login(ユーザー名)と $user(ユーザーオブジェクト)の 2 つのパラメーターを受け取ります。ユーザーメタに openid-connect-generic-last-user-claim として保存された Logto からのロールを取得し、このロールを対応する WordPress ロールにマッピングしてユーザーに割り当てます。

  • add_action:この行は、logto_handler 関数を wp_login アクションにフックします。これは、ユーザーがログインした後にトリガーされます。10 は優先度(デフォルト)で、2 は関数が受け取る引数の数を示します。

上記の例では、Logto で group:editors というロール名を持つユーザーに 'editor' ロールを割り当てます。しかし、実際のシナリオでは、より多くの種類のロールマッピングを実装する必要があるでしょう。

WordPress のロールとその機能のリストは こちら で確認できます。

ステップ 4: 設定のテスト

次に、Logto で group:editors ロールを持つユーザーでログインして、ロールマッピング関数をテストします。ログイン後、WordPress でユーザーのロールを確認し、マッピングが正しく機能していることを確認します。

さらなる読み物

エンドユーザーフロー:認証 (Authentication) フロー、アカウントフロー、組織フロー コネクターを設定する あなたの API を保護する