Comment : comparer des revendications
L'infrastructure de modèle d'identité dans Windows Communication Foundation (WCF) est utilisée pour effectuer les contrôles d'autorisation. L'une des tâches fréquentes de cette infrastructure de contrôle, consiste notamment à comparer les revendications émises dans le cadre des autorisations à celles nécessaires à l'exécution des requêtes d'action ou des requêtes d'accès aux ressources. Cette rubrique contient des instructions qui permettent de comparer des revendications, notamment les types de revendication intégrés et personnalisés. Pour plus d'informations sur l'infrastructure de modèle d'identité, consultez Gestion des revendications et autorisation avec le modèle d'identité.
Comparer des revendications signifie comparer leurs trois composantes, à savoir leur type, leurs droits et leurs ressources avec les composantes d'autres revendications, et ce afin de savoir si elles sont égales. Prenons, par exemple, deux revendications Name
spécifiques :
Ces deux revendications partagent le même type de Name, les mêmes droits de PossessProperty et une même ressource pour la chaîne « quelqu'un ». Leurs trois composantes étant égales, ces deux revendications sont elles-mêmes égales.
Les types de revendication intégrés sont comparés à l'aide de la méthode Equals. Un code de comparaison spécifique à la revendication est utilisé lorsque nécessaire. Prenons, par exemple, les deux revendications suivantes qui utilisent un nom d'utilisateur principal (UPN, User Principal Name) :
Le code de comparaison de la méthode Equals retourne la valeur true car il suppose que example\someone
permet d'identifier le même utilisateur de domaine que « xyz@exemple.fr ».
Les types de revendication personnalisés peuvent également être comparés à l'aide de la méthode Equals. Toutefois, si le type retourné par la propriété Resource de la revendication est un type autre que primitif, la méthode Equals retournera uniquement la valeur true si les valeurs retournées par les propriétés Resource sont égales pour la méthode Equals. Dans les cas où ce processus ne convient pas, le type personnalisé retourné par la propriété Resource doit remplacer les méthodes Equals et GetHashCode afin de permettre tous traitements personnalisés requis.
Comparaison des revendications intégrées
- Soit deux instances de la classe Claim, utilisez la méthode Equals pour les comparer, tel qu'illustré dans le code suivant.
Comparaison de revendications personnalisées dont les types de ressources sont primitifs
Pour les revendications personnalisées dont les types de ressources sont primitifs, la comparaison peut s'effectuer de la même manière que dans le cadre de comparaisons intégrées, tel qu'illustré dans le code suivant.
Pour les revendications personnalisées dont les types de ressources sont basés sur une structure ou une classe, le type de ressource doit être substitué à la méthode Equals.
Vérifiez tout d'abord si le paramètre obj a la valeur null. Si tel est le cas, retournez la valeur false.
Appelez ensuite la méthode ReferenceEquals en passant this et obj comme paramètres. Si la méthode appelée retourne la valeur true, retournez alors la valeur true.
Essayez ensuite d'assigner obj à une variable locale du type de classe. En cas d'échec, la référence est null. Dans ce cas, retournez la valeur false.
Effectuez la comparaison personnalisée nécessaire pour comparer de manière adéquate la revendication en cours à la revendication spécifiée.
Exemple
L'exemple suivant illustre le cas d'une comparaison où le type de ressource des revendications personnalisées comparées n'est pas primitif.
Voir aussi
Tâches
Comment : créer une revendication personnalisée
Concepts
Gestion des revendications et autorisation avec le modèle d'identité