Campaign Azure Blob SAS附件驗證失敗
當傳遞使用由SAS簽署的HTTPS URL參考的Azure Blob儲存體檔案時,Adobe Campaign傳遞準備可能會失敗。 URL在瀏覽器中或使用curl時可能會成功運作,但在Campaign在傳遞準備期間擷取附件時失敗。
說明 description
在傳遞準備期間,Campaign會嘗試從Azure Blob儲存體下載附件,並傳回HTTP 403驗證錯誤:
*HTTP查詢傳回「伺服器無法驗證要求」。
確定授權標頭的值格式正確**包含簽章。'***型別錯誤。
*即使出現以下情況,也可能發生問題: Azure Blob URL可在網頁瀏覽器中運作。
- 若正確引號,相同的URL可搭配curl使用。
- Azure Blob端點已在MID層級列入允許清單。
- 問題會在測試和生產環境中重現。
- SAS URL在Campaign記錄檔中的格式正確。在某些變體中,手動輸入XML逸出URL可能會導致HTTP 409錯誤,例如PublicAccessNotPermissed。業務影響是傳送前準備傳送會失敗,導致依賴Azure託管附件的電子郵件傳送受阻。## 解決方法 resolution**
根本原因
該問題是因為在傳送HTTP請求之前Campaign對遠端附件URL重新編碼所導致。Azure SAS URL的簽名中通常包含百分比編碼的字元,例如:%2B
%3DCampaign會在附件擷取作業期間再次編碼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活動,在工作流程中擷取檔案。
- 將檔案儲存在Campaign伺服器。
- 設定傳遞附件以參考本機伺服器端檔案路徑。
- 執行測試傳送,以確認檔案在傳送準備期間可供使用。這可避免Campaign的遠端URL重新編碼行為,並遵循伺服器 — 本機附件模式。**