對於Web應用程序,服務器決定要遵循哪種身份驗證方法,還是客戶端。服務器是否決定要遵循哪種驗證方法?
像NTLM和Kerberos Browser這樣的認證方法是特定的。
在Intranet Web應用程序中,與NTLM和Kerberos相比,BASIC和Diget的地位如何?
謝謝:)
對於Web應用程序,服務器決定要遵循哪種身份驗證方法,還是客戶端。服務器是否決定要遵循哪種驗證方法?
像NTLM和Kerberos Browser這樣的認證方法是特定的。
在Intranet Web應用程序中,與NTLM和Kerberos相比,BASIC和Diget的地位如何?
謝謝:)
正如RFC 2617討論的,它需要雙方的合作。
當需要證書來訪問資源時,服務器將發送一個401
響應,其中包含一個或多個WWW-Authenticate
標題,用於指示它支持的身份驗證類型。如果有多個WWW-Authenticate
頭文件,則客戶端「必須選擇使用它理解的最強認證方案並根據該挑戰請求證書。」
因此,一個響應可以是:
WWW-Authenticate: Basic realm="protected area"
WWW-Authenticate: Digest
realm="protected area"
qop="auth"
nonce="ea9c8142787af00ec11bd0eac248cac930"
opaque="cdc069ca3ffe57acff21c259deadbeef"
WWW-Authenticate: Negotiate
這表明該服務器願意,通過說「SPNEGO」在RFC 2617和NTLM或Kerberos描述接受基本和摘要機制(在協商機制)上述RFC 4559。
然後客戶端必須決定哪個方案是最強的,然後再發送請求。這是達到所討論的用戶代理,但這些機制的額定在假定的弱點強度(因此最優選的是最後):
Basic不提供安全性,明文口令可以是瑣碎地恢復。只應在安全性爲零或層已經使用TLS加密時才使用。
Digest是詢問/響應機制依賴於的是,在這一點上,不被認爲是強加密的哈希算法。
NTLM是這種挑戰/響應機制,一個家庭 - 甚至在其最強(NTLMv2的)依靠哈希算法不強加密。然而,NTLM的一個優點是,Windows計算機上的用戶在登錄過程中密碼被散列,這樣他們就可以成爲算法的輸入,從而允許對網站進行「單點登錄」而無需重新輸入密碼。
Kerberos提供使用可信密鑰分發中心(KDC)的安全認證,是企業內部網的最佳選擇,但不太可能是一個可行的機制,以在互聯網上的所有客戶端。
任何這些協議的弱點的影響可以通過保護會話使用TLS來提供傳輸的加密減少,而應絕對任何不信任的網絡上執行(即,在大型互聯網) 。