【发布时间】: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 将响应发送回原始请求者。
【问题讨论】:
标签: asp.net authentication iis-7 proxy ntlm