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
問題を解決するには、次の手順を試してください。
-
オーサーインスタンスとパブリッシュインスタンス間で HMAC キーを同期します。 同じ OAuth 認証情報を使用する場合は、オーサーインスタンスとパブリッシュインスタンスの両方で HMAC キーが同じであることを確認してください。
-
パブリッシュインスタンスを再起動します。 再起動しない場合は、デフォルトのワークフローがトリガーされ、メモリ内トークンがクリアされません。
- システムは最初にメモリ内トークンを確認します。 古いトークンが見つかった場合、そのトークンの使用は試みられますが、接続の確立は失敗します。
- メモリ内にトークンが見つからない場合は、
cloudconfig/<respective configuration>の下のリポジトリを確認し、保存されている資格情報を使用して接続を試みます。 - 上記の両方の試みが失敗した場合、システムはフォールバックして、パブリッシュインスタンスのクラウド/OSGI 設定から資格情報を使用して新しいトークンを作成します。 成功した場合は、CRX リポジトリ内のトークンが更新されます。
-
この問題が発生しないように、特にバックアップまたは復元タスクの後に、すべてのAEM インスタンスで HMAC キーが常に同期されるようにします。
- AEM オーサーの
/system/console/bundlesに移動し、Adobe Granite Crypto Bundle Key Provider (com.adobe.granite.crypto.file) という名前のバンドルを探します。 バンドル番号(例:20)をメモします。 - AEM ファイルシステムで、
<repository-folder>/crx-quickstart/launchpad/felix/bundle20に移動します(20 を前の手順での実際のバンドル番号に置き換えます)。 - data フォルダー内に、「hmac」と「master の 2 つのファイルをコピーします。
- 各ターゲット AEM インスタンスで同じ手順を繰り返し、コピーされたファイルを hmac ファイルと master ファイルに置き換えます。
- ファイルを置き換えた後、AEM インスタンスを再起動します。
- AEM オーサーの
これらの手順を実装することで、資格情報のローテーション後に、パブリッシュ環境で OAuth フローが正常に再確立されます。
3d58f420-19b5-47a0-a122-5c9dab55ec7f