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は、 アイデンティティトークン をこれに追加します。これは、ユーザーが認証され、権限を与えられている場合に、 名前 や 電子メール などのユーザー情報を渡します。
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番目のタブは、well-known URIを持たないサーバー向けに「擬似的な」well-known URIを作成する場合にのみ使用します。
well-known URIがない場合、
-
2つ目のタブで、 追加() をクリックします。
-
プロバイダーからの認証サーバーのメタデータを入力します。 JSONの
issuer
フィールドに値があることを確認してください。 これにより、[保存]をクリックすると、「ローカル」なwell-known URIが生成されます。 -
[Save] をクリックします。 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をお持ちでない場合は、以下のフィールドを使用して接続を設定します。 完了したら、 [保存] をクリックします。
フォームの他のフィールドは、プロバイダーと生成された特定の設定用です。
OAuthクライアント情報: RFC-7591 JSON 形式に従ったクライアント設定情報を追加します。 Well Known URIを使用した場合は、ここに何も追加する必要がない場合があることに注意してください。
OAuth クライアントのデフォルト認証リクエストパラメーター: 認証リクエストパラメータ 自体を指定しないLiferayアプリケーションがある場合、ここでこのOAuthクライアントを使用するためのデフォルトパラメータをJSON形式で指定します。 カスタムパラメーター値は、文字列のJSON配列である必要があります。
OAuth クライアントのデフォルトトークンリクエストパラメーター: トークンリクエストパラメータ 自体を指定しない Liferay アプリケーションがある場合、ここでこの OAuth クライアントを使用するためのデフォルトパラメーターをJSON形式で指定します。 カスタムパラメーター値は、文字列のJSON配列である必要があります。
標準OpenID Connectプロバイダー接続
[Control Panel] → [Configuration] → [Instance Settings] → [セキュリティ] → [SSO] に移動して、 [System Scope] の下の [OpenID Connect Provider] を選択します。
次の手順を実行します:
-
追加 ボタンをクリックしてプロバイダーを追加します。
-
プロバイダーから受け取った情報を使用して、フォームに記入します。
項目 Description プロバイダー名 この名前は、ユーザーがOpenID Connectを使用してログインするときにサインインポートレットに表示されます。 OpenIDクライアントID プロバイダーから受け取ったOAuth 2.0クライアントIDを提供します。 OpenID Connect クライアントシークレット プロバイダーから受け取ったOAuth 2.0クライアントシークレットを提供します。 範囲 ユーザー名と電子メールを要求するデフォルトのままにします。 プロバイダーは、他の範囲のユーザー情報を提供する場合があります。 ディスカバリーエンドポイント 他のURLはこのURLから取得でき、プロバイダーによって異なります。 ディスカバリーエンドポイントキャッシュのキャッシュ時間(ミリ秒) この期間に検出されたエンドポイント(URL)をキャッシュします。 認証エンドポイント このURLは、ユーザーを承認する(つまり、ユーザーをサインインする)ためのプロバイダーのURLを指します。 発行者URL ユーザー情報を発行しているプロバイダーに関する情報を指すプロバイダーのURL。 JWKS URI プロバイダーのトークンを検証できる公開キーを含むプロバイダーのJSON Webキーセットを指すURL。 IDトークンの署名アルゴリズム サポートされているIDトークンアルゴリズムを手動で設定します。 通常、これはディスカバリーエンドポイントで「検出」されます。 これらは必要な数だけ追加できます。 サブジェクトタイプ サブジェクト識別子は、プロバイダーがユーザーを確立するために使用する一意の、再割り当てされることのない識別子であり、クライアント(つまり、Liferay DXP)によって消費されます。 public(すべてのクライアントに同じ値を提供する)とprivate(各クライアントに異なる値を提供する)の2つのタイプがあります。 トークン エンドポイント トークンをリクエストできるプロバイダーのURL。 トークン接続のタイムアウト (ミリ秒) 検証のためにトークンをリクエストしたときに、タイムアウトするまでの待機時間。 0
の値は永久に待機することを意味するため、お勧めしません。ユーザー情報エンドポイント ユーザー情報を取得できるOAuth 2.0で保護されたURL。
フォームに入力し、 [保存] をクリックすると、OpenID Connect認証を有効にする準備が整います。
エクスポートされた構成は、次のシステム設定の構成ファイルになります。
com.liferay.portal.security.sso.openid.connect.internal.configuration.OpenIdConnectProviderConfiguration-[name].config
ここで、[name]
には、provider1
などの一意の名前を入力します。
OpenID Connect認証の有効化
-
[Control Panel] → [Configuration] → [Instance Settings] → [セキュリティ] → [SSO] に移動して、 [Virtual Instance Scope] の下の [OpenId Connect] を選択します。
-
[Enabled] チェックボックスをクリックしてから、 [保存] をクリックします。
エクスポートされた構成は、次のシステム設定の構成ファイルになります。
com.liferay.portal.security.sso.openid.connect.configuration.OpenIdConnectConfiguration.config
これで、ユーザーはOpenID Connectでサインインできます。
OpenID Connectでサインインする
OpenID Connectでサインインするための新しいリンクがサインインポートレットに表示されます。
-
サインインポートレットの下部にあるOpenID Connectリンクをクリックします。
-
プロバイダーを選択して、 [Sign In] をクリックします。
-
プロバイダーのサインインページが表示されます。 認証情報を入力してログインします。
-
認証が成功すると、認証された状態でLiferay DXPにリダイレクトされます。
クライアントとして、LiferayはOpenID Connectを使用する場合、PKCE(Proof Key for Code Exchange)をサポートしています。 詳細は PKCE仕様 をご参照ください。 値を確認し、適切にリクエストを承認または拒否することは、プロバイダーに任されています。