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

あなたの 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 を保護する