環境への配慮
- Liferay DXP 7.0-7.3
- オラクルアイデンティティクラウドサービス
- OpenID Connect認証が有効
症状
Liferay DXPで OpenID Connect認証 が有効で、構成プロバイダがOracle Identity Cloud Service(IDCS)の場合、以下のエラーが発生し、ユーザーがLiferay DXPにサインインできないことがあります。
Caused by: com.nimbusds.jose.RemoteKeySourceException: Couldn't retrieve remote JWK set: Server returned HTTP response code: 401 for URL: https://idcs-6e0f2608732d4331a407d4a5583257ab.identity.oraclecloud.com:443/admin/v1/SigningCert/jwk at com.nimbusds.jose.jwk.source.RemoteJWKSet.updateJWKSetFromURL(RemoteJWKSet.java:167) at com.nimbusds.jose.jwk.source.RemoteJWKSet.get(RemoteJWKSet.java:258) at com.nimbusds.jose.proc.JWSVerificationKeySelector.selectJWSKeys(JWSVerificationKeySelector.java:113) at com.nimbusds.jwt.proc.DefaultJWTProcessor.selectKeys(DefaultJWTProcessor.java:288) at com.nimbusds.jwt.proc.DefaultJWTProcessor.process(DefaultJWTProcessor.java:347) at com.nimbusds.openid.connect.sdk.validators.IDTokenValidator.validate(IDTokenValidator.java:288) at com.nimbusds.openid.connect.sdk.validators.IDTokenValidator.validate(IDTokenValidator.java:224) at com.liferay.portal.security.sso.openid.connect.internal.OpenIdConnectServiceHandlerImpl.validateToken(OpenIdConnectServiceHandlerImpl.java:652) ... 60 more Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: https://idcs-6e0f2608732d4331a407d4a5583257ab.identity.oraclecloud.com:443/admin/v1/SigningCert/jwk at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1919) at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250) at com.nimbusds.jose.util.DefaultResourceRetriever.getInputStream(DefaultResourceRetriever.java:249) at com.nimbusds.jose.util.DefaultResourceRetriever.retrieveResource(DefaultResourceRetriever.java:201) at com.nimbusds.jose.jwk.source.RemoteJWKSet.updateJWKSetFromURL(RemoteJWKSet.java:165) ... 67 more
決議
JWKS エンドポイントは、IDCS テナントではデフォルトで保護されています。 でテストすることができます。
- テナントのディスカバリードキュメントに移動します:https://<tenant-base-url>/.known/openid-configuration。
- レスポンスJSONから「jwks_uri」をクリックしてください(これはエラーで表示されるURLと同じになります): https://<tenant-base-url>/admin/v1/SigningCert/jwk
HTTP 401を取得した場合は、エンドポイントがあなたの環境で保護されていることを意味します。 OpenID Connectクライアント(Liferay DXPなど)は、認証応答で受信したIDTokenを検証するために、サーバーの署名証明書をロードするために、このリソースにアクセスする必要があります。
JWKSエンドポイントをパブリックにするには.
- Oracle IDCSコンソールにログイン
- 左のナビゲーションメニューにアクセス
- 設定 > デフォルト設定に移動します。
- Access Signing Certificate" の下で、トグルを有効に切り替えて、"クライアントがOracle Identity Cloud ServiceにログインせずにIDドメインの署名証明書にアクセスできるかどうかを構成します。"
- 保存
参考
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン