Приложение командной строки, IIS требует проверки подлинности форм - PullRequest
0 голосов
/ 11 октября 2011

Мы создаем приложение командной строки, которому требуются некоторые данные с сервера IIS с использованием проверки подлинности с помощью форм.Как я могу сделать проверку подлинности форм из приложения командной строки?Я пытался, но все, что происходит, это то, что запрос перенаправляется на страницу входа.

Я предполагаю, что, если бы я мог включить файл cookie для проверки подлинности в запрос с правильными учетными данными, загрузка прошла бы нормально.

У меня есть контроль над клиентом и сервером.Я могу установить machineKey в web.config, но не могу понять, как установить это в приложении командной строки.Это должен быть тот же ключ validationKey, чтобы зашифровать cookie в правильном формате?

Сервер записан в asp-net mvc.

var request = (HttpWebRequest)WebRequest.Create(uri);
var formsCookiePath = "/";
var cookieName = ".FormName";
var domain = "localhost";
var username = "username";
var password = "pa$$word";

var ticket = new FormsAuthenticationTicket(1,
  username,
  DateTime.Now,
  DateTime.Today.AddYears(10),
  true,
  password,
  formsCookiePath);

var encryptedTicket = FormsAuthentication.Encrypt(ticket);

var authenticationCookie = new Cookie(
  cookieName,
  encryptedTicket,
  formsCookiePath,
  domain)
  {
    HttpOnly = true,
    Secure = false
  };

request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(authenticationCookie);

request.UserAgent = "Internal downloader";

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

Обновление: на основе ответа от Zruty Iиспользовал этот пример для создания файла cookie аутентификации:

Авторизация ASP.NET из консольного приложения и время ожидания

1 Ответ

0 голосов
/ 11 октября 2011

Вы хотите имитировать код аутентификации локально на вашем клиенте? Я думаю, что вы идете не в ту сторону.

Вместо этого вы должны оставить работу сервера (генерацию файлов cookie) серверу. Сделайте два последующих запроса: один с вашей регистрационной информацией (сервер сгенерирует вам cookie), а другой с предоставленным cookie.

...