Запись файлов cookie из CookieContainer в магазин cookie IE

Я хочу перейти на страницу в веб-приложении из настольного приложения. «Нет проблем», я слышал, вы говорите, «просто запустите браузер по умолчанию с правильным URL». Однако веб-приложение использует проверку подлинности на основе форм ASP.NET, и пользователи не хотят видеть страницу входа в систему, поскольку они уже прошли проверку подлинности с такими же учетными данными в приложении для настольных компьютеров.

Это звучит достаточно просто, все, что мне нужно сделать, это отправить HTTP POST из настольного приложения, которое подделывает обратную передачу со страницы входа в систему веб-приложения. Затем веб-приложение установит свой билет аутентификации и куки-файлы состояния сеанса, вернет их мне, и я сохраню их в хранилище куки IE. Затем я могу перейти на нужную страницу, и веб-приложение решит, что оно уже аутентифицировано.

У меня есть некоторый рабочий код, который создает HTTP POST, отправляет его и получает правильный ответ, содержащий правильные куки. Тем не менее, я не вижу, как записать их в хранилище файлов cookie IE. Может кто-то указать мне верное направление?

Образец кода:

var requestUrl = Properties.Settings.Default.WebsiteLoginPageUrl;

var requestEncoding = Encoding.GetEncoding(1252);

// Simulated login postdata
var requestText = string.Format(
    "__VIEWSTATE={2}&__EVENTTARGET={3}&__EVENTARGUMENT={4}&__EVENTVALIDATION={5}&userNameText={0}&passwordText={1}&submitButton=Log+In",
    HttpUtility.UrlEncode(Properties.Settings.Default.UserName),
    HttpUtility.UrlEncode(Properties.Settings.Default.Password),
    Properties.Settings.Default.FakeViewState,
    Properties.Settings.Default.FakeEventTarget,
    Properties.Settings.Default.FakeEventArgument,
    Properties.Settings.Default.FakeEventValidation);

var request = (HttpWebRequest) WebRequest.Create(requestUrl);
request.Method = "POST";
request.Accept = "*/*";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = requestEncoding.GetByteCount(requestText);
request.Headers.Add(HttpRequestHeader.CacheControl, "no-cache");
request.AllowAutoRedirect = false;
request.KeepAlive = false;
request.CookieContainer = new CookieContainer();

using(var writer = new StreamWriter(request.GetRequestStream(), requestEncoding)) {
    writer.Write(requestText);
}

var response = (HttpWebResponse) request.GetResponse();

// TODO: Grab the response cookies and save them to the interactive desktop user's cookie store.

Process.Start(new ProcessStartInfo {
    FileName = Properties.Settings.Default.WebsiteTargetPageUrl,
    UseShellExecute = true,
});

Ответы на вопрос(1)

Ваш ответ на вопрос