【发布时间】:2023-03-22 06:42:01
【问题描述】:
我目前正在处理一个项目,该项目的需求给我带来了一些问题,我想知道处理它的最佳方法。
本质上,我们希望内部用户能够访问 MVC 应用程序并通过 AD 进行身份验证,我们希望这与 SSO 非常相似,他们登录到他们的计算机导航到该站点并进入。
第二种类型的用户是我们 AD 中不存在的外部合作伙伴,我们希望通过我们的 SQL Server 进行管理。对于这些用户,我们希望显示一个登录页面并进行表单身份验证。
起初我的想法很简单,让 IIS 尝试使用 windows 身份验证进行身份验证,如果失败 (401) 重定向到登录页面。我目前没有一个环境来测试它,但根据我对 IIS7 的理解,它并不是那么简单,需要一点“hack”来完成。我需要避免类似的事情,我需要一个解决方案,该解决方案可以像系统设计的那样工作,而不是通过欺骗它。
我研究过 ADFS 和 WIF,但 ADFS 只支持 AD 而不是 SQL,据我所知,没有支持 SQL Server 的 STS。我曾考虑托管使用 Windows 身份验证的内部应用程序和使用表单身份验证的外部应用程序,但我想尽可能避免这种情况。
理想情况下,我们想要的流程是用户导航到 MVC 应用程序 IIS 尝试执行 Windows 身份验证,如果失败 (401) 将他们重定向到登录页面。从那里登录页面将根据 SQL 数据库验证用户凭据。在 1 个 MVC 应用程序中完成这一切的最佳方式是什么?
谢谢!
【问题讨论】:
-
我将首先通过检查 Active Directory 中的信息来验证用户身份,如果找到,则直接登录。否则显示登录页面。从数据库验证用户凭据。可能还有其他方法可以做,但我觉得这很容易。
-
您检查 AD 的方法是什么,是从 MVC 端还是 IIS?我们希望利用 IIS 进行 Windows 身份验证。
-
无论哪种方式都可以。如果在您的 MVC 应用程序中启用了 windows 身份验证,那么您可以使用 User.Identity.Name 来获取 AD 用户名并查看用户是否经过身份验证。
-
是否可以简单地将它们添加到您的广告中?您将不得不以一种或另一种方式管理登录。为什么不是AD?他们不需要任何内部网络权限。
标签: c# asp.net-mvc authentication iis