.NET MVC身份验证 - 表单+ Windows身份验证

lem*_*s90 10 c# authentication iis asp.net-mvc

我目前正在开发一个项目,该项目的要求导致了一些问题,我想知道处理它的最佳方法.

基本上我们希望内部用户能够访问MVC应用程序并通过AD进行身份验证,我们希望它们非常像SSO,他们登录到他们的计算机导航到站点并且他们在.

第二类用户是我们AD中不存在的外部合作伙伴,我们希望通过SQL Server进行管理.对于这些用户,我们希望显示登录页面并进行表单身份验证.

我的想法一开始很简单,让IIS尝试使用Windows身份验证进行身份验证,如果失败(401)重定向到登录页面.我目前没有一个可以测试它的环境,但是根据我在IIS7中的理解,它不是那么简单,需要一点"黑客"来完成.我需要避免这样的事情,我需要一个解决方案,因为系统设计工作,而不是欺骗它.

我已经研究过ADFS和WIF,但是ADFS只支持AD而不支持SQL,而且从我看到的是没有支持SQL Server的STS.我已经考虑过托管使用Windows身份验证的内部应用程序和使用表单身份验证的外部应用程序,但我想尽可能避免这种情况.

理想情况下,我们想要的流程是用户导航到MVC应用程序IIS尝试执行Windows身份验证,如果失败(401)将它们重定向到登录页面.从那里登录页面将根据SQL数据库验证用户凭据.在1 MVC应用程序中实现这一切的最佳方法是什么?

谢谢!

Kha*_*meh 1

如果您使用 ASP.NET MVC 5,我会在 FormsAuthentication 或 OWIN 之上实现我自己的身份验证。这非常简单,您将完全控制在哪里对用户进行身份验证。相信我,它并不像听起来那么可怕。我写了几篇关于它的文章,您可能会感兴趣。

微控制器5

http://www.khalidabuhakmeh.com/asp-net-mvc-5-authentication-breakdown-part-deux

微控制器4

http://tech.pro/tutorial/1216/implementing-custom-authentication-for-aspnet

我目前使用 MVC 4 方法对 Active Directory 域进行身份验证,并取得了巨大成功。我唯一建议的是您缓存对 Active Directory 的调用,因为它有时可能不可靠。