Partager via


Quand utiliser une règle Envoyer les attributs LDAP en tant que revendications

Vous pouvez utiliser cette règle dans les services de fédération Active Directory (ADFS) si vous souhaitez émettre des revendications sortantes contenant des valeurs d'attributs LDAP (Lightweight Directory Access Protocol) qui existent dans un magasin d'attributs, puis associer un type de revendication à chacun des attributs LDAP. Pour plus d’informations sur les magasins d’attributs, consultez Rôle des magasins d’attributs.

Lorsque vous utilisez cette règle, vous émettez une revendication pour chaque attribut LDAP que vous spécifiez et qui correspond à la logique de la règle, comme décrit dans le tableau suivant.

Option de règle Logique de règle
Mappage d’attributs LDAP à des types de revendications sortantes Si le magasin d'attributs est le magasin d'attributs spécifié et l'attribut LDAP est égal à la valeur spécifiée, mappez la valeur de l'attribut LDAP au type de revendication sortante spécifiée, puis émettez la revendication.

Les sections suivantes présentent brièvement les règles de revendication. Elles expliquent également quand utiliser la règle Envoyer les attributs LDAP en tant que revendications.

À propos des règles de revendication

Une règle de revendication représente une instance de logique métier qui gère une revendication entrante, lui applique une condition (si x, alors y) et génère une revendication sortante en fonction des paramètres de la condition. La liste suivante présente d’importantes astuces sur les règles de revendication dont vous devez prendre connaissance avant de poursuivre la lecture de cette rubrique :

  • Dans le composant logiciel enfichable Gestion AD FS, les règles de revendication peuvent uniquement être créées à 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 des revendications générées par des règles précédentes dans un ensemble de règles donné.

  • Les modèles de règles de revendication vous obligent toujours à 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.

Mappage d’attributs LDAP à des types de revendications sortantes

Lorsque vous utilisez le modèle de règle Envoyer les attributs LDAP en tant que revendications, vous pouvez sélectionner les attributs d’un magasin d’attributs LDAP, comme Active Directory ou AD DS (services de domaine Active Directory) pour envoyer leurs valeurs en tant que revendications à la partie de confiance. Cette opération mappe certains attributs LDAP d’un magasin d’attributs que vous définissez à un ensemble de revendications sortantes que vous pouvez utiliser pour l'autorisation.

Avec ce modèle, vous pouvez ajouter plusieurs attributs qui seront envoyés en tant que revendications multiples, à partir d'une seule règle. Par exemple, vous pouvez utiliser ce modèle pour créer une règle qui va rechercher des valeurs d’attribut pour des utilisateurs authentifiés dans les attributs Active Directory company et department, puis envoyer ces valeurs sous la forme de deux revendications sortantes.

Vous pouvez également utiliser cette règle pour envoyer les appartenances de l’utilisateur à des groupes. Si vous souhaitez n’envoyer qu’une appartenance à un groupe, utilisez le modèle de règle Envoyer l’appartenance au groupe en tant que revendication. Pour plus d'informations, voir When to Use a Send Group Membership as a Claim Rule.

Comment créer cette règle

Vous pouvez créer cette règle à l'aide du langage des règles de revendication ou du modèle de règle Envoyer les attributs LDAP en tant que revendications dans le composant logiciel enfichable Gestion AD FS. Ce modèle de règle fournit les options de configuration suivantes :

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

  • Sélectionner un magasin d'attributs duquel extraire les attributs LDAP

  • Mappage d’attributs LDAP à des types de revendications sortantes

Pour plus d’informations sur la création de cette règle, consultez Créer une règle pour envoyer des attributs LDAP en tant que revendications.

Utilisation du langage des règles de revendication

Si la demande envoyée à Active Directory, AD DS ou AD LDS (Active Directory Lightweight Directory Services) doit comparer un attribut LDAP autre que samAccountname, utilisez plutôt une règle personnalisée. S'il n'existe aucune revendication de nom de compte Windows dans le jeu d'entrée, vous devez également utiliser une règle personnalisée afin de spécifier la revendication à utiliser pour interroger le service AD DS ou AD LDS.

Les exemples suivants vous aident à comprendre les différentes méthodes permettant de créer une règle personnalisée à l'aide du langage des règles de revendication pour interroger et extraire des données d’un magasin d'attributs.

Exemple : comment interroger un magasin d’attributs AD LDS et retourner une valeur spécifiée

Les paramètres doivent être séparés par un point-virgule. Le premier paramètre est le filtre LDAP. Les paramètres suivants sont les attributs à retourner aux objets correspondants.

L’exemple suivant montre comment rechercher un utilisateur par l’attribut sAMAccountName et émettre une revendication d’adresse e-mail, à l’aide de la valeur de l’attribut mail de l’utilisateur :

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"));

