2009-01-28 146 views
6

兩個WWW身份驗證添加微軟利用了,我目前知道的是我可以向客戶指出支持SPNEGO但NTLM不支持HTTP請求嗎?

  • NTLM
  • 協商

如果協商從服務器下發的基礎上,一組條件的Kerberos將用於

  • Intranet區域
  • 訪問使用主機名的服務器而不是IP
  • 集成Windows身份驗證在IE瀏覽器中啓用,主機是可信的Firefox
  • 服務器是不是本地的瀏覽器
  • 客戶端的Kerberos系統驗證到域控制器

然後Kerberos將嘗試在服務器和客戶端之間,如果上面的東西不滿足,那麼將嘗試NTLM。

我的問題是,有沒有辦法讓服務器指出NTLM不應該發送?我目前通過跟蹤會話中的請求來處理此事,並且如果收到NTLM消息,則會在該會話的其餘時間禁用Kerberos和WWW-Authenticate。

+0

由於授權問題,您是否禁用NTLM? – 2009-03-03 03:48:04

+0

不,這只是我目前不支持的Tomcat JAAS插件。它僅支持Kerberos/SPNEGO。 – 2009-03-05 19:13:52

回答

2

最初的WWW-Authenticate標題只指定negotiate。它不能再多說什麼了,比如「no NTLM」

我認爲這是可能的,以所述第一身份驗證響應:由客戶端與401 unauthorized和第二Negotiate頭中發送的Base64 {NTLMSSP}頭,其可以包括一個響應令牌,可能包括一個SupportedMechanisms僅指定的Kerberos。

但我懷疑只會讓你"unauthorized",因爲它首先倒退到NTLM。

+0

我會研究這個。 Kerberos/SPNEGO降級的大多數情況都是因爲Kerberos在Windows桌面上出現故障或環境配置錯誤導致的。有一些非常任意的,沒有記錄的要求IE必須通過NTLM來完成Kerberos。 – 2009-06-11 18:00:09

+0

@ScottMarkwell我已經注意到了這一點,但它會很高興讓IE提示憑據,甚至可能直接獲得服務票據而不是降低NTLM後備路線。 – davenpcj 2013-07-21 21:26:27

1

你可以這樣做,(至少在理論上)是的。 IE可能會做很奇怪的事情,比如發送Kerberos令牌沒有適當的SPNEGO ASN.1封裝,但是,這是一個不同的主題。在符合SPNEGO(http://tools.ietf.org/html/rfc4178#section-4.1)的實施中,您可以做到這一點。

如果您可以操縱NegTokenInit mechTypes成員以僅包含Kerberos,它將強制客戶端發送Kerberos或無法進行身份驗證。

3

是的,你可以。查看SPNEGO HTTP Servlet Filter項目的reference docs