Partager via


Authentification avec le canal TCP

Il est souvent utile de disposer de procédures distantes pour identifier l'appelant et pour effectuer une exécution avec les autorisations associées à cette identité. Cette méthode est recommandée car elle empêche les appelants malveillants d'utiliser de manière abusive une procédure distante afin d'effectuer des actions qui ne seraient normalement pas autorisées.

Le .NET Framework permet aux serveurs d'objets distants d'identifier les appelants et d'emprunter leur identité en définissant les propriétés de configuration des objets TcpServerChannel et TcpClientChannel associés.

Configuration serveur

Pour configurer un canal serveur TCP afin d'authentifier des appelants distants, utilisez la propriété de configuration authenticationMode de l'objet TcpServerChannel, qui peut être définie par tout membre de l'énumération AuthenticationMode. Si authenticationMode a la valeur IdentifyCallers, le canal nécessite que tous les appelants fournissent une identité d'utilisateur vérifiable. Si authenticationMode a la valeur ImpersonateCallers, toutes les opérations sur le serveur sont effectuées avec l'identité fournie. Pour obtenir un exemple montrant comment définir par programme la propriété de configuration authenticationMode, voir Comment : Définir la propriété de configuration authenticationMode.

L'identité d'un client authentifié est disponible à partir de la classe CallContext en tant que donnée __remotePrincipal.

Configuration client

Pour configurer un canal client TCP afin d'identifier des appelants sur des serveurs distants, utilisez la propriété de configuration impersonationLevel de l'objet TcpClientChannel, qui peut être définie par tout membre de l'énumération ClientImpersonationLevel. Si impersonationLevel a la valeur None, tous les appels aux serveurs distants sont anonymes. Si impersonationLevel a la valeur Identify, le client identifie l'appelant sur le serveur distant. Si impersonationLevel a la valeur Impersonate, le client autorise l'appel distant sous l'identité fournie. Si impersonationLevel a la valeur Delegate, le serveur peut passer à son tour l'identité du client. Si un serveur distant nécessite un niveau de impersonationLevel plus élevé que ce qu'autorise un client (par exemple, authenticationMode a la valeur IdentifyCallers et impersonationLevel a la valeur None, ou authenticationMode a la valeur ImpersonateCallers et impersonationLevel a la valeur Identify), une exception est levée.

Par défaut, un canal client TCP s'authentifie avec l'identité de l'utilisateur utilisée pour exécuter le processus client. Vous pouvez spécifier une autre identité en affectant la valeur false à la propriété de configuration useDefaultCredentials et en définissant les propriétés de configuration domain, username et password afin de spécifier une autre identité.

Un canal client TCP peut être configuré pour décider si l'authentification est basée sur une logique de programme complexe. Si vous affectez à la propriété de configuration authenticationPolicy un objet qui implémente l'interface IAuthenticationPolicy, la méthode ValidateSecurityPackage de l'objet est appelée pour déterminer si l'authentification se poursuit.

Pour obtenir un exemple illustrant la configuration d'un canal client TCP afin d'effectuer une authentification dans un fichier de configuration, voir Comment : Configurer un canal client TCP afin d'effectuer une authentification.

Voir aussi

Tâches

Comment : Définir la propriété de configuration authenticationMode
Comment : Configurer un canal client TCP afin d'effectuer une authentification

Référence

AuthenticationMode
ClientImpersonationLevel

Concepts

Chiffrement