【问题标题】:Hooking into Windows Authentication for credentials when Authenticating against LDAP在针对 LDAP 进行身份验证时挂钩到 Windows 身份验证以获取凭据
【发布时间】: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


【解决方案1】:

如果我正确阅读了您的问题,您可能想要执行以下操作...

1) 创建 2 个授权过滤器:一个使用 AD,一个使用 BasicAuthentication

2) 按你想要的顺序排列它们。在你的情况下,如果我理解正确,你想先检查 AD。如果 AD 身份验证失败,您将故障转移到基本身份验证(这是您实施 401 质询的地方)。 为确保过滤器按您想要的顺序执行,请注意过滤器上的 Order 属性:https://msdn.microsoft.com/en-us/library/gg401854%28v=vs.98%29.aspx

3) 无论您最终使用哪种过滤器(AD 或 BasicAuth),您都可以从那里设置您的 OWIN cookie

希望对您有所帮助。

【讨论】:

  • 问题在于 BasicAuthentication 过滤器的实现。你是怎么做到的?
  • 你能说得更具体一点吗?它到底有什么问题?你不知道怎么做或有什么特别之处吗?
  • 下面是一个例子:ryadel.com/en/…
  • 我不知道该怎么做。但是鉴于您的链接 - 看起来很简单。
  • 是的,它非常简单。您只需将过滤器连接到请求管道并检查您需要的任何内容(在本例中为基本身份验证标头)并根据检查返回结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多