Notions théoriques sur l’annuaire LDAP

Les types de données d’un annuaire LDAP

Cette partie traitera des différentes type de données sur le ldap, elle s’appuie principalement sur un document du CNAM de champagne ardenne.

OID

L’IETF  représente la suite d’entiers constituant les OID séparés par des points (tableaux).

Voici les types de données utilisables :

 

Numeric String 1.3.6.1.4.1.1466.115.121.1.36 numeric string
OID 1.3.6.1.4.1.1466.115.121.1.38 object identifier
Octet String 1.3.6.1.4.1.1466.115.121.1.40 arbitrary octets
Printable String 1.3.6.1.4.1.1466.115.121.1.44 printable string

 

Name OID Description
binary 1.3.6.1.4.1.1466.115.121.1.5 BER/DER data
boolean 1.3.6.1.4.1.1466.115.121.1.7 boolean value
distinguishedName 1.3.6.1.4.1.1466.115.121.1.12 DN
directoryString 1.3.6.1.4.1.1466.115.121.1.15 UTF-8 string
IA5String 1.3.6.1.4.1.1466.115.121.1.26 ASCII string
Integer 1.3.6.1.4.1.1466.115.121.1.27 integer
Name and Optimal UID 1.3.6.1.4.1.1466.115.121.1.34 DN plus UID

 

Les règles de comparaison

On retrouve les règles de comparaison dans la RFC 2252. I

On distingue deux types de règles de comparaison :

  • Les règles d’égalité, equality nativement, qui permettent de savoir lorsque deux valeurs sont égales.
  • Les règles d’ordre, ordering, qui permettent de classer des valeurs entre elles.
Name Type Description
booleanMatch equality boolean
objectIdentifierMatch equality OID
distinguishedNameMatch equality DN
uniqueMemberMatch equality DN with optional UID
numericStringMatch equality numerical
numericStringOrderingMatch ordering numerical
numericStringSubstringsMatch substrings numerical
caseIgnoreMatch equality case insensitive, space insensitive
caseIgnoreOrderingMatch ordering case insensitive, space insensitive
caseIgnoreSubstringsMatch substrings case insensitive, space insensitive
caseExactMatch equality case sensitive, space insensitive
caseExactOrderingMatch ordering case sensitive, space insensitive
caseExactSubstringsMatch substrings case sensitive, space insensitive
caseIgnoreIA5MAtch equality case insensitive, space insensitive

Chaque règle est représentée par un nom ainsi qu’une description. Voici les règles de comparaison :

caseIgnoreIA5OrderingMatch ordering case insensitive, space insensitive
caseIgnoreIA5Substrings substrings case insensitive, space insensitive
caseExactIA5Match equality case sensitive, space insensitive
caseExactIA5OrderingMatch ordering case sensitive, space insensitive
caseExactIA5SubstringsMatch substrings case sensitive, space insensitive

Bien entendu, il est possible de définir ses propres règles de comparaison.

Les classes

En réalité, les entrées sont des objets, il faut donc définir des classes pour pouvoir les instancier. Chaque classe est identifiée par un OID.

Pour savoir comment définir une nouvelle classe, regardons l’exemple suivant:

Objectclass ( chiffresOID

Dans un premier temps on précise que l’on va créer une classe avec le mot clé Objectclass. Ensuite, la première chose à faire est de préciser l’OID de la classe.

NAME ‘lapin’

Le paramètre NAME permet de préciser le nom de la classe.

DESC ‘Description d’un lapin blanc’ SUP top

Le paramètre DESC donne une description à l’entrée. Le paramètre SUP indique la classe dont on hérite. Dans cet exemple, la classe top correspond à la classe racine.

STRUCTURAL

Le mot clé STRUCTURAL permet de préciser que la classe est structurelle, c’est-à-dire qu’elle peut être instanciée. Une classe structurelle permet donc d’aboutir à des objets concrets dans un annuaire. Il est également possible d’utiliser le mot-clé ABSTRACT pour que la classe soit une classe abstraite. Dans ce cas, il n’est pas possible d’instancier un objet de cette classe. Il existe, par exemple, la classe top qui est la classe racine dans LDAP. Il n’est pas possible d’instancier un objet de cette classe mais toutes les classes dérivent directement ou indirectement de la classe top. Il existe un dernier mot-clé, AUXILIARY, qui permet de construire une classe auxiliaire destinée à apporter des fonctionnalités supplémentaires à une classe structurelle.

MUST ( nom $ prenom $ dateNaissance $ adresse  ) MAY ( siteweb $ lien )

Le paramètre MUST est utilisé pour définir les attributs qui doivent obligatoirement être définis dans un objet lapin. Les différents attributs sont séparés par un symbole $.Le paramètre MAY est utilisé pour définir les attributs qui peuvent ne pas être toujours définis lors de la création d’un objet lapin. Les différents attributs sont séparés par un symbole $.

)

