Campaign Azure Blob SAS附件身份验证失败
当投放使用由SAS签名的HTTPS URL引用的Azure Blob存储文件时,Adobe Campaign投放准备可能会失败。 URL可能会在浏览器中或使用curl成功运行,但在Campaign在投放准备期间检索附件时失败。
描述 description
在投放准备期间,Campaign尝试从Azure Blob存储下载附件并返回HTTP 403身份验证错误:
*HTTP查询返回了“服务器无法验证请求。
确保Authorization标头的值格式正确**包括签名。'***类型错误。
*即使出现以下情况,也可能出现问题: Azure Blob URL可在Web浏览器中工作。
- 当正确引用时,同一URL可用于curl。
- Azure Blob端点已在MID级别列入允许列表。
- 问题会在暂存和生产环境中重现。
- Campaign日志中的SAS URL格式正确。在某些变体中,手动输入XML转义URL可能会导致HTTP 409错误,例如PublicAccessNotPermissed。业务影响是在发送之前投放准备失败,阻止依赖于Azure托管的附件的电子邮件投放。## 解决方法 resolution**
根本原因
该问题是由于Campaign在发送HTTP请求之前对远程附件URL进行了重新编码所导致。Azure SAS URL的签名中通常包含百分比编码的字符,例如:%2B
%3DCampaign在附件提取操作期间再次对URL进行编码。 因此,已编码的字符可能会变为双重编码:原始值: %2B
发送值: %252B然后,Azure会从用于生成SAS令牌的签名值中接收其他签名值。 由于签名不再匹配,Azure会拒绝请求,但身份验证失败。&与&呈现不是Campaign正常处理URL时的根本原因。 XML序列化可以将&符号表示为,Campaign可以取消对它的转义。 但是,手动输入URL和URL可能会导致查询分隔符解释不正确,并导致409响应,而不是预期的SAS身份验证错误。URL列入允许列表不能解决此问题,因为请求到达Azure,但包含修改后的或无效的SAS签名。调查还确定,对于此投放方案,使用远程Azure Blob SAS URL作为动态检索的附件存在无文档的使用缺口。
分辨率
*推荐且支持的方法是,在准备投放之前将Azure Blob文件下载到Campaign服务器。 使用相应的文件传输机制或调用Azure Blob API的JavaScript活动,在工作流中检索文件。
- 将文件存储在Campaign服务器上。
- 配置投放附件以引用本地服务器端文件路径。
- 运行测试投放,以验证文件在投放准备期间是否可用。这可避免Campaign的远程URL重新编码行为,并遵循服务器 — 本地附件模式。**