基于OAuth的客户端凭据轮换在Author中有效,但在Publish中无效

在Adobe Experience Manager (AEM) Forms中旋转OAuth客户端凭据时,尽管在Author中工作,发布实例上的身份验证失败。 此问题通常是由实例之间的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

原因

该问题归因于内存中存储的刷新令牌过期而导致获取访问令牌失败。 Author和Publish之间的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加密包密钥提供程序(com.adobe.granite.crypto.file) ​的包。 记下捆绑包编号(例如20)。
    2. 在AEM文件系统上,导航到: <repository-folder>/crx-quickstart/launchpad/felix/bundle20 (将20替换为上一步中的实际捆绑包编号)。
    3. data 文件夹内,复制两个文件: hmacmaster
    4. 在每个目标AEM实例上重复该过程,将其 hmacmaster 文件替换为复制的版本。
    5. 替换文件后,重新启动AEM实例。

通过实施这些步骤,在凭据轮换后,成功在Publish上重新建立OAuth流程。

相关阅读

社区Adobe Experience Manager Sites中的AEM 6.5加密支持及更多

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