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

本文关键字:身份验证 NET MVC Windows ASP 表单 | 更新日期: 2023-09-27 18:26:34

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

理想情况下,我只想把Windows身份验证放在它前面,这样任何拥有域帐户的人都可以登录。

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

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

    FormsAuthentication.SetAuthCookie(viewModel.Username, true);

这使得使用user对象(user.identity.name)的所有控制器和视图中都可以使用用户名

然而。。。当我在IIS中启用Windows身份验证时,web应用程序开始认为user.identity.name是"ourdomain''domainuser"。

我希望将表单身份验证与windows身份验证结合使用,但不要以任何方式将它们集成在一起。

有没有一种简单的方法可以实现这一点?

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

ASP.NET团队不正式支持在应用程序中使用混合模式身份验证。如果你在网上搜索,你会发现关于如何做到这一点的博客文章,但请注意,ASP.NET团队不鼓励这样做。不鼓励这样做的原因是,很难从正确性的角度进行推理,而且对这种设置的攻击很小,可能会让恶意客户端伪装成经过身份验证的用户。

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