2009-01-07 49 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/

這個問題可能是過時的(或至少解決),但如果它可以幫助別人...

相關問題