4

我听说在 Windows 上,您可以从 Web 浏览器登录到 Web 服务器,而无需通过通常的登录方式输入用户名和密码,而是使用 NTLM 协议直接使用来自 Windows 的凭据。

这是如何实现的?Web 服务器是否需要支持一些额外的身份验证?

更新:我要求一个通用的 Web 服务器,而不仅仅是 IIS。例如,如何在 Apache 上做到这一点?

4

8 回答 8

5

Web 服务器只需要配置为支持 Windows 身份验证(如果客户端和服务器都是 W2K 或更高版本,则将是 NTLM,或者 - 更好 - Kerberos)。我相信可以配置 IIS 或 Apache 来做到这一点。

浏览器也必须支持这一点 - 至少 IE 支持(不确定其他的,它可能是可能的)。编辑:看起来firefox对此也有一些支持,MacOS上的safari

编辑:有关 apache 的详细信息,用于 NTLM 身份验证的谷歌模块。Kerberos 模块也存在。根据其他答案,这实际上仅适用于 Intranet - 不仅因为浏览器需要位于 Intranet 区域(仅适用于 IE),而且因为任何干预防火墙通常会停止此工作,并且因为必要的域间信任将可能不存在。如果 apache 服务器在 UNIX 上,特别是如果您在 UNIX 上也有 Kerberos 服务器,则工作起来也有点棘手,但仍然可能。

于 2009-01-07T22:22:18.513 回答
3

它只会在特定情况下是无缝的;即网络服务器需要支持 NTLM(例如,IIS),并且它需要位于客户端配置为信任的区域(IE 用语中的“Intranet 区域”,除非最终用户调整了他们的设置)

于 2009-01-07T22:25:42.237 回答
2

如果您的网络服务器和客户端电脑位于由 Active Directory 或类似网络保护的网络上,您可以在网络服务器上的 IIS 中为网站设置“Windows 集成安全性”,该网站会自动登录所有 IE 客户端(允许)。

于 2009-01-07T22:22:28.310 回答
1

如前所述,如果您的后端是 Windows 托管 (MS Active Directory),则通常使用 NTLM。但是,也有一些可用于 Apache 的模块与此相关:mod_ntlm

由于这是它自己的协议,因此要求浏览器能够理解该协议并回复身份验证挑战。我不知道哪些浏览器支持这一点,但我的假设是大多数浏览器都支持。

根据我的经验,kerberos 更像是一种首选方法,但我并没有太多地使用它,所以不幸的是,就此而言,我没有太多建议。

在旁注中,我记得在某处读到 JRE 也有一些方法可以绑定到您的 Web 服务器上的 NTLM,以便获取经过身份验证的用户的身份信息。如前所述,.NET 也对此提供支持。

此外,Firefox 默认不支持 NTLM,但可以使用以下 tut 进行配置:http://www.crossedconnections.org/w/?p=89

于 2009-01-07T22:45:29.077 回答
0

如果您将 IIS 设置设置为需要身份验证,那么您的用户将需要登录才能访问该页面。然后,如果他们以正常方式(从控制台)登录,他们将拥有对该服务器上任何内容的任何权利(如果不是接口)。

除此之外,我不确定您指的是什么。

于 2009-01-07T22:22:00.323 回答
0

是的,这是可能的。它通常用于用户所在的Intranet应用程序中。windows 使用NTLMKerberos授权用户使用中央服务,通常是 windows 平台上的Active Directory 。在 .NET 平台上,可以通过System.Threading.Thread.CurrentPrincipal.Identity实例访问当前用户信息。

于 2009-01-07T22:34:22.297 回答
0

您可能还想研究 Jespa。它似乎比 Kerberos 更直接一些,但提供了良好的 ntlm sso 功能。

于 2011-08-16T14:18:07.633 回答
0

我一直在寻找有关 Kerberos 的更多信息(因为 NTLM,甚至 v2,在 AD 2008 中都已弃用),我找到了这篇文章,解释了如何使它与 Apache 一起工作(正如你提到的那样)。 http://blog.scottlowe.org/2006/08/10/kerberos-based-sso-with-apache/

这个问题可能已经过时(或至少已解决),但如果它可以帮助某人......

于 2012-03-13T12:51:21.310 回答