[英]How to call a Web API service from MVC using windows authentication?
[英]How to pass Windows Authentication credential from client to Web API service
在我的企业环境中,我有IIS7.5托管Web API服务和一个单独的网站,通过RestSharp库调用该服务。 两者目前都配置了Windows身份验证。
如果我使用浏览器导航到任何一个,我会被提示输入我的Windows凭证,一切都很好......我得到了我想要的网页,REST服务吐出了我的数据。 我正在努力弄清楚的部分是如何使用单个凭证进行身份验证。 我无法弄清楚如何将网站的凭证传递给服务(我尝试冒充但不起作用),或手动提示用户输入用户名/密码,然后用“Windows”验证它们。
帮助一个菜鸟?
Web API的设置
Windows Authentication
Web应用程序的设置
Windows Authentication
<system.web>
中添加<identity impersonate="true" />
在web.config中添加以下内容:
<system.webServer> <validation validateIntegratedModeConfiguration="false" /> </system.webServer>
在IIS中启用Windows Authentication
和ASP.NET Impersonation
您可以使用以下代码将数据发布到Web API(显然也可以使用GET)
using (var client = new WebClient { UseDefaultCredentials = true })
{
client.Headers.Add(HttpRequestHeader.ContentType, "application/xml; charset=utf-8");
byte[] responseArray = client.UploadData("URL of web API", "POST", Encoding.UTF8.GetBytes(XMLText));
string response = Encoding.ASCII.GetString(responseArray);
}
注意 :如果您仍然收到401错误,则可能需要使用IP地址而不是URL的常规域名(例如:155.100.100.10而不是mycompany.com)
如果您在网站上使用模拟并且API在同一服务器上运行,那么它应该可以正常运行。
http://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx
但是,如果您将API移动到与站点不同的服务器,这将停止工作。 双服务器设置需要Kerberos委派。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.