c# windows-authentication webrequest

c# - Realizar una solicitud web a una página web que requiere autenticación de Windows



windows-authentication webrequest (4)

Debe usar la propiedad Credentials para pasar las credenciales de Windows al servicio web.

Si desea pasar las credenciales actuales del usuario de Windows al servicio, entonces

request.Credentials = CredentialCache.DefaultCredentials;

debe hacer el truco De lo contrario, use NetworkCredential siguiente manera:

request.Credentials = new NetworkCredential(user, pwd, domain);

Estoy tratando de hacer una solicitud a una página web utilizando la clase WebRequest en .net. La url que estoy tratando de leer requiere la autenticación de Windows debido a que recibo una excepción no autorizada. ¿Cómo puedo pasar las credenciales de Windows a esta solicitud para que pueda autenticarse?

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create( "http://myapp/home.aspx" ); request.Method = "GET"; request.UseDefaultCredentials = false; request.PreAuthenticate = true; request.Credentials = new NetworkCredential( "username", "password", "domain" ); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Raises Unauthorized Exception this.Response.Write( response.StatusCode );

El código anterior devuelve el siguiente error.

System.Net.WebException: The remote server returned an error: (401) Unauthorized.

Una cosa que noté al verificar los detalles de la excepción es que la url a la que estoy tratando de acceder se está redirigiendo a una url diferente, lo que me pide que proporcione los detalles de inicio de sesión de NT. Creo que las credenciales también deberían enviarse a esta url. Pero aparentemente no está sucediendo.


Estoy tratando de acceder a un enlace A pasando las credenciales de Windows. El enlace A luego me redirige al enlace B automáticamente, pero no pasa las credenciales de Windows que había suministrado. De ahí el error. Yo solicité.AutoRedirect = falso, y repetí cada vez que obtengo la ubicación en el encabezado, es decir, hago mis redireccionamientos manualmente cada vez que pasa las credenciales de Windows.

Esto funcionó para mí :)


Para autenticarse en WebService, use DefaultNetworkCredentials en lugar de DefaultCredentials:

request.Credentials = CredentialCache.DefaultNetworkCredentials;


Usando VS2015, request.UseDefaultCredentials = true; ¡funciona para mi!