在Windows上通过Web浏览器无需用户名和密码登录

4
我听说在Windows上,您可以通过使用NTLM协议直接使用Windows凭据而无需输入用户名和密码来从Web浏览器登录到Web服务器。
这是如何实现的?Web服务器需要支持某些额外的身份验证吗?
更新:我要求通用的Web服务器,不仅仅是IIS。例如,在Apache上如何做到这一点?
8个回答

5
网络服务器只需要配置支持Windows身份验证(如果客户端和服务器都是W2K或更高版本,则为NTLM,或者更好的选择是Kerberos)。我相信可以配置IIS或Apache来实现这一点。
浏览器也必须支持此功能-至少IE支持(其他浏览器不确定是否支持)。编辑:看起来Firefox也有一些支持,MacOS上的Safari也是如此。
编辑:有关Apache的详细信息,请搜索NTLM身份验证模块。Kerberos模块也存在。根据其他答案,这仅在Intranet上起作用-不仅因为浏览器需要处于Intranet区域(仅适用于IE),而且因为任何中间防火墙通常会阻止此操作,并且可能不存在必要的跨域信任。如果Apache服务器在UNIX上,并且特别是如果混合中还有Kerberos服务器,则使其正常工作有点棘手,但仍然是可能的。

3

只有在特定情况下才能实现无缝连接;即Web服务器需要支持NTLM(例如,IIS),并且它需要在客户端配置为信任的区域内(在IE中称为“Intranet Zone”,除非最终用户已调整其设置)。


2
如果您的Web服务器和客户端电脑位于由Active Directory或类似安全网络保护的网络上,则可以在Web服务器上为网站设置“Windows集成安全性”,这将自动登录所有受允许的IE客户端。请注意,不要删除文本中的HTML标签。

1

如先前所述,如果您的后端是Windows Managed(MS Active Directory),则通常使用NTLM。但是,也有适用于Apache的模块可与之连接:mod_ntlm

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

从我的经验来看,Kerberos更像是一种首选方法,但我没有太多的使用经验,因此很遗憾,我在这方面没有太多建议。

另外,我记得在某个地方读到过JRE也有办法将其与Web服务器上的NTLM连接起来,以获取已认证用户的身份信息。如先前所述,.NET也支持此功能。

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


0

如果您将IIS设置为需要身份验证,则用户需要登录才能访问页面。然后,他们拥有任何权限(如果不是接口)来访问服务器上的任何内容,就像从控制台正常登录一样。

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


0

是的,这是可能的。它经常用于内部网络应用程序中,其中用户使用 NTLMKerberos 对中央服务(通常是 Windows 平台上的 Active Directory)进行授权。在 .NET 平台上,可以通过 System.Threading.Thread.CurrentPrincipal.Identity 实例访问当前用户信息。


0

你可能还想了解Jespa。它似乎比Kerberos更直接,但提供了良好的NTLM SSO功能。


0

我正在寻找有关Kerberos的更多信息(因为NTLM,即使是v2,在AD 2008中也已过时),然后我发现了这篇文章,解释了如何在Apache中使用它(正如你提到的那样)。 http://blog.scottlowe.org/2006/08/10/kerberos-based-sso-with-apache/

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接