NTLM 和自动匿名身份验证 IIS

Posted

技术标签:

【中文标题】NTLM 和自动匿名身份验证 IIS【英文标题】:NTLM and automatic Anonymous authentication IIS 【发布时间】:2010-11-02 12:02:24 【问题描述】:

我有一个用于我们的 Intranet 的 MVC 应用程序,它使用 NTLM 身份验证,但是我希望能够允许外部用户访问该应用程序。到我们内部网的所有外部连接都通过 NAT 进行,因此有一个 IP 地址,可用于指示请求是否为外部请求。我希望所有内部用户都像他们已经做的那样接受 NTLM 身份验证,但是来自外部 IP 的任何连接都自动获得匿名身份验证(“匿名”是任何潜在的默认用户,例如标准网络服务或 IUSR_ 帐户,指定的域用户(严重当然为了其他目的而锁定)等)。结果是没有人会看到密码请求,除非是内部的并且拥有默认使用 NTLM 的浏览器。

我知道通常混合模式身份验证充其量是尴尬的,但我想知道这个特定的用例是否可能有其他解决问题的方法。我考虑过的一些可能性是:

    在请求到达 WindowsAuthenticationModule 之前拦截请求,在 IIS、global.asax 中的事件之一或 HTTPHandler 中,以便我们可以为指定用户注入身份验证。 在 NAT 中,有一种方法可以在指定用户的 HTTP 请求中注入 NTLM 标头。 当外部用户通过不同的主机访问它时(DNS 在他们的末端进行处理以适应他们的命名约定)让 IIS 为一个简单的代理站点提供服务,该站点接受请求,将请求转发到主网站然后使用指定用户的 NTLM 将响应发送回原始请求者。

【问题讨论】:

【参考方案1】:

我使用您描述的请求拦截方法开发了一个网站。这是link 的详细信息。

【讨论】:

以上是关于NTLM 和自动匿名身份验证 IIS的主要内容,如果未能解决你的问题,请参考以下文章

具有 Windows 身份验证 NTLM 的 IIS 10 上的 AEM Dispatcher - 启用 Dispatcher 缓存时的身份验证问题

使用集成 Windows 身份验证或 NTLM 登录 Jira

.NET HttpClient 在使用 NTLM 协商时不会在对 IIS 的请求之间保持身份验证

Python 中的 NTLM 身份验证

Active Directory 和 NTLM 身份验证

HTTP 请求未经客户端身份验证方案“Ntlm”授权