Partager via


Comment : créer un authentificateur de jetons de sécurité personnalisé

Cette rubrique indique comment créer un authentificateur de jetons de sécurité personnalisé et comment l'intégrer à un gestionnaire de jetons de sécurité personnalisé. Un authentificateur de jetons de sécurité valide le contenu du jeton de sécurité fourni par le message entrant. Lorsque le processus de validation réussit, l'authentificateur retourne une collection d'instances IAuthorizationPolicy qui, après évaluation, retourne un ensemble de revendications.

Pour utiliser un authentificateur de jetons de sécurité personnalisé dans Windows Communication Foundation (WCF), vous devez d'abord créer des informations d'identification ainsi que des implémentations de gestionnaire de jetons de sécurité personnalisées. Pour plus d'informations sur la création d'informations d'identification personnalisées et de gestionnaires de jetons de sécurité, consultez Comment : créer des informations d'identification de client et de service personnalisées. Pour plus d'informations sur les informations d'identification, les gestionnaires de jetons de sécurité ainsi que sur les classes fournisseur et authentificateur, consultez Architecture de sécurité.

Procédures

Pour créer un authentificateur de jetons de sécurité personnalisé

  1. Définissez une nouvelle classe dérivée de la classe SecurityTokenAuthenticator.

  2. Substituez la méthode CanValidateTokenCore. La méthode retourne la valeur true ou false selon si l'authentificateur personnalisé peut ou non valider le type de jeton entrant.

  3. Substituez la méthode ValidateTokenCore. Cette méthode doit valider le contenu des jetons de manière adéquate. Si le jeton passe l'étape de validation, il retourne une collection d'instances IAuthorizationPolicy. L'exemple suivant utilise une implémentation de la stratégie d'autorisation personnalisée, laquelle sera créée au cours de la procédure suivante.

Le code précédent retourne une collection de stratégies d'autorisation dans la méthode CanValidateToken. WCF ne permet pas d'implémenter publiquement cette interface. La procédure suivante indique comment procéder à cette implémentation publique, si requis par vos propres spécifications.

Pour créer une stratégie d'autorisation personnalisée

  1. Définissez une nouvelle classe qui implémente l'interface IAuthorizationPolicy.

  2. Implémentez la propriété Id en lecture seule. L'une des solutions permettant d'implémenter cette propriété consiste à générer un identificateur global unique (Globally Unique Identifier, GUID) dans le constructeur de classe, puis de retourner cette propriété à chaque fois que sa valeur est demandée.

  3. Implémentez la propriété Issuer en lecture seule. Cette propriété doit retourner l'émetteur correspondant à tous les ensembles de revendications obtenus à partir du jeton. Cet émetteur doit correspondre à l'émetteur du jeton ou à une autorité chargée de valider le contenu des jetons. L'exemple suivant utilise la revendication d'émetteur passée à cette classe à partir de l'authentificateur de jetons de sécurité personnalisé créé au cours de la procédure précédente. L'authentificateur de jetons de sécurité personnalisé utilise l'ensemble des revendications fournies par le système (ensemble retourné par la propriété System) pour représenter l'émetteur de jeton de nom d'utilisateur.

  4. Implémentez la méthode Evaluate. Cette méthode remplit une instance de la classe EvaluationContext (passée sous forme d'argument) avec les revendications basées sur le contenu des jetons de sécurité entrants. Cette méthode retourne la valeur true lorsque ce processus se déroule dans le cadre d'une évaluation. Lorsque l'implémentation s'appuie sur des stratégies d'autorisation fournissant des informations supplémentaires au contexte d'évaluation, cette méthode peut retourner la valeur false si les informations requises ne figurent pas encore dans le contexte d'évaluation. Dans ce cas, WCF appellera à nouveau la méthode après évaluation de toutes les stratégies d'autorisation générées pour le message entrant si au moins l'une de ces stratégies a modifié le contexte d'évaluation.

Comment : créer des informations d'identification de client et de service personnalisées contient des instructions permettant de créer des informations d'identification personnalisées ainsi qu'un gestionnaire de jetons de sécurité personnalisés. Pour utiliser l'authentificateur de jetons de sécurité personnalisés créé ici, une implémentation du gestionnaire de jetons de sécurité est modifiée pour retourner l'authentificateur personnalisé à partir de la méthode CreateSecurityTokenAuthenticator. La méthode retourne un authentificateur lorsqu'une spécification de jeton de sécurité appropriée est passée.

Pour intégrer un authentificateur de jetons de sécurité personnalisés à un gestionnaire de jetons de sécurité personnalisés

  1. Remplacez la méthode CreateSecurityTokenAuthenticator dans votre implémentation de gestionnaire de jetons de sécurité personnalisés.

  2. Ajoutez de la logique à la méthode pour lui permettre de retourner votre authentificateur de jetons de sécurité personnalisés basée sur le paramètre SecurityTokenRequirement. L'exemple suivant retourne un authentificateur de jetons de sécurité personnalisé si le type du jeton correspond à un nom d'utilisateur (représenté par la propriété UserName) et si la direction de message pour laquelle l'authentificateur de jetons de sécurité est demandé correspond à entrée (représentée par le champ Input ).

Voir aussi

Tâches

Comment : créer un fournisseur de jetons de sécurité personnalisé

Référence

SecurityTokenAuthenticator
SecurityTokenRequirement
SecurityTokenManager
UserNameSecurityToken

Concepts

Comment : créer des informations d'identification de client et de service personnalisées
Architecture de sécurité