Question

Je suis face à un problème ici, avec HttpListener.

Lorsqu'une demande de la forme

http://user:password@example.com/

est fait, comment puis-je l'utilisateur et mot de passe? HttpWebRequest a une propriété de vérification des pouvoirs, mais HttpListenerRequest ne l'a pas, et je ne trouve pas le nom d'utilisateur dans une propriété de celui-ci.

Merci pour l'aide.

Était-ce utile?

La solution

Qu'est-ce que vous essayez de faire est de passer des informations d'identification via HTTP auth de base, je ne sais pas si le nom d'utilisateur: la syntaxe de mot de passe est pris en charge HttpListener, mais si elle est, vous devrez indiquer que vous acceptez auth de base premier.

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

Une fois que vous recevez une demande, vous pouvez extraire le nom d'utilisateur et mot de passe:

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

Voici une explication complète de toutes les méthodes de authenitcation pris en charge peut être utilisé avec HttpListener.

Autres conseils

Obtenir l'en-tête de Authorization. Son format est le suivant

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

Exemple:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Le nom d'utilisateur et mot de passe sont séparés par deux-points (dans cet exemple, Aladdin:open sesame), puis B64-codé.

Vous devez d'abord activer l'authentification de base:

listener.AuthenticationSchemes = AuthenticationSchemes.Basic;

Ensuite, dans votre méthode de ProcessRequest vous pouvez obtenir le nom d'utilisateur et mot de passe:

if (context.User.Identity.IsAuthenticated)
{
    var identity = (HttpListenerBasicIdentity)context.User.Identity;
    Console.WriteLine(identity.Name);
    Console.WriteLine(identity.Password);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top