2014-03-24 267 views
0

我正在爲組織構建Intranet ASP.NET Web應用程序,並且想要使用Windows身份驗證來驗證用戶身份。我有兩個WCF WebHttpBinding綁定的自託管服務。兩者都使用webHttpBinding和RESTHttpBinding配置。Firefox不顯示身份驗證提示和Windows身份驗證

<webHttpBinding> 
    <binding name="RESTHttpBinding"> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="Windows"/> 
     </security> 
    </binding> 
    </webHttpBinding> 

我的服務行爲正確在Chrome,Opera和IE(提示認證)(在後一種情況下 - 只有當我在安全設置中設置登錄的用戶身份驗證設置爲「提示用戶名和密碼」)。但在Firefox中,我可以使用this方法來允許自動身份驗證,或獲得與this post中描述的結果完全相同的結果:只需401未授權和空白頁。

我花了小時在谷歌搜索和嘗試不同的選項。我無法找到讓Firefox向我顯示提示的方式。

回答

0

我檢查了它是如何發生在Sharepoint其中Windows身份驗證也可用於在Firefox中出現的提示和事實證明,在SharePoint服務器響應帶有一個頭

WWW-Authenticate: NTLM 

,而在我的情況我得到了與

WWW-Authenticate: Negotiate 

401響應所以我改變了我的app.config文件:

<webHttpBinding> 
    <binding name="RESTHttpBinding"> 
     <security mode="TransportCredentialOnly"> 
     <transport clientCredentialType="NTLM"/> 
     </security> 
    </binding> 
    </webHttpBinding> 

現在出現提示。

這還不是我完全滿意的解決方案:與Windows身份驗證相比,NTLM據說會降級。

0

我發現這個答案elsewhere

  1. 打開IIS並選擇正在經歷401
  2. 打開「身份驗證」屬性中的「IIS」類別的網站
  3. 單擊「Windows身份驗證「項,點擊‘供應商’上述
  4. 移動NTLM協商

如果母鹿無法工作,也許你正在使用Mac。我發現如果連接不受SSL保護,Mac Firefox甚至不允許輸入您的憑證。

+0

哦,我沒有說明它:我的服務不是由IIS託管的。它是自己託管的。 –

+0

啊,我現在看到你說過「兩個WCF WebHttpBinding綁定的自託管服務」。不過,我會留下我的回答,以防其他人使用IIS到達這裏。 – Pakman

+0

是的,我認爲這可能對某人有幫助 –