【发布时间】:2018-06-19 11:03:24
【问题描述】:
我需要将 IIS 应用程序池凭据作为网络凭据传递给 .NET 应用程序中的 WebAPI 调用。
var request = (HttpWebRequest)WebRequest.Create("WEB API URL");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Credentials = new NetworkCredential("USERNAME","PASSWORD","DOMAIN");
这很好用。
我的问题是,我需要将 IIS 应用程序池凭据作为 NetworkCredential 对象传递,而不是传递硬编码凭据。
我检查了下面的代码,但对我不起作用。
WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
using (identity.Impersonate())
{
var request = (HttpWebRequest)WebRequest.Create("WEB API URL");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Credentials = CredentialCache.DefaultNetworkCredentials;
}
【问题讨论】:
-
不要在这种情况下使用基本身份验证。如果您想作为 Windows 帐户(池帐户是)进行调用,请确保服务接受 Windows 身份验证。 IIS 应用程序池用户帐户是特殊的本地 帐户,但对域中的其他计算机不可见。如果您想从另一个使用域帐户调用一项服务
-
你能指导我如何将APP POOL用户凭据传递给WEB API吗?