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

あなたの WordPress アプリケーションに認証 (Authentication) を追加する

このチュートリアルでは、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 IDあなたの Logto アプリケーションのアプリ ID
Client Secretあなたの Logto アプリケーションのアプリシークレット
OpenID Scopeemail profile openid offline_access を入力
Login Endpoint URLあなたの Logto アプリケーションの認可 (Authorization) エンドポイント URL、https://[tenant-id].logto.app/oidc/auth です。Logto アプリケーションページで「エンドポイントの詳細を表示」をクリックして URL を取得できます。
Userinfo Endpoint URLあなたの Logto アプリケーションのユーザー情報エンドポイント URL、https://[tenant-id].logto.app/oidc/me です。
Token Validation Endpoint URLあなたの Logto アプリケーションのトークン検証エンドポイント URL、https://[tenant-id].logto.app/oidc/token です。
End Session Endpoint URLあなたの Logto アプリケーションのセッション終了エンドポイント 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) を採用しており、「スコープ」を権限の最小単位として利用しています。これらのスコープは、認証 (Authentication) されたユーザーがアプリケーション内で実行できる特定のアクションを定義します。しかし、WordPress は、さまざまな機能をまとめた事前定義された「ロール」に依存してユーザーの権限を管理する異なる原則で動作します。

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

前提条件​

  • WordPress のロールに対応する Logto 内のロールを設定します。たとえば、WordPress に「編集者」ロールがある場合、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 を介して認証 (Authentication) されたユーザーに group:editors というロール名を持つ場合、'editor' ロールを割り当てます。しかし、実際のシナリオでは、より多くの種類のロールマッピングを実装する必要があるでしょう。

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

ステップ 4: 設定をテストする​

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

さらなる読み物​

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