Я реализовал следующее, используя элемент управления WPF Web Browser для автоматического входа на сайт. Я обнаружил, что для навигации по сайту без потери или удаления заголовка авторизации мне пришлось сделать следующее, в противном случае для каждой новой страницы пользователю снова предлагалось. Это решение также не требует включения синтаксиса user: password @ site.
private bool _redirected = false;
private const string BaseUrl = @"http://mySite";
private void Navigate()
{
var helpUrl = BaseUrl;
var authHeader = GetAuthHeader();
_docWindow.Browser.Navigate(helpUrl, string.Empty, null, authHeader);
_docWindow.Browser.Navigating += Browser_Navigating;
}
private string GetAuthHeader()
{
byte[] authData = UnicodeEncoding.UTF8.GetBytes(_userName + ":" + _password);
string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData);
return authHeader;
}
void Browser_Navigating(object sender, System.Windows.Navigation.NavigatingCancelEventArgs e)
{
if (_redirected)
{
_redirected = false;
return;
}
var newPage = BaseUrl + e.Uri.AbsolutePath;
e.Cancel = true;
_redirected = true;
_docWindow.Browser.Navigate(newPage, string.Empty, null, GetAuthHeader());
}