Quand utiliser une règle de revendication personnalisée

Vous écrivez une règle de revendication personnalisée dans les services de fédération Active Directory (AD FS) à l’aide du langage des règles de revendication, qui est l’infrastructure utilisée par le moteur d’émission des revendications pour générer, transformer, transmettre et filtrer les revendications par le biais d’un programme. L’utilisation d’une règle personnalisée permet de créer des règles avec une logique plus complexe qu’un modèle de règle standard. Envisagez d’utiliser une règle personnalisée lorsque vous souhaitez :

  • Envoyer des revendications basées sur les valeurs extraites d’un magasin d’attributs de langage SQL (Structured Query Language).

  • Envoyer des revendications basées sur les valeurs extraites d’un magasin d’attributs LDAP (Lightweight Directory Access Protocol) à l’aide d’un filtre LDAP personnalisé.

  • Envoyer des revendications basées sur les valeurs extraites d’un magasin d’attributs personnalisés.

  • Envoyer des revendications uniquement en présence de deux ou plusieurs revendications entrantes.

  • Envoyer des revendications uniquement lorsqu’une valeur de revendication entrante correspond à un modèle complexe.

  • Envoyer des revendications avec des modifications complexes apportées à une valeur de revendication entrante.

  • Créer des revendications destinées à être utilisées uniquement dans des règles ultérieures sans réellement envoyer les revendications.

  • Élaborer une revendication sortante à partir du contenu de plusieurs revendications entrantes.

Vous pouvez également utiliser une règle personnalisée lorsque la valeur de revendication de la revendication sortante doit être basée sur la valeur de la revendication entrante. Elle doit également inclure du contenu supplémentaire.

Le langage des règles de revendication repose sur des règles. Il est composé d’une partie relative aux conditions et d’une autre relative à l’exécution. Vous pouvez utiliser la syntaxe du langage des règles de revendication pour énumérer, ajouter, supprimer ou modifier des revendications afin de répondre aux besoins de votre organisation. Pour plus d’informations sur le fonctionnement de chacune de ces parties, consultez Rôle du langage de règle de revendication.

Les sections suivantes présentent brièvement les règles de revendication. Elles indiquent également à quel moment utiliser une règle de revendication personnalisée.

À propos des règles de revendication

Une règle de revendication représente une instance de logique métier qui prend une revendication entrante, lui applique une condition (si x, alors y) et génère une revendication sortante basée sur les paramètres de condition.

Important

  • Dans le composant logiciel enfichable de gestion AD FS, les règles de revendication ne peuvent être créées qu’à l’aide de modèles de règle de revendication.
  • Les règles de revendication traitent les revendications entrantes soit directement depuis un fournisseur de revendications (tel qu’Active Directory ou un autre service de fédération), soit à partir du résultat des règles de transformation d’acceptation sur une approbation de fournisseur de revendications.
  • Les règles de revendication sont traitées par le moteur d’émission des revendications au sein d’un ensemble de règles donné et dans l’ordre chronologique. En définissant la hiérarchie des règles, vous pouvez affiner ou filtrer les revendications qui sont générées par les règles précédentes au sein d’un ensemble de règles donné.
  • Les modèles de règle de revendication nécessitent toujours de spécifier un type de revendication entrante. Toutefois, vous pouvez traiter plusieurs valeurs de revendication avec le même type de revendication, en vous appuyant sur une règle unique.

Pour plus d’informations sur les règles de revendication et les ensembles de règles de revendication, consultez Rôle des règles de revendication. Pour plus d’informations sur le traitement des règles, consultez Rôle du moteur de revendications. Pour plus d’informations sur le traitement des ensembles de règles de revendication, consultez Rôle du pipeline de revendications.

Comment créer cette règle

Vous créez cette règle en commençant par créer la syntaxe dont vous avez besoin pour votre opération à l’aide du langage des règles de revendication et en collant ensuite le résultat dans la zone de texte fournie dans le modèle Envoyer une revendication à l’aide d’une règle personnalisée sur les propriétés d’une approbation de fournisseur de revendications ou de partie de confiance dans le composant logiciel enfichable de gestion AD FS.

Ce modèle de règle propose les options suivantes :

  • Spécifier un nom de règle de revendication

  • Tapez une ou plusieurs conditions facultatives et une instruction d’émission à l’aide du langage des règles de revendication AD FS

Pour plus d’instructions sur la création d’une règle personnalisée à l’aide de ce modèle, consultez Créer une règle pour envoyer des revendications à l’aide d’une règle personnalisée dans le Guide de déploiement AD FS.

Pour mieux comprendre comment fonctionne le langage des règles de revendication, examinez la syntaxe du langage de règle revendication d’autres règles déjà existantes du composant logiciel enfichable en cliquant sur l’onglet Afficher le langage de règle dans les propriétés de cette règle. L’utilisation des informations contenues dans cette section et des informations de syntaxe de cet onglet peuvent indiquer comment construire vos propres règles personnalisées.

Pour plus d’informations sur l’utilisation du langage de règle de revendication, consultez Rôle du langage de règle de revendication.

Utilisation du langage des règles de revendication

Exemple : combinaison de noms et de prénoms selon les valeurs d’attribut d’un nom d’utilisateur

La syntaxe de règle suivante combine les prénoms et les noms des valeurs d’attribut dans un magasin d’attributs donné. Le moteur de stratégie constitue un produit cartésien des correspondances pour chaque condition. Par exemple, le résultat pour le prénom {« Frank », « Alan »} et les noms {« Miller », « Shen »} est {« Frank Miller », « Frank Shen », « Alan Miller », « Alan Shen »} :

c1:[type == "http://exampleschema/firstname" ]
&&  c2:[type == "http://exampleschema/lastname",]
=> issue(type = "http://exampleschema/name", value = c1.value + "  " + c2.value);

Exemple : comment émettre une revendication de gestionnaire basée sur le fait que des utilisateurs disposent de rapports directs

La règle suivante émet une revendication de gestionnaire uniquement si l’utilisateur a des rapports directs :

c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] => add(store = "SQL Store", types = ("http://schemas.xmlsoap.org/claims/Reports"), query = "SELECT Reports FROM dbo.DirectReports WHERE UserName = {0}", param = c.value );
count([type == "http://schemas.xmlsoap.org/claims/Reports"] ) > 0 => issue(= "http://schemas.xmlsoap.org/claims/ismanager", value = "true");

Exemple : comment émettre une revendication PPID (Private Personal Identifier) basée sur un attribut LDAP

La règle suivante émet une revendication PPID (Private Personal Identifier) basée sur les attributs windowsaccountname et originalissuer d’utilisateurs d’un magasin d’attributs LDAP :

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
 => issue(store = "_OpaqueIdStore", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier"), query = "{0};{1};{2}", param = "ppid", param = c.Value, param = c.OriginalIssuer);

Les attributs communs qui peuvent être utilisés pour identifier l’utilisateur pour cette requête sont les suivants :

  • SID de l’utilisateur

  • windowsaccountname

  • samaccountname