Получить учетные данные текущего запроса для использования в WebRequest

При доступе к моему сайту пользователь должен ввести свои учетные данные. Это в основном простые учетные данные для доступа к каталогу. В определенный момент я проверяю, существует ли определенный файл, который они хотят загрузить, вызывая

WebRequest req = HttpWebRequest.Create(checkUri.AbsoluteUri);
WebResponse res = req.GetResponse();

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

req.Credentials

Но я не знаю, где хранятся текущие учетные данные ...

Любые идеи?

--Обновить--

  • Встроенная проверка подлинности Windows: нет
  • Разрешить анонимный: выкл
  • Caler: ссылка на страницу того же сайта (GET)
  • Олицетворение: по умолчанию отключено (даже не знаю, как включить его в asp.net mvc)
10.12.2008 09:34:38
3 ОТВЕТА

Я думаю, что вы хотите это:

req.Credentials = CredentialCache.DefaultCredentials;
5
10.12.2008 09:37:42
Ну, я пробовал и DefaultCredentials, и DefaultNetworkCredentials. Оба нифига
Boris Callens 10.12.2008 09:48:34
Работает ли ваш сайт с встроенной аутентификацией Windows и разрешением анонимного доступа? Что делает звонок? Если ваш абонент сам по себе является веб-сайтом, включена ли олицетворение и правильно ли настроено делегирование Kerberos?
Dave Markle 10.12.2008 10:01:25
Спасибо за комментарий. Не уверен насчет подражания и делегирования Kerberos. Как я могу проверить? Поместите то, что я знаю в ОП.
Boris Callens 10.12.2008 10:32:13

Вам нужно будет включить встроенную проверку подлинности Windows.

Я не знаю, что происходит в ASP.NET MVC, но в ASP.NET Web Forms имитация включает:

<identity impersonate="true"> 

в web.config.

1
10.12.2008 14:46:01

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

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
// Add the current authentication cookie to the request
HttpCookie cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
Cookie authenticationCookie = new Cookie(
    FormsAuthentication.FormsCookieName,
    cookie.Value,
    cookie.Path,
    HttpContext.Current.Request.Url.Authority);

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

WebResponse res = req.GetResponse();
7
19.10.2009 16:29:12