Les attributs

Il faut ensuite définir ses attributs. Par exemple, si on suite, l’exemple suivant:

Attributetype ( ChiffreOID NAME ‘specialite’

 Le mot-clé Attributetype nous permet de définir un nouvel attribut. On indique, ensuite, l’OID de ce type. Le paramètre NAME permet de préciser le nom de l’attribut.

DESC ‘Indique le domaine de compétence d’un lapin’

Le paramètre DESC permet de donner une description textuelle de la classe en langage naturel. Le paramètre SUP indique l’attribut dont dérive l’attribut courant.Il est possible d’utiliser le mot-clé OBSOLETE pour indiquer qu’il s’agit d’un attribut obsolète et qu’il ne sera plus utilisé dans le futur.

EQUALITY caseIgnoreMatch

Le paramètre EQUALITY permet d’indiquer la règle de comparaison à utiliser pour savoir si deux attributs sont de valeur égale. Dans l’exemple, on recherche une égalité sans tenir compte de la casse.Le paramètre ORDERING permet d’indiquer la règle de comparaison à utiliser pour classer deux attributs.

SUBSTR caseIgnoreSubstringsMatch SYNTAX chiffreOID

Le paramètre SUBSTR permet d’indiquer la règle de comparaison à utiliser lors d’une recherche à l’intérieur de cet attribut. Il est donc possible, par exemple, de ne pas prendre en compte la casse pour l’égalité mais d’en tenir compte en cas de recherche dans l’attribut (extraction d’une sous- chaîne).Le paramètre SYNTAX permet d’indiquer l’OID du type d’attribut suivi éventuellement d’une longueur maximale entre crochets.

Le mot-clé SINGLE-VALUE permet de préciser qu’un attribut ne peut se voir attribuer qu’une seule valeur. Ce qui semble raisonnable n’est pas la règle avec LDAP. En effet, par défaut, un attribut peut se voir associer plusieurs valeurs. On parle alors d’attribut mono-valué ou multi-valué. Ce mot clé permet donc d’obtenir un attribut mono-valué.

Le mot-clé NO-USER-MODIFICATION permet d’empêcher un utilisateur de modifier l’attribut. Cette caractéristique est intéressante pour les attributs mis à jour uniquement par le système comme, par exemple, pour une date de mise à jour.

Le paramètre USAGE permet de préciser si un attribut a été défini par le concepteur (userApplication) ou s’il s’agit d’un attribut opérationnel (directoryOperation), c’est-à-dire un attribut du serveur LDAP. Par défaut, un attribut est vu comme étant défini par le concepteur.

)

 Le DIT

Dans un annuaire LDAP les entrées sont stockées en utilisant une arborescence appelée le DIT (Directory Information Tree). Chaque organisation est libre de choisir une structuration pour organiser ses données. Ce choix est important et doit être fait en connaissance de causes afin d’éviter d’avoir à travailler par la suite avec une structure non adaptée.

Il faut, dans un premier temps, définir la racine du DIT. Voici les attributs qui peuvent être utilisés :

  • (organisationName) permet d’indiquer le nom de l’organisme décrit par l’annuaire LDAP.
  • (domainComponent) permet d’indiquer le nom d’une entité de l’organisation.
  •  (countryName) permet de préciser le code du pays.
  • (state) permet de préciser l’état.
  • (localityName) permet d’indiquer le nom du lieu.

Par la suite, la racine est appelée le suffixe.

Le DIT doit être découpé en se basant sur l’entreprise ou l’administration  à représenter. On fait le distingo sur deux types de DIT :

  • Les DIT fonctionnels qui sont plutôt utilisés avec les petites entreprises et qui se chargent de regrouper les entrées par types (personnes, ordinateurs …).
  • Les DIT organisationnels qui se chargent de bien représenter la structure hiérarchique dans toute sa complexité.

Pour être compatible avec X500, il faudrait définir la racine comme ceci : o=mydomain, c=fr. Voici le sens des autres sigles :

  • dc : Domain Component
  • ou : Organizational Unit
  • cn : Common Name
  • uid : User ID

 

Voila c’est fini par aujourd’hui.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *