2011-03-23 54 views
6

我有一個web應用程序,它也執行kerberos和基本身份驗證。我不知道客戶有什麼能力。所以這兩個認證機制都在401回覆中發送。如何從Negotiate方法從協商方法回退到Basic只有當協商失敗

答覆標題包含,

WWW-Authenticate: Negotiate 
WWW-Authenticate: Basic realm="MyREALM" 

但是,我希望客戶端回落到只有在談判失敗基本身份驗證。

我想要的流量應該是這樣的,

  1. 客戶端請求
  2. 服務器與WWW驗證響應:協商
  3. 用(無論是與錯誤的身份驗證數據,或者與某些客戶端重新請求標誌指示它不能繼續)
  4. 服務器再次響應WWW-Authenticate:Basic realm =「MYREALM」
  5. 客戶端執行基本身份驗證。

我該怎麼做?我修改了服務器代碼來執行此操作。但不在任何域中的瀏覽器(它應該執行基本身份驗證)在步驟2後不響應。

+1

是的,你使用的是什麼瀏覽器和服務器?瀏覽器必須知道在收到401 WWW-Authenticate:Negotiate時附加SPNEGO票證。如果瀏覽器不知道如何附加上述SPNEGO票據,它將通過顯示服務返回的401頁面來停止握手。 我已通過控制器重定向所有401響應並在用戶會話中跟蹤已將** 401 **發送給** WWW-Authenticate:Negotiate **的事實,從而實現登錄回退。在這種情況下,我重定向到登錄頁面,否則我只是顯示框標準401頁面。 – diginoise 2014-08-22 13:09:28

回答

0

什麼是您的瀏覽器?具體的RFC chapter 4.6要求瀏覽器必須使用提供的最強權威認證。我無法回想一下,如果瀏覽器無法獲取證書,它應該做些什麼。