2009-01-07 191 views
4

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

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

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

回答

5

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

浏览器也必须支持 - 至少IE浏览器是这样做的(不知道其他人是否有可能)。 编辑:看起来像Firefox有一些这方面的支持也和Safari在Mac OS

编辑:关于阿帕奇细节,谷歌NTLM身份验证模块。 Kerberos模块也存在。根据其他答案,这只能在Intranet上运行 - 不仅仅是因为浏览器需要位于Intranet区域(仅适用于IE),而且因为任何干预防火墙通常都会停止这项工作,并且因为必要的域间信任将会可能不存在。如果apache服务器位于UNIX上,并且尤其是在UNIX上也有UNIX上的Kerberos服务器,但仍然可能,那么开展工作也有点麻烦。

0

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

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

2

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

3

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

0

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

1

如前所述,如果您的后端是Windows托管(MS活动目录),通常会使用NTLM。但是,也有可用于Apache的模块,这些模块将与此绑定:mod_ntlm

由于这是它自己的协议,所以浏览器需要能够理解这个协议并回复认证挑战。我不知道哪些浏览器支持这种方式,但我的假设是大多数人会这样做。

从我的经验来看,kerberos更像是一种喜欢的方法,但我没有太多的工作,所以很遗憾,我没有太多的建议。

在附注中,我记得在某处阅读JRE时,您也可以在Web服务器上绑定到NTLM,以获取经过身份验证的用户的身份信息。如前所述,.NET也支持这一点。

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

0

你可能也想看看Jespa。看起来比Kerberos更直接一点,但提供了很好的NTLM sso功能。

0

我一直在寻找更多关于Kerberos的信息(因为NTLM,甚至v2,将会被AD 2008弃用),并且我找到了这篇文章,解释了如何使它与Apache协同工作(就像你提到的那样)。 http://blog.scottlowe.org/2006/08/10/kerberos-based-sso-with-apache/

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

相关问题