相关疑难解决方法(0)

如何支持NTLM身份验证与ASP.NET MVC中的回退形式?

如何在ASP.NET MVC应用程序中实现以下内容:

  1. 用户打开内联网网站
  2. 如果可能,用户将进行静默身份验证
  3. 如果NTLM身份验证没有成功,请向用户显示登录表单
  4. 用户指示登录密码并从预定义域列表中选择域
  5. 用户使用AD在代码中进行身份验证

我知道如何实现4和5,但无法找到有关如何组合NTLM和表单的信息.因此,永远不会显示NTLM本机登录/密码对话框 - 透明身份验证或外观漂亮的登录页面.

该怎么办?是否应该询问用户登录名和密码?可以使用她当前的凭据(域用户名)而无需输入登录名和密码吗?

更新这些,调查相同的问题:

当我问这个时,我并不完全理解NTLM身份验证如何在内部工作.这里需要了解的重要一点是,如果用户的浏览器不能正确支持NTLM,或者用户禁用了NTLM支持,那么服务器永远不会有机会解决这个问题.

Windows身份验证的工作原理:

  1. 客户端向服务器发送常规HTTP请求
  2. 服务器以HTTP状态401响应并指示必须使用NTLM身份验证来访问资源
  3. 客户端发送NTLM Type1消息
  4. 服务器使用挑战响应NTLM Type2消息
  5. 客户端发送Type3消息以响应challenge
  6. 服务器响应请求的实际内容

如您所见,不支持NTLM的浏览器不会转到步骤(3),而是会向用户显示IIS生成的错误401页面.

如果用户没有凭据,则在取消NTLM身份验证后,弹出对话框窗口浏览器也不会继续(3).

因此,我们没有机会自动将用户重定向到自定义登录页面.

这里唯一的选择是有一个"网关"页面,我们决定用户是否应该支持NTLM,如果是,请重定向到受NTLM保护的主页.

如果没有,请显示登录表单并通过手动输入登录名和密码进行身份验证.

通常通过匹配IP范围或通过检查预定义IP表来基于用户的IP地址和/或主机名做出决定.

c# authentication asp.net-mvc ntlm

20
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net-mvc ×1

authentication ×1

c# ×1

ntlm ×1