ASP.NET MVC Windows身份验证在表单身份验证之上

时间:2012-03-02 22:13:53

标签: c# asp.net-mvc iis forms-authentication windows-authentication

我在ASP.NET MVC中开发了一个我们在内部使用的Web应用程序。现在我们希望通过互联网上的服务器提供服务 - 让我们在现场工作时让生活更轻松。

理想情况下,我只想坚持使用Windows身份验证,以便拥有域帐户的任何人都可以登录。

问题是我已经在应用程序中使用表单身份验证。

我们对该应用没有任何密码限制,您只需选择要登录的用户,然后提交表单即可。在服务器端它只是这样做 -

    FormsAuthentication.SetAuthCookie(viewModel.Username, true);

这使用User对象(user.identity.name)在所有控制器和视图中提供用户名。

但是......当我在IIS中启用Windows身份验证时,Web应用程序开始认为user.identity.name是" mydomain \ domainuser"。

我喜欢将表单身份验证与Windows身份验证结合使用,但不能以任何方式集成。

有没有一种简单的方法可以达到这个目的?

2 个答案:

答案 0 :(得分:6)

ASP.NET团队不正式支持在应用程序中使用混合模式身份验证。如果您在网上搜索,您会发现有关如何执行此操作的博客文章,但请注意,ASP.NET团队不鼓励他们。不鼓励这样做的原因是,从正确的角度来看很难进行推理,并且对这样的设置进行了微不足道的攻击,可以允许恶意客户端伪装成经过身份验证的用户。

答案 1 :(得分:1)

在集成模式下,您无法在IIS 7及更高版本中同时使用表单身份验证和Windows身份验证。因此,我强烈反对这种做法。但是,您可以使用内置的ActiveDirectoryMembershipProvider Class通过表单对Windows用户帐户进行身份验证,并将您的登录信息绑定到该用户帐户。

相关问题