• oidc
  • wordpress

WordPress での承認のための統合

Logto を WordPress と統合するシリーズの第 2 部で、認証について掘り下げます。

Sijie
Sijie
Developer

前の記事では、WordPress での Logto の認証統合について説明しました。この記事では、第二部として、認証プロセスについて掘り下げ、WordPress のロールシステムと Logto のロールマッピングの実装方法に焦点を当てます。前の記事で使用したプラグインは直接認証機能を提供しないため、これを考慮に入れます。

Logto RBAC (ロールベースのアクセス制御)によって提供される役割に基づいて、ユーザーに自動的に WordPress のロールを割り当てるロールマッピング機能を作成します。

WordPress ユーザーロールの理解

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

これらの役割は、サイトの運用の安全性と効率性を維持するために重要であり、ユーザーがその責任に基づいて適切なアクセスレベルを持つことを確認するのに役立ちます。

解決策:カスタムロールマッピング

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

この根本的な違いを考慮に入れて、WordPress で定義された役割に対応するLogto内の特別な役割を作成することを提案します。これらの役割はスコープを持つことはなく、ユーザーを WordPress の役割にマッピングするための参照としてのみ使用されます。

前提条件

進行する前に、以下のことを確認してください:

  • WordPress での Logto の認証統合に関する前の記事を終えてください。これには以下が含まれます:
    • 管理者アクセスを持つ WordPress サイト。
    • あなたの WordPress サイトのために設定された Logto アカウント。
    • WordPress サイトにインストールされ、設定されたOpenID Connect Generic plugin
  • WordPress の役割に対応する Logto の役割を設定します。例えば、WordPress で 'editor' の役割を持っている場合、Logto で 'group:editors' の役割を作成します。

カスタムコードと役割マッピングの実装

役割マッピングを実装するために、WordPress テーマの functions.php ファイルにカスタムコードを追加します。これには、ユーザーがログインするときにトリガする wp_login アクションフックの使用が含まれます。以下に、この設定方法の手順について説明します:

ステップ 1:あなたのテーマの functions.php にアクセスする

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

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

以下は、functions.php に追加する関数のシンプルな例です。この関数はユーザーログイン時に付天され、Logto から取得したユーザーロールを基にロールを割り当てます。

ステップ 3:コードを理解し、カスタマイズする

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

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

上記の例では、名前が group:editors の Logto 経由で認証されたユーザーに 'editor' の役割を割り当てます。しかし、実際のシナリオでは、より多くの種類のロールマッピングを実装する必要があります。

WordPress の役割とその機能のリストはここで見つけることができます。

ステップ 4:あなたのセットアップをテストする

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

結論

Logto を WordPress と統合することで、認証と認証の両方に対応し、サイトのセキュリティと機能を向上させることができます。ここで提供されたコードは基本的な例ですが、あなたの WordPress サイトの役割と許可の構造に合わせてそれを適応させる必要があることを忘れないでください。