我们使用 Windows身份验证。我已经创建了 WebAPI / MVC 应用程序。
托管在生产服务器 / IIS 时,appplication需要凭据才能对外部网站执行 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 帐户的情况下执行外部请求?
答案 0 :(得分:0)
您是否尝试使用
明确设置凭据var proxyConfig = new WebProxy(
proxyServerUrl,
BypassOnLocal: false,
BypassList: null,
Credentials: new NetworkCredential(username, password)
);
用户名/密码应该是代理服务器上的授权用户。由于您使用的是Windows身份验证,因此您可能需要在用户名E.g中添加域名前缀。域\用户名
这种方法应该适用于您提到的所有3种环境。