Ce type de mécanisme d'authentification est de protéger le service web? L'identification sur HttpWebRequest
ne seront communiquées via HTTP est Authorization
d'en-tête via Basic, Digest ou NTLM. Donc, si votre service web est protégé par WS-Security
, l' NetworkCredentials
ne sera probablement pas être répercuté sur le schéma d'authentification à tous, car WS-Security
ne fonctionne pas au niveau HTTP.
Ce que vous devez faire est de créer un client de Service Web proxy du service web par le biais de l'outil de ligne de commande wsdl.exe
ou quelque chose de similaire. Qui vous donnera accès au Service Web, conscient de schémas d'authentification.
Mise à jour après les commentaires:
Il semble que l' HttpWebRequest
a besoin de recevoir l' WWW-Authenticate
défi avec un 401 Unauthorized
avant de pouvoir s'authentifier correctement sur SSL. Je pense qu'il y a deux chemins de code en HttpWebRequests
de la manipulation régulière du trafic HTTP et HTTPS chiffré de la circulation. De toute façon, ce que vous devriez essayer, c'est:
- Exécuter un non authentifié
HttpWebRequest
de la https://.../
URI.
- Recevoir l'
401 Unauthorized
de réponse.
- Exécuter la même demande, maintenant avec les deux
Credentials
(pas sûr si PreAuthenticate
devrait être true
ou false
; tester les deux).
- Vous devriez maintenant obtenir
200 OK
ou quoi que ce soit de votre Service Web répond avec.
Une autre option est de construire l' Authorization
- tête vous-même sur la demande initiale:
string credentials = String.Format("{0}:{1}", username, password);
byte[] bytes = Encoding.ASCII.GetBytes(credentials);
string base64 = Convert.ToBase64String(bytes);
string authorization = String.Concat("Basic ", base64);
request.Headers.Add("Authorization", authorization);