問題
com.liferay.portal.security.sso.openid.connect.OpenIdConnectProvider;
とcom.liferay.portal.security.sso.openid.connect.OpenIdConnectProviderRegistry;
のLiferayクラスは、 LPS-150092によってU34+で削除されました。- カスタマイズの際、どのように置き換えることができますか?
環境
- DXP 7.4
解像度
-
置換クラスを実現する1つの方法は
OpenIdConnectProviderRegistryImpl.findOpenIdConnectProvider
メソッドをカスタマイズすることです。-
これは
設定
テーブルからすべてのエントリを取得する必要があります。で始まる _configuration テーブルからすべてのエントリを取得する必要があります。
からすべてのエントリを取得し、それを繰り返し、一致するプロバイダ名
. - これは以前、インメモリーマップを使って行った(詳しくは LPS-150092 を参照)。 基本的には、サーバーの起動時やコンフィギュレーションの追加・削除時に、providerName(キー)をconfiguration(値)としてマップを更新します。 そこから簡単にコンフィギュレーションを調べることができた。
- また、マップをスキップして、リクエストごとにコンフィギュレーションの取得とフィルタリングだけを実行することもできる。
-
これは
-
あるいは、 OpenID Connect 接続ごとに
OAuthClientEntry
を作成するので、以下のスクリプトを使用してデータにアクセスすることもできます。-
com.liferay.oauth.client.persistence.service.OAuthClientEntryLocalServiceUtil.getOAuthClientEntries(-1, -1).each { client ->
out.println(client);
}
-
追加情報
-
の 追加により 、
OpenIdConnectProvider の
設定がローカルに保存さ れなくなりました。 LPS-150092OpenIdConnectProviderRegistryImpl.findOpenIdConnectProvider
のようなクラスで簡単に取得する ことはできません。 このコード変更は次のサイトで確認できる。https://github.com/brianchandotcom/liferay-portal/compare/03162209ce...23b907d1cf. -
なぜなら
OpenIdConnectProvider
オブジェクトは、それ自体で使われるのではなく、ログインや認証の必要性に応じて動的に収集されることを意図していたため、すべてはバックエンドに移動されました。
そのためOpenIdConnectProviderRegistryImpl
クラスは歴史的に内部的なものでした。
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン