Authentification Internet

Les classes System.Net prennent en charge divers mécanismes d’authentification client, parmi lesquels les méthodes d’authentification Internet standard (de base, Digest, Negotiate, NTLM et Kerberos) et les méthodes personnalisées que vous pouvez créer.

Les informations d’identification utilisées pour l’authentification sont stockées dans les classes NetworkCredential et CredentialCache, qui implémentent l’interface ICredentials. Quand une de ces classes est interrogée pour fournir des informations d’identification, elle retourne une instance de la classe NetworkCredential. Le processus d’authentification est géré par la classe AuthenticationManager, mais il est en réalité effectué par une classe du module d’authentification qui implémente l’interface IAuthenticationModule. Pour pouvoir utiliser un module d’authentification personnalisé, vous devez préalablement l’inscrire avec AuthenticationManager. Les modules pour les méthodes d’authentification de base, Digest, Negotiate, NTLM et Kerberos sont inscrits par défaut.

La classe NetworkCredential stocke un ensemble d’informations d’identification qui sont associées à une ressource Internet identifiée de manière unique par un URI et retourne ces informations en réponse à chaque appel de la méthode GetCredential. La classe NetworkCredential est généralement utilisée dans les applications qui accèdent à un nombre limité de ressources Internet ou dans celles qui utilisent toujours le même ensemble d’informations d’identification.

La classe CredentialCache stocke un ensemble d’informations d’identification pour diverses ressources web. Quand la méthode GetCredential est appelée, CredentialCache retourne l’ensemble approprié d’informations d’identification, qui est déterminé par l’URI de la ressource web et le schéma d’authentification demandé. La classe CredentialCache est appropriée pour les applications qui utilisent diverses ressources Internet avec des schémas d’authentification différents, car elle peut stocker toutes les informations d’identification et les fournir en réponse à une demande.

Quand une ressource Internet fait une demande d’authentification, la méthode WebRequest.GetResponse envoie WebRequest à AuthenticationManager en même temps que la demande des informations d’identification. La demande est ensuite authentifiée selon le processus suivant :

  1. AuthenticationManager appelle la méthode Authenticate sur chacun des modules d’authentification inscrits, dans l’ordre de leur inscription. AuthenticationManager utilise le premier module qui ne retourne pas la valeur Null pour effectuer le processus d’authentification. Ce processus peut varier en fonction du type de module d’authentification utilisé.

  2. À la fin du processus d’authentification, le module d’authentification retourne Authorization à la classe WebRequest qui contient les informations nécessaires pour accéder à la ressource Internet.

Certains schémas d’authentification authentifient un utilisateur sans faire de demande de ressource au préalable. Une application peut gagner du temps en effectuant une pré-authentification de la ressource, ce qui évite au moins un aller-retour avec le serveur. Elle peut aussi effectuer l’authentification au démarrage du programme pour être plus réactive avec l’utilisateur ultérieurement. Les schémas d’authentification qui peuvent utiliser la pré-authentification ont leur propriété PreAuthenticate définie sur true.

Voir aussi