Campaign Azure Blob SAS附件驗證失敗

當傳遞使用由SAS簽署的HTTPS URL參考的Azure Blob儲存體檔案時,Adobe Campaign傳遞準備可能會失敗。 URL在瀏覽器中或使用curl時可能會成功運作,但在Campaign在傳遞準備期間擷取附件時失敗。

說明 description

在傳遞準備期間,Campaign會嘗試從Azure Blob儲存體下載附件,並傳回HTTP 403驗證錯誤:

*HTTP查詢傳回「伺服器無法驗證要求」。
確定授權標頭的值格式正確**包含簽章。'***​型別錯誤。

*即使出現以下情況,也可能發生問題: Azure Blob URL可在網頁瀏覽器中運作。

根本原因

該問題是因為在傳送HTTP請求之前Campaign對遠端附件URL重新編碼所導致。Azure SAS URL的簽名中通常包含百分比編碼的字元,例如:%2B
%3D
Campaign會在附件擷取作業期間再次編碼URL。 因此,已編碼的字元可能會變成雙重編碼:原始值: %2B
傳送值: %252B然後Azure會從用來產生SAS權杖的簽名值中接收不同的簽名值。 由於簽名不再相符,Azure會拒絕驗證失敗的要求。&與&的對比及呈現並不是Campaign正常處理URL時的根本原因。 XML序列化可將&符號表示為&,Campaign則可將其逸出。 然而,手動進入URL可能會導致查詢分隔符號被錯誤解譯,並導致409回應而不是預期的SAS驗證錯誤。URL允許清單無法解決問題,因為請求到達Azure,但包含修改或無效的SAS簽名。調查也認定使用遠端Azure Blob SAS URL作為動態擷取的附件時,此傳遞案例存在未記載的使用間隙。

解析度

*建議且支援的方法是在準備傳送之前,將Azure Blob檔案下載至Campaign伺服器。 使用適當的檔案傳輸機制或呼叫Azure Blob API的JavaScript活動,在工作流程中擷取檔案。

recommendation-more-help
experience-cloud-kcs-help-kbarticles