c# user passwords httplistener

c# - HttpListener: ¿cómo obtener el usuario y la contraseña http?



user passwords (3)

Estoy enfrentando un problema aquí, con HttpListener.

Cuando una solicitud de la forma

http://user:[email protected]/

está hecho, ¿cómo puedo obtener el usuario y la contraseña? HttpWebRequest tiene una propiedad Credentials, pero HttpListenerRequest no la tiene, y no encontré el nombre de usuario en ninguna propiedad de la misma.

Gracias por la ayuda.


Lo que intenta hacer es pasar las credenciales a través de HTTP auth auth, no estoy seguro si la sintaxis del nombre de usuario: contraseña es compatible con HttpListener, pero si es así, deberá especificar que primero acepta la autenticación básica.

HttpListener listener = new HttpListener(); listener.Prefixes.Add(uriPrefix); listener.AuthenticationSchemes = AuthenticationSchemes.Basic; listener.Start();

Una vez que reciba una solicitud, puede extraer el nombre de usuario y la contraseña con:

HttpListenerBasicIdentity identity = (HttpListenerBasicIdentity)context.User.Identity; Console.WriteLine(identity.Name); Console.WriteLine(identity.Password);

Aquí hay una explicación completa de todos los métodos de authentitcation compatibles que se pueden usar con HttpListener.


Obtenga el encabezado Authorization . Su formato es el siguiente

Authorization: <Type> <Base64-encoded-Username/Password-Pair>

Ejemplo:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

El nombre de usuario y la contraseña están separados por dos puntos (en este ejemplo, Aladdin:open sesame ) y luego codificados por B64.


Primero debe habilitar la Autenticación básica:

listener.AuthenticationSchemes = AuthenticationSchemes.Basic;

Luego, en su método ProcessRequest puede obtener el nombre de usuario y la contraseña:

if (context.User.Identity.IsAuthenticated) { var identity = (HttpListenerBasicIdentity)context.User.Identity; Console.WriteLine(identity.Name); Console.WriteLine(identity.Password); }