我听说在Windows上你可以从网络浏览器登录到网络服务器,而无需通过常用的登录输入用户名和密码,而是使用NTLM协议直接使用Windows的凭据。
这是如何实现的? Web服务器是否需要支持一些额外的身份验证?
更新:我要求的是通用网络服务器,而不仅仅是IIS。例如,如何在Apache上执行此操作?
答案 0 :(得分:5)
只需将Web服务器配置为支持Windows身份验证(将是NTLM,或者 - 更好 - 如果客户端和服务器都是W2K或更高版本,则为Kerberos)。我相信IIS或Apache可以配置为这样做。
浏览器也必须支持这一点 - 至少IE会这样做(不确定其他人,可能)。 编辑:看起来像firefox也有一些支持,以及MacOS上的safari
编辑:有关apache的详细信息,请参阅用于NTLM身份验证的Google模块。 Kerberos模块也存在。根据其他答案,这实际上只适用于Intranet - 不仅仅是因为浏览器需要位于Intranet区域(仅适用于IE),而是因为任何干预防火墙通常会阻止此工作,并且因为必要的域间信任将可能不存在。如果apache服务器在UNIX上,那么工作也有点麻烦,尤其是如果你在UNIX上也有Kerberos服务器,但仍然可能。
答案 1 :(得分:3)
只有在特定情况下才会无缝;即网络服务器需要支持NTLM(例如,IIS),并且它需要位于客户端配置为信任的区域中(IE术语中的“Intranet区域”,除非最终用户调整了他们的设置)
答案 2 :(得分:2)
如果您的网络服务器和客户端电脑位于受Active Directory或类似网站保护的网络上,您可以在网络服务器上的IIS中为自动登录所有IE客户端(允许)的网站设置“Windows集成安全性”。
答案 3 :(得分:1)
如前所述,如果您的后端是Windows托管(MS Active Directory),则通常使用NTLM。但是,还有可用于Apache的模块,它们将与此相关:mod_ntlm。
由于这是它自己的协议,因此需要浏览器能够理解该协议并回复身份验证挑战。我不知道哪些浏览器支持这个,但我的假设是大多数人都这样做。
根据我的经验,kerberos更像是一种优先选择的方法,但是我并没有那么多,所以不幸的是,我没有太多的建议。
另一方面,我记得在某处读到JRE还有办法在你的网络服务器上绑定NTLM,以获取经过身份验证的用户的身份信息。如前所述,.NET也支持这一点。
此外,默认情况下Firefox不支持NTLM,但可以使用以下内容进行配置: http://www.crossedconnections.org/w/?p=89
答案 4 :(得分:0)
如果将IIS设置设置为要求身份验证,则用户需要登录才能访问该页面。然后,如果他们以正常方式(从控制台)登录,他们对该服务器上的任何内容都拥有任何权限(如果不是接口)。
除此之外,我不确定你指的是什么。
答案 5 :(得分:0)
是的,这是可能的。它通常用于用户所在的Intranet应用程序。 Windows使用 NTLM 或 Kerberos 来授权用户使用中央服务,通常是Windows平台上的 Active Directory 。在.NET平台上,可以通过 System.Threading.Thread.CurrentPrincipal.Identity 实例访问当前用户信息。
答案 6 :(得分:0)
后来我发现了一个非常相似的问题Retrieve NTLM Active Directory user data to Rails w/o IIS也有很好的答案。
答案 7 :(得分:0)
你可能也想看看Jespa。它似乎比Kerberos更直接,但提供了良好的ntlm sso功能。
答案 8 :(得分:0)
我一直在寻找有关Kerberos的更多信息(因为NTLM,甚至v2,在AD 2008中已被弃用),我找到了这篇文章,解释了如何使它与Apache一起使用(如你所提到的)。 http://blog.scottlowe.org/2006/08/10/kerberos-based-sso-with-apache/
这个问题可能已经过时(或者至少已经解决了),但如果它可以帮助某人......