簡體   English   中英

Web瀏覽器控制+身份驗證

[英]web browser control + authentication

我正在開發一個使用WebBrowser控件的Windows Phone 8應用程序。

當我將WebBrowser控件導航到經過NTLM身份驗證的網站時,沒有任何反應。 唯一的事件是導航,控件保持白色,並且觸發Navigated和NavigationFailed事件。

當我使用系統提供的Web瀏覽器應用程序導航到同一個網站時,它會顯示一個彈出窗口,詢問用戶名,密碼和域。

如何在我的應用程序中使用WebBrowser控件實現類似的行為?

我只找到了基本HTTP身份驗證的解決方法。

為了檢測這種情況,我在導航Web瀏覽器之前發出HEAD HTTP請求。

如果沒有異常發生,我將Web瀏覽器導航到該URI。

如果發生異常,我會捕獲WebException,獲取e.Response.Headers集合,並檢查WWW-Authenticate值。 如果該值非空,我結束服務器請求身份驗證。

如果WWW-Authenticate值以“basic”開頭,我會使用自己的彈出控件向用戶詢問憑據。 然后我通過發出一個HEAD請求來驗證憑證,這次設置webClient.Credentials = new NetworkCredential(user,pass);

如果它們沒問題,我最終使用以下方法將憑據傳遞給Web瀏覽器控件:

public static Uri addCredsToUri( Uri u, string user, string pass )
{
    UriBuilder uriSite = new UriBuilder( u );
    uriSite.UserName = user;
    uriSite.Password = pass;
    return uriSite.Uri;
}

但是,如果WWW-Authenticate值以“negotiate”開頭,即服務器使用NTLM身份驗證,我不知道如何將憑據傳遞給Web瀏覽器。 至少我檢測到這種情況,並向我的最終用戶顯示一條相應的錯誤消息,告訴他/她不支持NTLM身份驗證。

您可以使用您的身份驗證信息導航瀏覽器作為postdata。

webbrowser控件具有重載方法導航,它接受postdata

暫無
暫無

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

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