WPF在带有凭据的浏览器中打开URL

时间:2011-06-29 04:12:12

标签: wpf internet-explorer credentials

如何在新的浏览器窗口中打开URL,该窗口受用户名/密码对话框保护并自动填充这些字段(甚至更好地将凭据传递给浏览器)?

注意我需要在新的浏览器窗口中打开它, WPF WebControl。

目前我正在使用LaunchUriOrFileAction,可以正常打开新的浏览器窗口,但我需要自动填充凭据。

默认浏览器将是客户端的IE8。所以http://user:pass@example.com的旧方法不会起作用。

由于

1 个答案:

答案 0 :(得分:3)

以下解决方案使用WebBrowser控件打开新的IE浏览器窗口。它有效,但有几个限制:

  • 显然,它只能打开IE - 如果你想让它打开Firefox
  • ,这将无效
  • 新的浏览器窗口显示在后台,任务栏中有一个闪烁的按钮
  • 浏览器实际上并不记得凭据,因此如果用户尝试导航到另一个受密码保护的页面,系统会收到提示

void OpenIEToAuthenticatedUrl(string url, string username, string password)
{
  using (WebBrowser browser = new WebBrowser()) {
    string userPass = username + ":" + password;
    string encodedUserPass = Convert.ToBase64String(
      Encoding.ASCII.GetBytes(userPass)
    );

    browser.Navigate(
      url,
      Guid.NewGuid().ToString(), // Force a new window by passing a unique frame name
      null, // No POST data
      "Authorization: Basic " + encodedUserPass
    );
  }
}

...

OpenIEToAuthenticatedUrl(
  "http://example.com/", 
  "user", "pass"
);