【问题标题】:providing domain/user credentials to webview control为 webview 控件提供域/用户凭据
【发布时间】:2012-06-26 06:21:35
【问题描述】:

有谁知道如何为 WebView 控件提供凭据(甚至更好 - 在特定域用户的上下文中运行 Windows 8 Metro 风格应用程序/WinRT 应用程序?)我尝试遵循 HttpClient + WebView 方法作为此处列出(http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/05e46a0a-e913-469d-a4a5-4a805dcf158a)但它仍然提示用户输入凭据,因为在返回的内容中是指向受保护项目的链接。

我有一个 NetworkCredential 对象,我非常想将它应用到每个 HTTP 调用。

肯定有人以前做过吗? :)

【问题讨论】:

    标签: windows-8 impersonation winrt-xaml networkcredentials dotnet-httpclient


    【解决方案1】:

    为了连接到公司网络上的站点,您必须在 Package.appxmanifest 中启用 privateNetworkClientServer 功能。您可以在 XML 中执行此操作,也可以在 Visual Studio 中双击文件并使用设计器(功能选项卡)。在 UI 中称为“家庭或工作网络”。

    现在您可以访问 Intranet,您可以导航到该站点,但系统会提示您提供凭据。如果您希望自动提供用户域身份(企业单点登录),您还需要启用 enterpriseAuthentication 功能。这在清单 UI 中称为“企业身份验证”。

    从那里您应该能够使用 WebView 浏览到任何 Intranet 站点,而不必进行身份验证。如果您希望在 WebView 之外做一些事情,您应该查看以下文章和示例:

    使用 WebAuthenticationBroker:

    http://code.msdn.microsoft.com/windowsapps/Web-Authentication-d0485122

    WebAuthenticationBroker 有一个名为 UseCorporateNetwork 的选项。在按照上面的示例进行操作时,请务必使用它。

    最后,如果您想使用 Facebook 或 Flicr 等其他网站进行单点登录,请参阅此示例:

    http://msdn.microsoft.com/en-US/library/windows/apps/xaml/Hh465283

    【讨论】:

    • 感谢您的全面回复-但是,企业身份验证功能仅传递当前登录的用户,因此如果我需要传递其他用户(例如 Sharepoint 凭据),我仍然无法这样做,对吗?
    【解决方案2】:

    我也遇到过同样的问题,但幸运的是找到了答案:) 这里的主要问题是 Windows 商店应用程序包含 2 个不同的 HttpClient

    其中一个是我们从 c# 应用程序中知道的“经典”一个(自动使用),另一个是“新”HttpClient - 它与 WebView 连接:)

    波纹管是两种类型: System.Net.Http.HttpClient(经典之一) Windows.Web.Http.HttpClient(新的)

    所以记得声明新的 One 并执行下面的代码

    var filter = new HttpBaseProtocolFilter();    
    filter.ServerCredential = new Windows.Security.Credentials.PasswordCredential("http://website","login", "password");
                Windows.Web.Http.HttpClient client2 = new Windows.Web.Http.HttpClient(filter);
                var response = await client2.GetAsync(new Uri("http://website"));
     WebView.Source = new Uri("http://website");
    

    现在请记住将登录名和密码更改为您要使用的凭据,网站就是您要对其进行身份验证的网站。

    从服务器获取响应很重要——这将使用户通过@server 身份验证,因此下次您使用 webView 访问该站点时,您将通过身份验证

    它适用于基本身份验证和 NTLM 身份验证

    在这种 cae 场景中,请记住关闭 enterpriseAuthentication

    希望它能帮助人们寻找这个问题的解决方案:)

    【讨论】:

    • 这也适用于 javascript 中的 Windows Phone 应用程序。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多