我从来没有为
ASP.NET MVC Web应用程序使用Windows身份验证,而是使用表单身份验证。最近,我有一个ASP.NET MVC 4 Web应用程序,需要为授予登录我的公司Web服务器的用户提供Windows身份验证。所以,我有一些关于Windows认证的问题。我使用的是Visual Studio 2012。
> Windows验证如何工作?
>如何在web.config文件中正确实现Windows身份验证?
>如何测试Windows身份验证是否真的适用于我的ASP.NET MVC 4网站?换句话说,我该如何在本地开发的PC上使用本地的IIS(版本8)和我的公司的真正的Web服务器与IIS版本7进行测试?
解决方法
针对IIS 8.5和MVC 4:
Windows身份验证如何工作?
在此模式下,User.Identity(如HttpContext.Current.User.Identity中所示)由底层Web服务器填充。这可能是来自@R Kumar的链接中的IIS Express,或者@Thomas Benz在视频中充分展现了IIS。
具体来说,User.Identity是一个WindowsIdentity对象。例如。以下演员将工作:
WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;
如何在web.config文件中正确实现Windows身份验证?
<system.web> <authentication mode="Windows" /> ...
如何验证Windows身份验证是否适用于我的ASP.NET MVC 4网站?换句话说,如何在本地开发的PC上使用本地IIS(版本8)以及在我的公司的IIS 7版本的真实Web服务器上进行测试?
首先,更改ASP.NET授权以排除当前用户。例如。
<system.web> <authentication mode="Windows" /> <authorization> <allow users="yourdomain\someotheruser" /> <deny users="*" /> </authorization>
其次,使用IIS管理器为您的站点启用Windows身份验证。它在“验证”功能下。并禁用匿名身份验证。
请注意,较旧的解释将建议您在网站的web.config的元素下进行更改。但是,由于安全原因,最近的IIS实现会阻止这种情况。
三,将浏览器指向网页。浏览器应该要求您提供凭据,因为当前用户不允许访问该网站。提供网站授权的,并且您的MVC代码应该运行。
四,检查用户身份。例如。
WindowsIdentity clientId = (WindowsIdentity)HttpContext.Current.User.Identity;