Obter credenciais da solicitação atual para uso em WebRequest

votos
3

Ao acessar meu site, o usuário tem que digitar suas credenciais. Eles são, basicamente, as credenciais de acesso ao diretório simples. Em um certo ponto eu verificar se um determinado arquivo que deseja fazer o download existe chamando

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

Embora eu possa acessar o checkUri a partir do navegador, recebo um 401 ao fazer a verificação acima. Eu acho que tem que definir o

req.Credentials

Mas eu não sei onde as credenciais atuais são armazenados ...

Alguma ideia?

--Atualizar--

  • Autenticação integrada do Windows: Não
  • Permitir anônimo: Off
  • Caler: link na página do mesmo site (GET)
  • Representação: padrão é off (nem sei como ativá-lo no MVC asp.net)
Publicado 10/12/2008 em 10:34
fonte usuário
Em outras línguas...                            


3 respostas

votos
6

Eu estava tendo um problema semelhante em um site onde eu estou usando autenticação de formulários, eu era capaz de resolver esse problema usando o código fornecido aqui como a segunda resposta no tópico.

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();
Respondeu 19/10/2009 em 17:29
fonte usuário

votos
5

Eu acho que você quer este:

req.Credentials = CredentialCache.DefaultCredentials;
Respondeu 10/12/2008 em 10:37
fonte usuário

votos
1

Você está indo a necessidade de habilitar a autenticação integrada do Windows.

Eu não sei o que acontece no ASP.NET MVC, mas em ASP.NET Web Forms representação estiver activada por:

<identity impersonate="true"> 

em web.config.

Respondeu 10/12/2008 em 15:46
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more