簡體   English   中英

摘要式身份驗證不適用於IE8,Firefox和Chrome瀏覽器

[英]Digest authentication not working on IE8, Firefox and Chrome are fine

我有一個需要摘要身份驗證的網站,當我使用IE8瀏覽該網站時,即使密碼正確也可以顯示401。 Firefox和Chrome可以正常運行。 我用Fiddler檢查了授權標頭,一切似乎都很好。 您能給我有關這個問題的任何提示嗎?

ps另外,在C#中實現摘要身份驗證確實存在相同的問題,我不知道這兩者是相關的。

我正面臨這個問題,這是網絡上唯一提及它的地方。 在摘要訪問身份驗證中,發生的事件順序是。

  1. 在/ url上獲取
  2. 帶有WWW-Authenticate標頭的401這將在瀏覽器上彈出登錄對話框。 輸入憑據后。
  3. 在/ url上獲取Authorization標頭。
  4. 200 OK(如果一切順利)。

這對於Firefox和Chrome可以正常工作,但不適用於IE8。

完全我的意思是,如果我在服務器上的虛擬位置上執行了GET操作,則可以使用,但是當我對靜態文件執行GET操作時,則無法使用。 對於靜態文件,系統會提示我一次又一次登錄。

使用嗅探器后,我發現在請求虛擬位置的情況下,事件序列如上所述發生,但是當我請求靜態文件時,序列如下:

  1. 在/ url上獲取
  2. 帶有WWW-Authenticate標頭的401這將在瀏覽器上彈出登錄對話框。 輸入憑據后。
  3. 在/ url上獲取(不包括授權標頭)
  4. 401未經授權。

基本上,當它是靜態文件時,它使用了用戶名和密碼,但從未在Authorization標頭中發送過。 服務器未收到此標頭,並返回401,再次提示登錄。

為了使IE8正常工作,您必須以為它不是一個靜態文件,而是一個虛擬位置來欺騙它。 對我來說,這很容易,因為我可以訪問服務器的源代碼。 如果您無權訪問,我真的不知道該怎么做。

如果您已請求虛擬位置。 1. GET / virtual_location 2.帶有WWW-Authenticate標頭的401,看起來像

WWW-Authenticate:摘要域=“ validusers@robapi.abb”,域=“ 127.0.0.1:80”,qop =“ auth”,nonce =“ 9001cd8a528157344c6373810637d030”,opaque =“”,算法=“ MD5”,陳舊= “假”

注意opapue參數是一個空字符串。

另一方面,如果您請求一個靜態文件1. GET /staticfile.txt 2.帶有WWW-Authenticate標頭的401,它看起來像

WWW-Authenticate:摘要領域=“ validusers@robapi.abb”,域=“ 127.0.0.1:80”,qop =“ auth”,nonce =“ 81bd1ca10ed6314570b7362484f0fd31”,opaque =“ 0-1c5-4f7f4c1e”,算法=“ MD5“,陳舊=” FALSE“

這里的opaque參數是一個非空字符串。

因此,如果確保opaque參數始終為空字符串,則IE8會將其視為虛擬位置,並且請求將正常通過。 由於我可以訪問服務器的代碼,因此可以執行此操作。

希望這會有所幫助。

問候,薩蒂亞·西杜

我有同樣的問題。 就我而言,我需要使用“ <Directory />”或“ <Location />”中的指令對整個站點進行摘要身份驗證。 兩種方法都適用於Mac,PC和iOS上的Firefox和Safari。 不幸的是,IE8似乎對此有麻煩。 在嘗試了其他幾處更改之后,我終於發現,如果只需要在子目錄(例如“ <Location / private>”)上進行身份驗證,然后將我的內容移動到受保護的目錄中,IE8就可以開始工作。 我來回幾次,僅更改了此屬性,以確認這是關鍵的區別。

順便說一句,值得注意的是tcpdump顯示IE8甚至沒有嘗試發送摘要身份驗證。 它顯示了auth對話框,使用了我的用戶名和密碼,然后發送了沒有身份驗證信息的普通GET請求。

您是否正在保護整個內容樹?

我不確定為什么IE8(而且只有IE8)關心這種區別,但這就是我發現的。

在尋找問題的解決方案時,您的唯一提及似乎相關,而我在網上找不到任何答案。 這使我相信,要么沒人嘗試以這種方式配置摘要式身份驗證,要么大多數人只是放棄並使用Firefox(或其他非MS瀏覽器)

哇,我肯定有同樣的問題。 我有兩個虛擬主機,都使用摘要式身份驗證。 在一個網站上,我試圖保護整個網站(即),並且它可以在我嘗試過的所有瀏覽器 IE8 除外)中使用 在另一個站點上,我僅保護一個子目錄,在IE8中可以正常工作。

我遇到了同樣的問題,並嘗試對整個vhost使用摘要式身份驗證。 但是以下配置在IE上不起作用。

<Location />
    AuthType Digest
    AuthName "Login"
    AuthDigestDomain /
    AuthUserFile /path/to/.htdigest
    Require valid-user
</Location>

http://lists.centos.org/pipermail/centos/2013-January/131225.html中的解決方法效果很好:

ErrorDocument 401 "some random text"

更好的解決方案是排除通常位於/error/.*的apache錯誤頁面。

e.g.
Alias /error/ "/usr/share/apache2/error/"

以下配置對我來說效果很好(另請參閱https://bz.apache.org/bugzilla/show_bug.cgi?id=10932#c5 ):

<LocationMatch "^/(?!error/)">
    AuthType Digest
    AuthName "Login"
    AuthDigestDomain /
    AuthUserFile /path/to/.htdigest
    Require valid-user
</LocationMatch>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM