Résolution des problèmes AD FS - Syntaxe de règle de revendications
Une revendication est une déclaration qu’un sujet fait à propos de lui-même ou d’un autre objet. Les revendications sont émises par une partie de confiance et une ou plusieurs valeurs leur sont fournies, puis elles sont empaquetées dans des jetons de sécurité émis par le serveur AD FS. Cet article traite de la syntaxe des revendications et de la création. Pour plus d’informations sur l’émission de revendications, consultez Résolution des problèmes AD FS - Émission de revendications.
Remarque
Vous pouvez utiliser ClaimsXRay sur le site d’aide AD FS pour vous aider à résoudre les problèmes liés aux revendications.
Mode de traitement des règles de revendication
Les règles de revendication sont traitées via le pipeline de revendications à l’aide du moteur de revendications. Le moteur de revendications est un composant logique du service de fédération qui examine le jeu des revendications entrantes présenté par un utilisateur, puis, en fonction de la logique de chaque règle, produit un jeu de revendications de sortie.
Création d’une règle de revendication
Les règles de revendication sont créées séparément pour chaque relation d’approbation fédérée au sein du service de fédération et ne sont pas partagées par plusieurs approbations. Vous pouvez créer une règle à partir d’un modèle de règle de revendication, démarrer à partir de rien en créant la règle à l’aide du langage de règle de revendication ou utiliser Windows PowerShell pour personnaliser une règle.
Présentation des composants du langage de règle de revendication
Le langage de règle de revendication se compose des éléments suivants, séparés par l’opérateur « = > » :
Une condition : utilisée dans une règle permettant de vérifier les revendications d’entrée et de déterminer si l’instruction d’émission de la règle doit être exécutée. Elle représente une expression logique qui doit être évaluée comme « true » pour que la partie du corps de la règle s’exécute.
Une instruction d’émission.
Exemple :
c:[type == "Name", value == "domain user"] => issue(type = "Role", value = "employee");
Cette revendication comporte les éléments suivants :
- La condition,
c:[type == "Name", value == "domain user"]
, évalue la revendication d’entrée indiquant si le nom du compte Windows est un utilisateur de domaine. - L’émission,
issue(type = "Role", value = "employee")
, si la condition est vraie, ajoute une nouvelle revendication à la revendication d’entrée avec le rôle d’employé.
Pour plus d’informations sur les revendications et la syntaxe, consultez Le rôle du langage de règle de revendications.
Éditeur de règle de revendications
La vérification de la syntaxe est effectuée par l’éditeur de règles de revendication une fois que vous avez complété la revendication et sélectionné OK. Par conséquent, si vous avez la syntaxe incorrecte, l’éditeur vous en informera.
Journaux d’événements
Lorsque vous cherchez à résoudre les problèmes d’une revendication à l’aide des journaux, la meilleure approche consiste à rechercher la sortie des revendications. Vous pouvez rechercher 1 000 et 1 001 événements dans le journal des événements.
Création d’un exemple d’application
Vous pouvez également créer un exemple d’application pour faire écho à vos revendications. Par exemple, vous pouvez utiliser un exemple d’application et créer une partie de confiance qui a la même revendication que celle que vous essayez de résoudre et voir si l’application rencontre des problèmes avec cette revendication.
Un bon exemple d’application web est disponible ici. Cette application renvoie les revendications qu’elle reçoit de la partie de confiance. Pour l’utiliser, vous devez modifier l’application web.config en procédant comme suit :
- Passer https://app1.contoso.com/sampapp à l’URL qui sera utilisée pour héberger l’exemple d’application.
- La modification de toutes les instances de sts.contoso.com pour pointer vers votre serveur de fédération AD FS.
- Remplacement de l’empreinte numérique par votre empreinte numérique.
- Remplacez le
decryptionKey
et levalidationKey
par des valeurs appropriées à votre scénario.
L’article de blog suivant contient d’excellentes instructions détaillées pour configurer cela.