OAuth ベースのクライアント資格情報のローテーションは、オーサーでは機能しますが、パブリッシュでは機能しません

Adobe Experience Manager(AEM)Formsで OAuth クライアント資格情報をローテーションする場合、オーサーで機能しているにもかかわらず、パブリッシュインスタンスで認証が失敗します。 この問題は、通常、インスタンス間の HMAC キーの不一致が原因で、更新トークンの適切な復号化が妨げられます。 この記事では、根本原因を説明し、OAuth 機能を復元するための解決策を提供します。

説明 description

環境

  • Adobe Experience Manager(AEM)Forms, v6.5
  • Managed Services

問題/症状

OAuth ベースのクライアント資格情報をオーサーで回転し、設定をパブリッシュにレプリケートした後、パブリッシュでの認証が次のエラーで失敗しました。

[ 0]  POST /content/forms/af/company-forms/<test-form>/jcr:content/guideContainer.af.dermis HTTP/1.1 com.adobe.aemds.guide.addon.expeditor.servlet.ExpEditorServiceManager Error while making web service related call com.adobe.aem.dermis.exception.DermisException: com.adobe.aemfd.dermis.authentication.exception.AuthenticationException: AEM-AUT-001-004: Failed to fetch access token for oAuth. ERROR
[ xx.xx.x.xx [ xxxxxxxxxxxx]  POST /content/forms/af/company-forms/<test-form>/jcr:content/guideContainer.af.dermis HTTP/1.1]  com.adobe.forms.foundation.oauth.model.OAuthConfigSlingModel Error while decrypting the Refresh Token com.adobe.granite.crypto.CryptoException: Cannot convert byte data

原因

この問題の原因は、メモリに保存されている古い更新トークンが原因で、アクセストークンの取得に失敗したことです。 オーサーとパブリッシュの間で HMAC キーの値に一貫性がなく、暗号解析の問題が発生しました。

解決策 resolution

問題を解決するには、次の手順を試してください。

  1. オーサーインスタンスとパブリッシュインスタンス間で HMAC キーを同期します。 同じ OAuth 認証情報を使用する場合は、オーサーインスタンスとパブリッシュインスタンスの両方で HMAC キーが同じであることを確認してください。

  2. パブリッシュインスタンスを再起動します。 再起動しない場合は、デフォルトのワークフローがトリガーされ、メモリ内トークンがクリアされません。

    1. システムは最初にメモリ内トークンを確認します。 古いトークンが見つかった場合、そのトークンの使用は試みられますが、接続の確立は失敗します。
    2. メモリ内にトークンが見つからない場合は、cloudconfig/<respective configuration> の下のリポジトリを確認し、保存されている資格情報を使用して接続を試みます。
    3. 上記の両方の試みが失敗した場合、システムはフォールバックして、パブリッシュインスタンスのクラウド/OSGI 設定から資格情報を使用して新しいトークンを作成します。 成功した場合は、CRX リポジトリ内のトークンが更新されます。
  3. この問題が発生しないように、特にバックアップまたは復元タスクの後に、すべてのAEM インスタンスで HMAC キーが常に同期されるようにします。

    1. AEM オーサーの /system/console/bundles に移動し、Adobe Granite Crypto Bundle Key Provider (com.adobe.granite.crypto.file) という名前のバンドルを探します。 バンドル番号(例:20)をメモします。
    2. AEM ファイルシステムで、<repository-folder>/crx-quickstart/launchpad/felix/bundle20 に移動します(20 を前の手順での実際のバンドル番号に置き換えます)。
    3. data フォルダー内に、「hmac」と「master の 2 つのファイルをコピーします。
    4. 各ターゲット AEM インスタンスで同じ手順を繰り返し、コピーされたファイルを hmac ファイルと master ファイルに置き換えます。
    5. ファイルを置き換えた後、AEM インスタンスを再起動します。

これらの手順を実装することで、資格情報のローテーション後に、パブリッシュ環境で OAuth フローが正常に再確立されます。

関連資料

コミュニティ Adobe Experience Manager Sitesでの AEM 6.5 暗号化のサポート ​ など

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f