OpenID Connectの使用
OpenID Connectは、ユーザーが他のシステムにあるアカウントを使用して認証できるようにする軽量の認証レイヤーです。 これは OAuth 2.0 認証プロトコルの上に構築されています。 OpenID Connectを使用することで、ユーザー認証を他のプロバイダーに委任し、既存のアカウントを持つユーザがLiferayのインストールで簡単に認証できるようにします。
インストールに複数のプロバイダーを追加できますが、Liferay DXPをOpenID Connectプロバイダーにすることはできません。
OpenID ConnectのトークンフローはOAuth 2.0の機能の上に構築されているため、OAuth 2.0に似ています。 OAuth 2.0は認証プロトコルにすぎないため、特定のAPIへのアクセスを許可するアクセストークンを送信します。 OpenID Connectは、アイデンティティトークンをこれに追加します。これは、ユーザーが認証され、権限を与えられている場合に、名前や 電子メールなどのユーザー情報を渡します。
技術規格および仕様
Liferay は、 OpenID Foundation によって維持されている 公開仕様 に従って OpenID Connect を実装しています。 OpenID ConnectはOAuth 2.0の上に認証レイヤーを追加するため、Liferayは外部のIDプロバイダーを使用する際に依拠当事者(RP)として機能できます。
Liferayは、ベンダー固有の機能よりも標準化された動作を優先します。 このアプローチにより、同じ仕様に従うプロバイダー間での相互運用性が確保されます。 ベンダー拡張機能は引き続き動作しますが、オプションとして扱われ、Liferayのコア実装の一部ではありません。
以下の表では、「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「MAY」、「OPTIONAL」というキーワードは、 RFC 2119 に記載されているとおりに解釈されるものとします。
- でマークされた部分は、Liferayが仕様の必須要件に準拠していることを で示さなければなりません。
- が と が と でマークされた部分は、Liferay の裁量により、既に実装されているか、要求に応じて 実装される可能性があります。
| 仕様 | 説明 | Liferay DXPに実装されています | リンク |
|---|---|---|---|
| OpenID Connect Core 1.0 | 依拠当事者に対する認証、IDトークン、クレーム、および標準フローを定義します。 | すべての RP 要件は 実装され、サポートされています。 | 仕様 |
| OpenID Connect バックチャネルログアウト 1.0 | RPセッション終了のためのサーバー間メカニズムを定義します。 | オプション 仕様がサポートされています(バージョンに依存します)。 | 仕様 |
OAuth 2.0 に関連するその他の仕様 (OAuth 2.0 認証フレームワーク、PKCE、JWT ベアラー グラント、アクセス トークンの JWT プロファイルなど) は OAuth 2.0 - 技術標準と仕様 に記載されています。
OpenID Connectプロバイダーでクライアントを作成する
OpenID Connectを使用するには、まずプロバイダーにクライアントとして登録する必要があります。 これはOAuth 2.0クライアントです。 プロセスはプロバイダーによって異なります。
-
プロバイダーのWebサイトに移動し、クライアントを作成します。
-
作成プロセス中に、プロバイダーから送信されたトークンを処理できる承認済みリダイレクトURLを提供する必要があります。 Liferay DXPのURLは次のとおりです。
https://[server.domain]/c/portal/login/openidconnect -
プロバイダーはいくつかの情報を送信します。 検出エンドポイント、承認エンドポイント、発行者URLなど、これらのいくつかはクライアントに関係なく同じです。 リクエストに固有の2つの情報は、
client_idとclient_secretです。
プロバイダーから情報を収集します。 プロバイダー接続を作成するために必要です。
OpenID Connectプロバイダー接続の構成
Liferayでは、プロバイダー接続のための新しいインターフェースに関するフィードバックを求めています。 このため、接続の作成方法には、標準的な方法と新しい方法の2つがあります。
新しいプロバイダーが開発された際にスムーズに移行できるよう、Liferayは2つのインターフェース間でOpenID Connectの設定を変換し、同期させます。
OAuth 2.0に対応した新しいOpenID Connectプロバイダー接続**
このインターフェースは、クライアント接続をきめ細かく制御したいユーザー向けです。 すべての設定は、 OpenID Connect 設定仕様 で定義されているプロバイダの Well-Known Configuration Endpoint を介して行われます。
-
グローバルメニュー (
) → コントロールパネル → セキュリティ → OAuth クライアント管理 を開きます。 -
2つのタブがあります。 1つ目は、認証サーバーのクライアントを作成します。 2つ目は、Well Known URIを持たない認証サーバー用です。 常に最初のタブを使用してください。2番目のタブは、既知のURIを持たないサーバーに対して「擬似的な」既知のURIを作成する場合にのみ使用してください。
well-known URIがない場合、
-
2 番目のタブに移動して、 新規 をクリックします。
-
プロバイダーからの認証サーバーのメタデータを入力します。 JSONの
issuerフィールドに値があることを確認してください。 これにより、[保存]をクリックすると、「ローカル」なwell-known URIが生成されます。 -
[保存]をクリックします。 OAuth クライアント管理ページに戻り、生成されたURIを確認することができます。 このURIをクリップボードにコピーしてください。次のステップでこのURIを使用します。
well-known URIがある場合、
-
最初のタブで、 新規 をクリックします。
-
認証サーバーのWell Known URIをWell Known URIフィールドに貼り付けます。 例えば、Google の場合は
https://accounts.google.com/.well-known/openid-configurationです。 上記のように生成した場合は、ここに貼り付けます。 -
ほとんどの場合、これだけで十分です。 Well Known URIをお持ちでない場合は、以下のフィールドを使用して接続を設定します。 完了したら、 保存 をクリックします。
フォームの他のフィールドは、プロバイダーと生成された特定の設定用です。
メタデータ キャッシュ時間: 既知の URI からの情報がキャッシュされる間隔 (秒単位) を指定します。 0 と入力すると、デフォルト値として 600 秒 (Ehcache で使用) が設定されます。
OAuthクライアント情報: RFC-7591 JSON 形式に従ったクライアント設定情報を追加します。 既知のURIを使用した場合は、この欄は空白のままで構いません。
OAuth クライアントのデフォルトの認証リクエスト パラメータ: Liferay アプリケーションで認証リクエスト パラメータ が 指定されていない場合は、この OAuth クライアントを使用するためのデフォルト パラメータを JSON 形式でここに指定します。 カスタムパラメーター値は、文字列のJSON配列である必要があります。
OAuth クライアントのデフォルト トークン リクエスト パラメータ: Liferay アプリケーションでトークン リクエスト パラメータ を 指定しない場合は、この OAuth クライアントを使用するためのデフォルト パラメータを JSON 形式でここに指定します。 カスタムパラメーター値は、文字列のJSON配列である必要があります。
OpenID Connect ユーザー情報マッパー JSON: 下記 を参照してください
OpenId Connect ユーザー情報マッパーの JSON
Liferay DXP 7.4 U47+/GA47+
このセクションを使用すると、LiferayユーザーとOIDCプロバイダーのユーザー間でフィールドをマッピングできます。 emailAddress、 firstName、 lastName、および screenName の値は必須です。 スクリーンネームのマッピングがない場合、またはクレームが空の場合、Liferay はそのユーザーのスクリーンネームを生成します。
この地図は5つのセクションで構成されています。
- 住所
- 電話番号
- 連絡先
- ユーザーロール
- ユーザー

