2017-05-02 3 views
4

Je veux savoir comment NetworkCredentials est passé sur une requête http. Est-ce qu'ils sont passés en HTTPHeaders, RequestData ou il y a quelque chose d'autre qui transporte l'information.Comment fonctionne NetworkCredential en C# lorsqu'il est affecté à un objet HttpRequest?

J'ai essayé de créer un exemple d'application et vérifié les journaux de violoneux. Je ne vois pas qu'il est ajouté en tant que HTTPHeader donc ce qui porte cette information.

Voici l'exemple de code que j'ai essayé:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://gmail.com"); 
request.Method = "GET"; 
request.ContentType = "application/json"; 
request.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0"; 
request.Credentials = new NetworkCredential("TestUser", "Password-1"); 
+0

Dépend du type d'authentification demandé. 'Credentials' est juste l'espace réservé pour les informations d'identification. Quel type d'authentification voulez-vous effectuer? –

+0

BTW * Gmail * n'utilise pas les noms d'utilisateur et les mots de passe. Vous devez d'abord vous authentifier auprès de * google * en utilisant OAuth –

Répondre

0

A partir de la page MSDN suivant;

Les schémas d'authentification pris en charge comprennent Digest, Negotiate, Kerberos, NTLM et Basic. https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.credentials(v=vs.110).aspx

Il dépendra, en général, je suppose que ce sera choisir la méthode la plus sûre et disponible ... Cependant, il dit aussi;

Pour limiter HttpWebRequest à une ou plusieurs méthodes d'authentification, utilisez la classe CredentialCache et lier vos informations d'identification à un ou plusieurs systèmes d'authentification

Donc, si vous désiriez à utiliser comme en-tête, je suppose vous pouvez le limiter à l'utilisation de l'authentification de base uniquement à l'aide de l'objet CredentialCache;

https://msdn.microsoft.com/en-us/library/system.net.credentialcache(v=vs.110).aspx