JWK セットサイズ制限により、AEM as a Cloud Service OIDC認証が失敗する

この記事では、リモート JWK セットがデフォルトの入力サイズ制限を超えた場合に、Adobe Experience Manager as a Cloud ServiceでOIDC認証エラーを解決する方法について説明します。

説明 description

環境

  • Adobe Experience Manager as a Cloud Service(すべてのバージョン)

問題/症状

  • OIDC認証要求が失敗します。
  • ログに次のエラーが表示されます。

ERROR org.apache.sling.auth.oauth_client.impl.OidcAuthenticationHandler トークンの検証に失敗しました:リモート JWK セットを取得できませんでした:51200 バイトの設定済み入力制限を超えています

  • 正しいJVM システムプロパティが適用されない限り、設定ファイルを更新した後でもエラーが発生し続けます。
  • ID プロバイダーのJWK セットサイズが51,200 バイトを超えています(例:約58 KB)。
  • この問題は、開発環境、ステージング環境、実稼動環境で再現できます。

原因

Nimbus DS ライブラリのリモート JWK セットのデフォルトの入力サイズ制限は51,200 バイトです。 ID プロバイダーのJWK セットがこの制限を超える場合、JVM システムプロパティと設定によって制限が増えない限り、トークン検証は失敗します。

解決策 resolution

OIDC認証エラーを修正するには、次の手順に従います。

  1. ID プロバイダーが提供するリモート JWK セットのサイズを確認します。 51,200 バイトを超える場合は、次の手順に進みます。
  2. 対象のクラウド環境で次のJVM システムプロパティを追加または更新します:-Dnimbusds.jose.jwkset.maxSize=102400 (JWK セットが最大10 MBの大きさである場合は、値を調整します)。
  3. OidcAuthenticationHandler設定で、jwkSetHttpSizeLimit パラメーターを新しいサイズ制限(例:102400)に一致するように設定します。
  4. 標準デプロイメントパイプラインを使用して、更新された設定とJVM プロパティを関連する環境にデプロイします。
  5. デプロイメントパイプラインが正常に完了し、新しいリリースがアクティブであることを確認します。
  6. OIDC認証をテストして、エラーが発生しなくなったことを確認します。
  7. ログを確認して、サイズ制限エラーなしでJWK セットが取得および処理されていることを確認します。
recommendation-more-help
experience-cloud-kcs-help-kbarticles