OVH Cloud OVH Cloud

NetworkCredential

1 réponse
Avatar
David Bouchard
Bonjour, j'utilise l'authentification windows entre mes clients et mes
webservices. J'utilise NetworkCredential et je me pose depuis quelques temps
cette question. Est-ce que cette méthode est vraiment sécure pour
l'authentification. Je ne trouve pas beacoup d'information sur le sujet
m'expliquant de façon cohérente et simple la façon dont l'authentification
procède et j'aurais besoin d'aide à savoir si ces une méthode sur.

En faite, ce que je fesais pour l'authentification client, c'est que lorsque
j'appelais mon webservice, je procédais ainsi:

Dim Authentification As New Net.NetworkCredential(Utilisateur, Mot_Passe

WebServ.Credentials = Authentification

Sur quoi j'ai un doute, c'est que je suis capable d'obtenir le mot de passe
du client en tout temps en exécutant sur la machine client:

Authentification.Password

Ceci me parait étrange de pouvoir lire en claire le mot de passe puisque je
croyais qu'il était hasher et non réversible. Du point de vue d'un pirate,
ceci me semble une belle méthode pour attaquer s'il est capable de capture
cette valeur.

J'ai aussi une autre interrogation, lorsque le client s'est authentifié, je
me demandais qu'est-ce qui contrôlait la durée de vie de l'authentification
et comment changer le temps avant que le client soit obligé de
s'authentifier à nouveau.

Merci beaucoup à ceux qui pourrons m'éclairer sur le sujet

David

1 réponse

Avatar
Eric Vernié [MS]
Bonjour David

Tu t'attaques ici à un serieux enjeu qui ne pourra pas trouver réponse aussi
facilement, mais je vais essayé de t'aiguiller au mieux.

L'authentification avec les Services Web dans ton application, dépendra
essentiellement de tes contraintes systèmes et architecturales.

1) Utilises tu des informations de connexion pour un utilisateur du Domaine
?
En d'autres termes, veux tu utiliser la connexion de l'utilisateur logué
sur la machine Windows cliente pour se connecter au Service Web?
Si oui, dans ce cas la, sur le serveur Web, tu choisis un authentification
"Integration Windows Authentication". Et en effet, le mot de passe ne
traverse pas le réseau, seul un jeton passe.
Le pour c'est que c'est simple a implémenter,
Les contres.
1.1) Par défaut, à partir du serveur Web, ce Jeton ne pourra etre
delegué vers une autre machine, sauf si tu met en place le protocole
Kerberos.
1.2) Seul un client windows pourra accéder à l'authentification de ton
service Web.


2) Utilises tu un mécanisme d'authentification Personnalisé ?
Si oui, tu passes en effet en claire les informations
Utilisateur/MotDepasse, sur IIS tu es en 'Authentification Basic', tu dois
donc mettre en place SSL pour crypter tout le tuyau.

3) Si tu ne veux pas réinventer la roue en terme d'authentification, va
faire un tour sur les spécifications WS* en terme de sécurité, et implémente
le à partir du kit de développement WSE (Web Service Enhancements) dispo ici
http://msdn.microsoft.com/webservices/webservices/building/wse/default.aspx

4) Tu trouveras plus d'infos ici
http://msdn.microsoft.com/practices/default.aspx?pull=/library/en-us/dnpag2/html/mswsibsp.asp
http://msdn.microsoft.com/practices/ArchDes/default.aspx?pull=/library/en-us/dnbda/html/authaspdotnet.asp

Cordialement

Eric Vernié
Microsoft France











"David Bouchard" wrote in message
news:
Bonjour, j'utilise l'authentification windows entre mes clients et mes
webservices. J'utilise NetworkCredential et je me pose depuis quelques
temps cette question. Est-ce que cette méthode est vraiment sécure pour
l'authentification. Je ne trouve pas beacoup d'information sur le sujet
m'expliquant de façon cohérente et simple la façon dont l'authentification
procède et j'aurais besoin d'aide à savoir si ces une méthode sur.

En faite, ce que je fesais pour l'authentification client, c'est que
lorsque j'appelais mon webservice, je procédais ainsi:

Dim Authentification As New Net.NetworkCredential(Utilisateur, Mot_Passe

WebServ.Credentials = Authentification

Sur quoi j'ai un doute, c'est que je suis capable d'obtenir le mot de
passe du client en tout temps en exécutant sur la machine client:

Authentification.Password

Ceci me parait étrange de pouvoir lire en claire le mot de passe puisque
je croyais qu'il était hasher et non réversible. Du point de vue d'un
pirate, ceci me semble une belle méthode pour attaquer s'il est capable de
capture cette valeur.

J'ai aussi une autre interrogation, lorsque le client s'est authentifié,
je me demandais qu'est-ce qui contrôlait la durée de vie de
l'authentification et comment changer le temps avant que le client soit
obligé de s'authentifier à nouveau.

Merci beaucoup à ceux qui pourrons m'éclairer sur le sujet

David