51 votes

Forcer l'authentification de base dans WebRequest

Je suis l'intégration du service web qui utilisera une HTTP-POST pour demander et récupérer des données. Le serveur distant nécessite l'authentification de base conformément à la RFC 2617

Mes tentatives d'authentification ne sont pas.

Il échoue dans ce, même si j'accorde une "NetworkCredential' objet de l 'Pouvoirs' propriété d'un 'HttpWebRequest' objet, pas d'informations d'authentification est envoyé dans l'en-tête, même si j'ai mis 'PreAuthenticate' = vrai.

Ce qui me manque?

//morceau utilisé

NetworkCredential netCredential = new NetworkCredential(" uid", "pwd");

Uri uri = new Uri("http://address of services");

ICredentials credentials = netCredential.GetCredential(uri, "Basic");

objRegistration.Credentials = credentials;

objRegistration.PreAuthenticate = true;

112voto

Samuel Jack Points 14556

Je viens de trouver ce petit morceau de code très pratique pour faire exactement ce dont vous avez besoin. Il ajoute manuellement l'en-tête d'autorisation au code sans attendre la demande du serveur.

 public void SetBasicAuthHeader(WebRequest request, String userName, String userPassword)
{
    string authInfo = userName + ":" + userPassword;
    authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
    request.Headers["Authorization"] = "Basic " + authInfo;
}
 

Utilisez-le comme ça

 var request = WebRequest.Create("http://myserver.com/service");
SetBasicAuthHeader(request, userName, password);

var response = request.GetResponse();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X