【发布时间】:2016-07-26 03:06:30
【问题描述】:
我有一个供员工更新详细信息的门户网站。人们使用他们的 Active Directory 凭据登录那里,我设置 OWIN cookie 进行身份验证。这都是通过 MVC 登录页面完成的,与 IIS 上的 Windows 身份验证无关。
现在公司浏览器是 Internet Explorer,并配置为自动登录到其他 Windows 身份验证站点,而不提示输入密码。当人们使用公司 PC 并登录到他们的域帐户时,就会发生这种情况。如果他们在家工作,基本身份验证提示会要求这些系统上的凭据。
现在我想在用户从工作 PC 登录到他们的 Windows 域帐户时实现自动身份验证,如果他们在家工作,则会显示登录页面。
我知道 401 质询和身份验证协商,但从未通过 ASP.Net 启动过。我已经看到将用户重定向到将 IIS 配置为 Windows 身份验证的页面的解决方案,但我希望在没有 IIS 配置的情况下完成此操作。另外我记得我曾看到有人提到一个解决方案,其中将页面加载到 <iframe> 中,在该处检查基本身份验证,如果通过该身份验证成功,则将已通过身份验证的用户重定向到登录页面。
所以我的问题归结为:有没有办法针对控制器的特定操作启动(并完成)401 挑战以进行基本身份验证?然后钩入Controller.User.Identity属性设置OWIN cookie?
统一更新: 根据 cmets:我希望 Kerberos(Windows 身份验证)在用户位于域网络时工作,因此他们会自动登录。但我不希望在用户不在域网络上时进行 Windows 身份验证,而是希望自定义登录页面,其中包含密码重置和注册选项(给定员工验证)。
【问题讨论】:
-
使用 VPN 并让用户进入公司网络。他们将找到 KDC 并通过 Kerberos 进行身份验证。
-
@Michael-O VPN 毫无疑问。用户已经在使用终端服务器 (RDP) 登录到他们的域。
-
如果他们已经在网络中,则您的网络设置有问题。考虑到本机 Micrsoft 解决方案从不使用 LDAP 绑定,而是使用 Kerberos/NTLM 等。
-
@Michael-O Network 很好。我想在他们在域网络上时自动登录。或者我想在他们不在网络上时呈现漂亮的登录页面。当无法自动登录时,没有任何可怕的 Windows 身份验证凭据提示。
-
现在清楚,你的描述不够明显。
标签: authentication asp.net-mvc-5 owin windows-authentication