マッピングの左側はLiferayにおけるユーザー属性名を指定し、マッピングの右側はOIDCプロバイダからのユーザー属性名を指定します。 例えば、 firstName は、 user の下で given_name にマッピングされます。 これは、OIDC プロバイダが given_name という属性を送信し、その中にユーザーの名が含まれることを意味します。 これは、Liferay ユーザー属性 firstName にマッピングされます。
ネストされた属性には、→ が使用されます。 例えば、Liferay ユーザーのアドレス属性 zip は address->postal_code にマッピングされます。 これは、OIDC プロバイダが "address": { "postal_code": "[SOME_POSTAL_CODE]" }という属性を送信し、それが Liferay ユーザーのアドレス属性 zip にマッピングされることを意味します。
OIDCプロバイダーによっては、JSONに記載されているすべての情報が送信されない場合があります。 マッピングが正しく行われるように、プロバイダーに適切な属性名を確認してください。 場合によっては、特定の属性を取得するためにカスタムマッピングを作成する必要もあります。
自動役割割り当て
ユーザーがOIDCプロバイダーで役割を持っている場合、以下の条件を満たしていれば、その役割はLiferayユーザーにマッピングされます。
- この役割はLiferayに存在します。
- これは通常の役職です。
OIDCプロバイダがLiferayに存在しないロール情報を送信した場合、またはそれが通常のロールでない場合は、マッピングは実行されません。
標準OpenID Connectプロバイダー接続
-
グローバルメニュー (
) を開き、 コントロールパネル → インスタンス設定 → セキュリティ → SSO に移動します。 -
仮想インスタンススコープで、 OpenID Connect プロバイダー を選択します。
![[System Settings]メニューでOpenID構成を検索する。](https://resources.learn.liferay.com/images/dxp/latest/en/security-and-administration/security/configuring-sso/using-openid-connect/images/02.png)
-
追加 をクリックしてプロバイダーを追加します。
-
プロバイダーから受け取った情報を使用して、フォームに記入します。
項目 説明 プロバイダー名 ユーザーがOpenID Connectを使用してログインする際に、この名前がサインインポートレットに表示されます。 範囲 ユーザー名と電子メールを要求するデフォルトのままにします。 プロバイダーは、他の範囲のユーザー情報を提供する場合があります。 ディスカバリーエンドポイント 他のURLはこのURLから取得でき、プロバイダーによって異なります。 ディスカバリーエンドポイントキャッシュのキャッシュ時間(ミリ秒) この期間に検出されたエンドポイント(URL)をキャッシュします。 認可エンドポイント このURLは、ユーザーを承認する(つまり、ユーザーをサインインする)ためのプロバイダーのURLを指します。 発行者URL ユーザー情報を発行しているプロバイダーに関する情報を指すプロバイダーのURL。 JWKS URI プロバイダーのトークンを検証できる公開キーを含むプロバイダーのJSON Webキーセットを指すURL。 IDトークンの署名アルゴリズム サポートされているIDトークンアルゴリズムを手動で設定します。 通常、これはディスカバリーエンドポイントで「検出」されます。 これらは必要な数だけ追加できます。 サブジェクトタイプ サブジェクト識別子は、プロバイダーがユーザーを確立するために使用する一意の、再割り当てされることのない識別子であり、クライアント(つまり、Liferay DXP)によって消費されます。 パブリック型(すべてのクライアントに同じ値を提供する)とペアワイズ型(各クライアントに異なる値を提供する)の2種類があります。 トークンエンドポイント トークンをリクエストできるプロバイダーのURL。 トークン接続のタイムアウト (ミリ秒) 検証のためにトークンをリクエストしたときに、タイムアウトするまでの待機時間。 0の値は永久に待機することを意味するため、お勧めしません。ユーザー情報エンドポイント ユーザー情報を取得できるOAuth 2.0で保護されたURL。 OpenID Connect クライアントID プロバイダーから受け取ったOAuth 2.0クライアントIDを提供します。 OpenID Connect クライアントシークレット プロバイダーから受け取ったOAuth 2.0クライアントシークレットを提供します。 カスタムクレーム プロバイダーから返された追加の請求内容を指定してください。 これらのクレームは、既存のLiferayユーザーカスタムフィールドにマッピングされます。 詳細については、 OpenID Connect属性をカスタムフィールドにマッピングする を参照してください。 (Liferay DXP 2025.Q4+) マッチャーフィールド システムが保存されている OIDC sub値を見つけられない場合に、Liferay がユーザー (メールアドレスまたはスクリーン名) を識別する方法を定義します。 これは、ユーザーの最初の OIDC ログイン時、またはプロバイダがまだサブを提供していない場合にのみ適用されます。 フォールバックフィールドを使用した最初のログインが成功すると、Liferay はユーザーのサブ値を保存し、以降のすべてのログインに使用します。重要Liferay は OpenID Connect の暗号化 ID トークン (JWE) をサポートしていません。これは OpenID 仕様 によるとオプションだからです。 ただし、必須の署名付きIDトークン(JWS)はサポートしています。
-
[Save(保存)]をクリックします。 これでOpenID Connect認証を有効にする準備が整いました。
この構成は、接続の アクション (
) ボタンをクリックし、 エクスポート をクリックすることでエクスポートできます。 エクスポートされた構成は、一意の [name] フィールドを持つシステム設定構成ファイルになります。
com.liferay.portal.security.sso.openid.connect.internal.configuration.OpenIdConnectProviderConfiguration-[name].config
OpenID Connect 属性のカスタムフィールドへのマッピング
Liferayでは、OpenIDクレームをユーザーカスタムフィールドにマッピングできます。
-
ユーザーカスタムフィールドを作成します。 グローバルメニュー → コントロールパネル → カスタムフィールド 構成 (1) に移動します。
または、ユーザーを作成または編集する際にカスタムフィールドを追加します(2)。
注適切なマッピングと保存を確実にするため、カスタムフィールドのデータ型がOpenIDクレームの型(文字列、数値、ブール値など)と一致していることを確認してください。

-
プロバイダー接続ページの最下部で、ユーザーカスタムフィールドを選択し、対応するOpenIDクレームに関連付けます。

-
カスタムフィールドマッピングを追加または削除するには、(
)または(
)を使用します。 -
変更を適用するには、 保存 をクリックしてください。
OpenID Connect認証の有効化
-
グローバルメニュー (
) を開き、 コントロールパネル → インスタンス設定 → セキュリティ → SSO に移動します。 -
仮想インスタンススコープで OpenID Connect を選択します。

-
有効 チェックボックスをクリックし、 保存 をクリックします。
ユーザーはOpenID Connectを使用してサインインできるようになりました。
OpenID Connectオプションが表示されない場合、または設定が想定どおりに読み込まれない場合は、プロバイダーの検出エンドポイントにLiferayサーバーからアクセスできない可能性があります。 サーバーからエンドポイントにアクセスしてネットワーク接続を確認します(例: curl https://your-provider/.well-known/openid-configuration)。 リクエストが失敗した場合、通常はファイアウォールまたはネットワーク制限によってエンドポイントがブロックされていることを示しています。
ユーティリティページでOpenID Connectにアクセスする
Liferay DXP 2024.Q3+
OpenID Connectを有効にすると、インスタンスレベルでの認証が制御されます。 ユーザーがサインイン画面でどのようにアクセスするかは、サイトがデフォルトのサインインポートレットを使用するか、 サインインユーティリティページ を使用するかによって異なります。
デフォルトの サインイン ユーティリティページでは、サインインウィジェットはローカル認証に重点を置いています。 OpenID ConnectまたはFacebook Connect認証を提供するには、以下のいずれかの方法を使用してください。
-
デフォルトのサインインポートレットにフォールバックします。
-
サイトメニュー (
を開き、 サイトビルダーを展開して、 ページ に移動します。 -
ユーティリティページ タブを開き、 アクション (
)をクリックして サインイン ページを開きます。 -
確認ダイアログで、 「デフォルトとしてマークを解除」 をクリックし、 「OK」 をクリックします。
Liferay はデフォルトのサインイン ポートレットを使用し、OpenID Connect リンクは OpenID Connect を使用したサインイン で説明されているとおりに表示されます。
-
-
ユーザーを
/c/portal/loginにリダイレクトするか、プロバイダとの認証をトリガーするカスタムサインインユーティリティページを作成します。 例えば、フラグメントやボタンを使ってユーザーをURLにリダイレクトします。
OpenID Connectでサインインする
OpenID Connectでサインインするための新しいリンクが、サインインポートレットに表示されます。
-
サインイン ポートレットから、下部にある OpenID Connect をクリックします。
-
プロバイダーを選択して、[Sign In]をクリックします。
-
プロバイダーのサインインページが表示されます。 認証情報を入力してログインします。
-
認証が成功すると、認証された状態でLiferay DXPにリダイレクトされます。
今後は、ユーザー認証時にユーザーグループとグループメンバーシップが同期されます。 Liferayは、グループとグループメンバーシップの元のソースを保存することで、複数のグループソース(OpenID ConnectとLDAPなど)が存在する場合に競合が発生しないようにします。
LiferayはOpenID Connectを使用する場合、クライアントとしてPKCE(Proof Key for Code Exchange)をサポートしています。 詳細については、 PKCE仕様を参照してください。 値を確認し、適切にリクエストを承認または拒否することは、プロバイダーの責任です。
OpenID Connect バックチャネルログアウト
Liferay DXP 2026.Q1+
OpenID Connectのバックチャネルログアウトは、IDプロバイダがセッションを終了すると、ユーザーのLiferayセッションを終了します。 ブラウザではなくサーバー間リクエストを使用することで、同じプロバイダを共有するアプリケーション間でセッションが確実に終了するようにします。
Liferayは依拠当事者(RP)として機能し、有効なログアウトトークンを受信すると、一致するポータルセッションを終了します。
バックチャネルログアウトエンドポイント
Liferay は、バックチャネルのログアウト要求を受信するために /o/open_id_connect/backchannel_logout エンドポイントを公開します。
例えば、Liferayがローカルでポート8080で実行されている場合、URLは http://localhost:8080/o/open_id_connect/backchannel_logout となります。
OpenID Connectプロバイダ接続を構成したら、IDプロバイダでこのURLをバックチャネルログアウトエンドポイントとして構成します。 Liferayは、このURLからのリクエストを自動的に受け付けます。 プロバイダがセッションを終了すると、バックチャネルログアウト要求が送信され、Liferayはトークンを検証して、対応するポータルセッションを終了します。
バージョンごとの機能提供状況
| 機能 | Liferay DXPバージョン | メモ |
|---|---|---|
| OpenID Connectユーザー向けのマッチングフィールド | 2025年第4四半期以降 | 当初はベータ版機能(LPD-20879)としてリリースされました。 Liferay DXP 2026.Q1 でリリース機能に昇格し、一般提供 (GA) となりました。 |
| OpenID Connect 属性のカスタムフィールドへのマッピング | 2025年第4四半期以降 | 当初はリリース機能フラグ(LPD-57332)としてリリースされ、Liferay DXP 2026.Q1で一般提供(GA)されました。 |
| OpenID Connect バックチャネルログアウト | 2026年第1四半期以降 | Liferay DXP 2026.Q1で一般提供(GA)機能として導入されました。 |