更新
我能夠發布作業請求。第三方 API 讓我們發送令牌(基本上是 Guid)作為不記名令牌。Azure 似乎對此進行了某種預驗證。當我用真正隨機生成的不記名令牌換出 GUID 時,它起作用了。
我仍然想知道是否有辦法禁用此簽入 Azure。“壞”承載令牌適用于 GET 請求,但無法用于 POST/PUT 請求。
應用程式摘要 我們有 Azure Functions(即時間觸發器、Orchestrator、Activities),它們在 SQL 中查找本地隊串列中的專案,然后通過 JSON 將其發布到第三方 API。
第三方 API 需要帶有 POST 請求的 Authorization 標頭。
技術概述
- dotnet 核心 3.1
- azure 函式運行時 ~3
附加資訊
- 該代碼庫在今年 4 月至 5 月的 UAT 期間運行良好。然后它一直處于閑置狀態,直到我們幾周前重新啟動該專案。
- 出站請求不通過 APIM 代理。它們被直接發送到第三方 API
- 為 Azure 函式配置了 Application Insights
什么有效 所有 GET 請求。完全沒有問題。
什么不起作用 POST 請求。我將請求代理給了一個 Beeceptor,以準確查看收到的內容。當包含 Authorization 標頭時,大部分標頭都會被剝離(即 Content-Type、Content-Length)并且請求的正文為空白。
如果我洗掉了 Authorization 標頭,則按預期接收所有標頭和正文。
問題此時 我只能假設某些 Azure 服務、飛行前檢查、安全策略正在攔截 Authorization 標頭,認為它是用于“自身”的,但我完全不知道它可能是什么。我已經在谷歌上呆了好幾天了。
代碼的簡化版
using var client = new HttpClient();
client.DefaultRequestHeaders.Clear();
// Request params are dynamic and a helper method builds the full request path
var path = PathBuilder(queueItem.RequestParams, queueItem.Request.UrlPath);
// This can change in code not shown if the request is sending files
var contentType = "application/json";
client.BaseAddress = new Uri(queueItem.Request.Client.BaseApiUrl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue { NoCache = true };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", queueItem.Request.Client.AuthToken);
// queueItem.Data is JSON
HttpContent json = new StringContent(queueItem.Data, Encoding.UTF8, contentType);
return await client.PostAsync(path, json);
還...
- 我已確認 JSON 正文有效
- 代碼確實有效并且保持不變
uj5u.com熱心網友回復:
鑒于您已經嘗試過的所有內容,這可能是一個長期的嘗試,但是您是否嘗試過添加像 client.DefaultRequestHeaders.TryAddWithoutValidation(“Authorization”, “bearer token here...”); 這樣的令牌?然后檢查嘗試是否成功?
uj5u.com熱心網友回復:
問題的解決方案?即使在 DB 層也不要忽視單元測驗。簡而言之,該問題與 Azure 無關,而與資料如何(或未)饋入它有關。
感謝所有提供見解和建議的人。你們都幫助我通過淘汰的程序尋找解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325185.html
標籤:C# 天蓝色 .net核心 天蓝色函数 dotnet-httpclient
上一篇:Terraform匯入地圖資源