L’exemple suivant montre comment rechercher un utilisateur par l’attribut mail et émettre des revendications de titre et de nom complet à l’aide des valeurs des attributs title et displayname de l’utilisateur :

c:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress ", Issuer == "AD AUTHORITY"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "mail={0};title;displayname", param = c.Value);

L’exemple suivant montre comment rechercher un utilisateur par adresse e-mail et par titre, puis émettre une revendication de nom complet à l’aide de l’attribut displayname de l’utilisateur :

c1:[Type == " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"] && c2:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/title"]
=> issue(store = "AD LDS ", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/displayname"), query = "(&(mail={0})(title={1}));displayname", param = c1.Value, param = c2.Value);

Exemple : comment interroger un magasin d’attributs Active Directory et retourner une valeur spécifiée

La requête Active Directory doit inclure le nom de l’utilisateur (avec le nom de domaine) en tant que dernier paramètre, afin que le magasin d’attributs Active Directory puisse interroger le bon domaine. Sinon, la syntaxe prise en charge est la même.

L'exemple suivant montre comment rechercher un utilisateur par l’attribut sAMAccountName dans son domaine, puis retourner l’attribut mail :

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = "sAMAccountName={0};mail;{1}", param = regexreplace(c.Value, "(?<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

Exemple : comment interroger un magasin d’attributs Active Directory en fonction de la valeur d’une revendication entrante

c:[Type == "http://test/name"]

   => issue(store = "Enterprise AD Attribute Store",

         types = ("http://test/email"),

         query = ";mail;{0}",

         param = c.Value)

La demande précédente comprend les trois éléments suivants :

  • Le filtre LDAP : spécifiez cette partie de la demande pour récupérer les objets dont vous souhaitez interroger les attributs. Pour obtenir des informations générales sur les demandes LDAP valides, consultez la RFC 2254. Lorsque vous interrogez un magasin d’attributs Active Directory et que vous ne spécifiez pas de filtre LDAP, la requête samAccountName={0} est supposée et le magasin d’attributs Active Directory attend un paramètre pouvant fournir la valeur de {0}. Sinon, la demande génère une erreur. Pour un magasin d'attributs LDAP autre qu'Active Directory, vous ne pouvez pas omettre le filtre LDAP de la demande. Sinon, une erreur est générée.

  • Spécification des attributs : dans cette deuxième partie de la demande, spécifiez les attributs (séparés par des virgules si vous utilisez plusieurs valeurs) que vous souhaitez dans les objets filtrés. Le nombre d'attributs spécifiés doit correspondre au nombre de types de revendications que vous définissez dans la requête.

  • Domaine Active Directory : ne spécifiez la dernière partie de la demande que si le magasin d'attributs est Active Directory. (Cela n’est pas nécessaire lorsque vous interrogez d’autres magasins d’attributs.) Cette partie de la requête est utilisée pour spécifier le compte d’utilisateur sous la forme domaine\name. Le magasin d'attributs Active Directory utilise la partie domaine pour déterminer le contrôleur de domaine approprié auquel se connecter, pour exécuter la demande et obtenir les attributs.

Exemple : comment utiliser deux règles personnalisées pour extraire l’adresse e-mail du responsable, d’un attribut dans Active Directory

Utilisées ensemble dans l'ordre ci-dessous, les deux règles personnalisées suivantes recherchent dans Active Directory l’attribut manager du compte d'utilisateur (règle 1), puis utilisent cet attribut pour interroger le compte d'utilisateur du responsable pour l’attribut mail (règle 2). Enfin, l’attribut mail est émis en tant que revendication « ManagerEmail ». En résumé, la règle 1 interroge Active Directory et transmet son résultat à la règle 2 qui extrait les valeurs d’e-mail du responsable.

Par exemple, lorsque l’exécution de ces règles est terminée, une revendication est émise. Elle contient l’adresse e-mail du responsable d’un utilisateur dans le domaine corp.fabrikam.com.

Règle 1

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> add(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"), query = "sAMAccountName=
{0};mail,userPrincipalName,extensionAttribute5,manager,department,extensionAttribute2,cn;{1}", param = regexreplace(c.Value, "(?
<domain>[^\\]+)\\(?<user>.+)", "${user}"), param = c.Value);

Règle 2

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
&& c1:[Type == "http://schemas.xmlsoap.org/claims/ManagerDistinguishedName"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/claims/ManagerEmail"), query = "distinguishedName={0};mail;{1}", param = c1.Value,
param = regexreplace(c1.Value, ".*DC=(?<domain>.+),DC=corp,DC=fabrikam,DC=com", "${domain}\username"));

Remarque

Ces règles fonctionnent uniquement si le responsable de l’utilisateur se trouve dans le même domaine que l’utilisateur (corp.fabrikam.com en l’occurrence).

Références supplémentaires

Créer une règle pour envoyer des attributs LDAP en tant que revendications