2011-12-12 75 views
4

我有一個針對.NET 2.0的Windows窗體應用程序。我正在嘗試通過SAML 2.0協議添加單點登錄功能,對此,最有效的解決方案是嵌入式Web瀏覽器。System.Windows.Forms.WebBrowser有時會執行NTLM身份驗證 - 爲什麼?

我已驗證使用僅包含NTLM交換確實發生的WebBrowser控件的虛擬應用程序。但是,當我將明顯相同的控件嵌入到更大的應用程序中時,瀏覽器不會響應最初的HTTP 401挑戰,而是重定向到IE的「導航已取消」頁面。

谷歌還沒有出現,我對這種行爲感到困惑。任何人都可以闡明什麼可能會阻止WebBrowser的憑證協商?

回答

3

我在(工作)測試應用程序和(不工作的)完整應用程序之間逐行比較時發現了答案。

啓用NTLM協商的關鍵是將ScriptErrorsSuppressed設置爲false。我曾打算隱藏來自我們用戶的Javascript錯誤彈出窗口,但是抑制這些也會禁止憑證協商。去搞清楚。