[英]How to make an external GET request from IIS hosted WebAPI/MVC app (via proxy server)
我們使用Windows身份驗證 。 我已經創建了兩個WebAPI / MVC應用程序。
當托管在生產服務器 / IIS上時,應用程序需要憑據才能對外部站點執行HTTP GET 。 由於某些原因,我們暫時無法使用特殊的AD帳戶 。
我已經閱讀過有關ASP.NET模擬的信息 。 據我了解,可以合並呼叫者的憑證嗎? 盡管我不確定這是否適合與WebAPI一起使用,但我嘗試使用此代碼。
[HttpGet]
[Route("api/test")]
public HttpResponseMessage test() {
using(var ctx = WindowsIdentity.GetCurrent().Impersonate()) {
var proxyOptions = new WebProxy("[proxyUrl]");
proxyOptions.UseDefaultCredentials = true;
var client = new WebClient();
client.UseDefaultCredentials = true;
client.Proxy = proxyOptions;
return new HttpResponseMessage {
Content = new StringContent(
content: client.DownloadString("[externalApiUrl]"),
encoding: Encoding.Default,
mediaType: "text/plain"
)
};
}
}
無論如何,這是行不通的。
我應該配置委派而不是模擬嗎?
如何在沒有單獨的AD帳戶的情況下執行外部請求?
您是否嘗試使用以下方式顯式設置憑據
var proxyConfig = new WebProxy(
proxyServerUrl,
BypassOnLocal: false,
BypassList: null,
Credentials: new NetworkCredential(username, password)
);
用戶名/密碼應該是代理服務器上的授權用戶。 由於您使用的是Windows身份驗證,因此可能需要在用戶名Eg domain \\ username中添加域名前綴
該方法應該在您提到的所有3種環境中均有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.