asp.net-mvc - 如果用户在 ASP.NET MVC 中匿名,则重定向到自定义 Windows 身份验证登录页面

标签 asp.net-mvc authentication active-directory windows-authentication

我有一个使用 Windows 身份验证的 ASP.NET MVC Intranet 站点。它是使用 Windows 身份验证从 ASP.NET MVC 的默认项目设置的。如果用户未经过身份验证/匿名,我一直在努力寻找有关覆盖默认登录弹出窗口的信息。

默认登录提示:

Default Windows Auth Login Prompt

我在互联网上找到的所有内容都有近 10 年的历史,使用经典的 ASP 或 Web 表单。我找不到任何使用 ASP.NET MVC 的内容。

我想要做的是将用户重定向到登录 View (如果他们是匿名/未经过身份验证)。此外,如果他们自动进行身份验证并以其他用户身份登录,则能够注销。

我遇到的主要问题是我找不到项目中实际身份验证的位置。我检查了 App_StartGlobal.asax 等。我也找不到如何覆盖它。

我知道我缺乏代码,但如果有人对此要求有良好的起点或经验,我将不胜感激。

最佳答案

嗯...不可能使用集成 Windows 身份验证为 IIS 站点实现自定义登录。原因:

  • Windows 身份验证在与表单例份验证不同的 TCP/IP 层上工作(如果我没记错的话,是互联网层与应用程序层)。此外,您还需要考虑不同的 Windows 身份验证类型和版本(具有 NTLM 回退功能的不同 Kerberos 版本)。
  • Windows 身份验证表单内置于浏览器中
  • IIS 网站不能进行混合身份验证(基于 Windows 和基于表单)

但是,有一些解决方法。我能想到两个,例如:

  1. 实现自定义成员(member)资格提供商,您可以在需要时使用模拟/委托(delegate)机制
  2. 使用 ADFS 等实现单点登录架构。

关于asp.net-mvc - 如果用户在 ASP.NET MVC 中匿名,则重定向到自定义 Windows 身份验证登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44952013/

相关文章:

asp.net - 防伪 token 适用于不同的基于声明的用户

c# - 如何在用户配置文件中创建自定义附加字段

firebase - 您可以对 2 个不同的项目使用相同的 Firebase 身份验证吗?

c# - IIS/DirectoryEntry/ASP.NET - 登录失败

asp.net-mvc - 使用 CSVHelper 将流输出到浏览器

c# - 在 Controller 上找不到捕获操作方法

php - 如何获取服务器上用户的日历信息?

java - JSF 2 - 页面访问取决于用户角色

SVN + SASL + ActiveDirectory : How to

asp.net-mvc - 配置 ASP.NET MVC 以针对 AD 进行身份验证