我想訪問受密碼保護的網站。它不使用基本身份驗證(即使在Firefox中彈出相同的用戶/傳遞框),因爲響應標頭爲WWW-Authenticate: Negotiate
。身份驗證問題與WWW身份驗證:協商
我想通過發送正確的標題來自動登錄過程。
在基本的,你會使用類似:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
我會用什麼來談判?
我想訪問受密碼保護的網站。它不使用基本身份驗證(即使在Firefox中彈出相同的用戶/傳遞框),因爲響應標頭爲WWW-Authenticate: Negotiate
。身份驗證問題與WWW身份驗證:協商
我想通過發送正確的標題來自動登錄過程。
在基本的,你會使用類似:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
我會用什麼來談判?
Web服務器正在提示您輸入SPNEGO(簡單和受保護的GSSAPI協商機制)令牌。
這是用於協商類型的認證的用於Web SSO(單點登錄)一個微軟發明:
參見:
在我正在使用的其中一個應用程序中,ADFS服務器在具有值的響應中響應兩個WWW-Authenticate標頭字段 WWW-Authenticate:Negotiate WWW-Authenticate:NTLM 第一個帶「Negotiate」意思?從提琴手怎麼能弄清楚什麼認證協議最終被使用? – 2014-06-12 10:34:06
這裏把這些信息用於未來的讀者的利益。
401 (Unauthorized) response header - >請求認證頭
這裏有幾個WWW-Authenticate
response headers。 (完整名單是在IANA:HTTP Authentication Schemes。)
WWW-Authenticate: Basic
- >授權:基本+令牌 - 對於基本身份驗證WWW-Authenticate: NTLM
- >授權:NTLM +令牌(2個挑戰)WWW-Authenticate: Negotiate
- >授權:協商+令牌 - 用於Kerberos認證
Negotiate
:此認證方案違背了HTTP的語義(即連接面向)和語法(使用與WWW-Authenticate和Authorization頭域語法不兼容的語法)。只能設置Authorization: Basic
頭,當你也有你的401挑戰WWW-Authenticate: Basic
頭。
但是既然你有WWW-Authenticate: Negotiate
這應該是基於Kerberos的認證的情況。
WWW-Authenticate:Negotiate標頭意味着服務器可以使用NTLM或Kerberos(至少在Windows 7和Win 2008 Server之前的操作系統(當添加其他安全支持提供程序時)用於身份驗證和加密。在這種NTLM的情況下,協商需要在安全會話建立之前交換多個消息(質詢/響應),因此從頭開始不會發送「正確的頭」。 您可以在http://msdn.microsoft.com/en-us/library/aa378748%28VS.85%29.aspx(由Microsoft提供的SSP軟件包)中找到有關您的問題的詳細信息。 – 2010-11-24 12:10:01