<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://www.minetti.org/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Java%3AAcc%C3%A8s_%C3%A0_un_LDAP</id>
		<title>Java:Accès à un LDAP - Historique des versions</title>
		<link rel="self" type="application/atom+xml" href="http://www.minetti.org/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Java%3AAcc%C3%A8s_%C3%A0_un_LDAP"/>
		<link rel="alternate" type="text/html" href="http://www.minetti.org/mediawiki/index.php?title=Java:Acc%C3%A8s_%C3%A0_un_LDAP&amp;action=history"/>
		<updated>2026-05-04T13:01:28Z</updated>
		<subtitle>Historique pour cette page sur le wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://www.minetti.org/mediawiki/index.php?title=Java:Acc%C3%A8s_%C3%A0_un_LDAP&amp;diff=107&amp;oldid=prev</id>
		<title>Jp : Page créée avec « == But == Un serveur LDAP est avant tout une base de données, mais dont le modèle de données est standardisé. Grâce à cela, plusie... »</title>
		<link rel="alternate" type="text/html" href="http://www.minetti.org/mediawiki/index.php?title=Java:Acc%C3%A8s_%C3%A0_un_LDAP&amp;diff=107&amp;oldid=prev"/>
				<updated>2016-04-07T17:55:27Z</updated>
		
		<summary type="html">&lt;p&gt;Page créée avec « == But == Un &lt;a href=&quot;/wiki/Linux:Configuration_d%27OpenLDAP&quot; title=&quot;Linux:Configuration d'OpenLDAP&quot;&gt;serveur LDAP&lt;/a&gt; est avant tout une base de données, mais dont le modèle de données est standardisé. Grâce à cela, plusie... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== But ==&lt;br /&gt;
Un [[Linux:Configuration d'OpenLDAP|serveur LDAP]] est avant tout une base de données, mais dont le modèle de données est standardisé. Grâce à cela, plusieurs applications peuvent partager les mêmes données. L'exemple le plus parlant sont les comptes et les groupes d'utilisateurs: dans un réseau d'entreprise, une application qui gère ses utilisateurs à partir d'un [[Linux:Configuration d'OpenLDAP|LDAP]] est un plus.&lt;br /&gt;
&lt;br /&gt;
== Préliminaire ==&lt;br /&gt;
Avant de commencer à développer des accès à un [[Linux:Configuration d'OpenLDAP|LDAP]], il est impératif de procéder à [[Linux:Configuration d'OpenLDAP|l'installation d'un serveur LDAP]].&lt;br /&gt;
&lt;br /&gt;
== Connexion/Déconnexion à un serveur LDAP ==&lt;br /&gt;
Pour se connecter à un [[Linux:Configuration d'OpenLDAP|serveur LDAP]]:&lt;br /&gt;
 final Hashtable&amp;lt;String, String&amp;gt; env = new Hashtable&amp;lt;String, String&amp;gt; ();&lt;br /&gt;
 env.put (Context.INITIAL_CONTEXT_FACTORY, &amp;quot;com.sun.jndi.ldap.LdapCtxFactory&amp;quot;);&lt;br /&gt;
 env.put (Context.PROVIDER_URL, &amp;quot;ldap://ldap.minetti.org/ou=people,ou=localnet,dc=minetti,dc=org&amp;quot;);&lt;br /&gt;
 env.put (Context.SECURITY_AUTHENTICATION, &amp;quot;simple&amp;quot;);&lt;br /&gt;
 env.put (Context.SECURITY_PRINCIPAL, &amp;quot;cn=admin,ou=sysaccount,ou=localnet,dc=minetti,dc=org&amp;quot;);&lt;br /&gt;
 env.put (Context.SECURITY_CREDENTIALS, &amp;quot;mypassword&amp;quot;);&lt;br /&gt;
 final LdapContext context = new InitialLdapContext (env, null);&lt;br /&gt;
Ici, on se connecte au serveur '''ldap.minetti.org''' à partir du noeud '''ou=people,ou=localnet,dc=minetti,dc=org''' et sous le compte '''admin''' (cn=admin,ou=sysaccount,ou=localnet,dc=minetti,dc=org).&lt;br /&gt;
&lt;br /&gt;
La connexion sera encapsulé dans une instance de la classe [http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/InitialLdapContext.html javax.naming.ldap.InitialLdapContext] (qui implémente l'interface [http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/LdapContext.html javax.naming.ldap.LdapContext]).&lt;br /&gt;
&lt;br /&gt;
Pour se déconnecter:&lt;br /&gt;
 context.close ();&lt;br /&gt;
&lt;br /&gt;
== Recherche d'entités ==&lt;br /&gt;
La plupart des recherches retournent une instance de [http://docs.oracle.com/javase/6/docs/api/javax/naming/NamingEnumeration.html javax.naming.NamingEnumeration] représentant une énumération de [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/SearchResult.html javax.naming.directory.SearchResult]. Chaque [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/SearchResult.html SearchResult] embarque une entité à travers une instance de [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/Attributes.html javax.naming.directory.Attributes]. C'est à travers cette instance que l'on pourra récupérer toutes les données d'une entité.&lt;br /&gt;
 final NamingEnumeration&amp;lt;SearchResult&amp;gt; resultEnumeration = context.search (...);&lt;br /&gt;
 while (resultEnumeration.hasMore ()) {&lt;br /&gt;
    final SearchResult entry = resultEnumeration.next ();&lt;br /&gt;
    final LdapName dn = new LdapName (Rdn.unescapeValue (entry.getNameInNamespace ()).toString ());&lt;br /&gt;
    final Attributes attributes = entry.getAttributes ();&lt;br /&gt;
    ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Par le distinguished name (DN) ===&lt;br /&gt;
Pour rechercher une entitée par son DN:&lt;br /&gt;
 final Attributes attributes = context.getAttributes (new LdapName(&amp;quot;uid=&amp;quot; + Rdn.escapeValue (uid)));&lt;br /&gt;
&lt;br /&gt;
La recherche par DN est la seule qui nous garantie un résultat unique: c'est la seule recherche qui retourne directement une instance [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/Attributes.html javax.naming.directory.Attributes].&lt;br /&gt;
&lt;br /&gt;
Le DN indiqué ne doit pas contenir la base DN mentionnée lors de la [[Java:Accès à un LDAP#Connexion/Déconnexion à un serveur LDAP|connexion]] (dans notre exemple: ''ou=people,ou=localnet,dc=minetti,dc=org''). La recherche commencera à partir des noeuds enfants de la base DN.&lt;br /&gt;
&lt;br /&gt;
Il est vivement recommandé de placer les DN dans une instance [http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/LdapName.html javax.naming.ldap.LdapName] et de formater sa valeur à l'aide de la méthode [http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/Rdn.html#escapeValue(java.lang.Object) escapeValue(...)] de [http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/Rdn.html javax.naming.ldap.Rdn]. En effet, certains caractères (comme espace , = + &amp;lt; &amp;gt; # ; &amp;quot; \) sont réservé et ne peuvent se trouver dans la valeur d'un attribut du DN. Pour rappel un DN est de la forme: attribut1=valeur1,attribut2=valeur2,attribut3=valeur3 (exemple: ou=people,ou=localnet,dc=minetti,dc=org).&lt;br /&gt;
&lt;br /&gt;
=== Par type d'entités uniquement ===&lt;br /&gt;
Pour retourner toutes les entités d'un même type (par exemple: inetOrgPerson):&lt;br /&gt;
 final SearchControls searchControls = new SearchControls ();&lt;br /&gt;
 searchControls.setSearchScope (SearchControls.ONELEVEL_SCOPE);&lt;br /&gt;
 final NamingEnumeration&amp;lt;SearchResult&amp;gt; resultEnumeration = context.search (&amp;quot;&amp;quot;, &amp;quot;(objectClass=inetOrgPerson)&amp;quot;, searchControls);&lt;br /&gt;
Ici, l'instance [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/SearchControls.html javax.naming.directory.SearchControls] permet d'indiquer où se fera notre recherche. On peut ainsi paramétrer notre recherche sur:&lt;br /&gt;
* ONELEVEL_SCOPE pour rechercher uniquement au niveau de notre base DN indiquée lors de la [[Java:Accès à un LDAP#Connexion/Déconnexion à un serveur LDAP|connexion]] (dans notre exemple: ''ou=people,ou=localnet,dc=minetti,dc=org''),&lt;br /&gt;
* SUBTREE_SCOPE pour rechercher au niveau de notre base DN et dans les noeuds enfants.&lt;br /&gt;
&lt;br /&gt;
=== Par type d'entités et attributs ===&lt;br /&gt;
Pour retourner toutes les entités d'un même type '''ET''' qui ont un ou plusieurs attributs avec des valeurs données (par exemple: uid=jp):&lt;br /&gt;
 final String filterExpression = &amp;quot;(&amp;amp;(uid=jp)(objectClass=inetOrgPerson))&amp;quot;;&lt;br /&gt;
 final SearchControls searchControls = new SearchControls ();&lt;br /&gt;
 searchControls.setSearchScope (SearchControls.ONELEVEL_SCOPE);&lt;br /&gt;
 final NamingEnumeration&amp;lt;SearchResult&amp;gt; resultEnumeration = context.search (&amp;quot;&amp;quot;, filterExpression, searchControls);&lt;br /&gt;
'''Attention:''' La recherche est possible uniquement sur les attributs indexés (se reporter à la [[Linux:Administration d'OpenLDAP#Ajout de nouveaux index|configuration du LDAP]] pour paramétrer les indexes).&lt;br /&gt;
&lt;br /&gt;
== Lecture des attributs d'une entité ==&lt;br /&gt;
Pour lire un attribut d'une entité:&lt;br /&gt;
 final Attribute attribute = attributes.get (&amp;quot;givenName&amp;quot;);&lt;br /&gt;
 if (attribute != null) {&lt;br /&gt;
    Object value = attribute.get ();&lt;br /&gt;
    ...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Chaque attribut de l'entité est encapsulé dans un objet implémentant l'interface [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/Attribute.html javax.naming.directory.Attribute].&lt;br /&gt;
&lt;br /&gt;
Pour lire un attribut de type tableau de valeurs:&lt;br /&gt;
 final Attribute attribute = attributes.get (&amp;quot;uniqueMember&amp;quot;);&lt;br /&gt;
 if ((attribute != null) &amp;amp;&amp;amp; (attribute.size () &amp;gt; 0)) {&lt;br /&gt;
    final NamingEnumeration&amp;lt;?&amp;gt; enumeration = attribute.getAll ();&lt;br /&gt;
    while (enumeration.hasMore ()) {&lt;br /&gt;
       final String value = (String) enumeration.next ();&lt;br /&gt;
       ...&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ici, nous faisons une lecture de l'attribut '''uniqueMember''' (que l'on trouve dans les entités '''groupOfUniqueNames'''). Les valeurs de cet attribut sont de type DN (distinguished name). Il est vivement recommandé de placer les DN dans une instance [http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/LdapName.html javax.naming.ldap.LdapName]:&lt;br /&gt;
 final LdapName dn = new LdapName (value);&lt;br /&gt;
&lt;br /&gt;
== Création d'une entité ==&lt;br /&gt;
Pour créer une nouvelle entité dans le [[Linux:Configuration d'OpenLDAP|LDAP]] (par exemple, un inetOrgPerson):&lt;br /&gt;
 final Attributes attributes = new BasicAttributes ();&lt;br /&gt;
 &lt;br /&gt;
 // Attribut objectClass&lt;br /&gt;
 final BasicAttribute objectClassAttribute = new BasicAttribute (&amp;quot;objectClass&amp;quot;);&lt;br /&gt;
 objectClassAttribute.add (&amp;quot;top&amp;quot;);&lt;br /&gt;
 objectClassAttribute.add (&amp;quot;inetOrgPerson&amp;quot;);&lt;br /&gt;
 attributes.put (objectClassAttribute);&lt;br /&gt;
 &lt;br /&gt;
 // Attribut UID&lt;br /&gt;
 final String uid = ...&lt;br /&gt;
 attributes.put (new BasicAttribute (&amp;quot;uid&amp;quot;, uid));&lt;br /&gt;
 &lt;br /&gt;
 // Attribut postalAddress (tableau de valeurs)&lt;br /&gt;
 final String address1 = ...&lt;br /&gt;
 final String address2 = ...&lt;br /&gt;
 final BasicAttribute addressAttribute = new BasicAttribute (&amp;quot;postalAddress&amp;quot;, true);&lt;br /&gt;
 addressAttribute.add (address1);&lt;br /&gt;
 addressAttribute.add (address2);&lt;br /&gt;
 attributes.put (addressAttribute);&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 // DN&lt;br /&gt;
 final LdapName name = new LdapName (&amp;quot;uid=&amp;quot; + Rdn.escapeValue (uid));&lt;br /&gt;
 &lt;br /&gt;
 // Création&lt;br /&gt;
 context.createSubcontext (name, attributes);&lt;br /&gt;
&lt;br /&gt;
Chaque attribut de l'entité sera placé dans une instance de [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/BasicAttribute.html javax.naming.directory.BasicAttribute]. Cette instance sera à son tour placé dans une instance [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/BasicAttributes.html javax.naming.directory.BasicAttributes].&lt;br /&gt;
&lt;br /&gt;
La création de la nouvelle entité se fera grâce à la méthode [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/InitialDirContext.html#createSubcontext(javax.naming.Name,%20javax.naming.directory.Attributes) createSubcontext(Name, Attributes)] de l'objet connexion ([http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/InitialLdapContext.html javax.naming.ldap.InitialLdapContext]).&lt;br /&gt;
&lt;br /&gt;
== Modification d'une entité ==&lt;br /&gt;
Pour modifier un ou plusieurs attributs d'une entité:&lt;br /&gt;
 final Attributes attributesToReplace = new BasicAttributes ();&lt;br /&gt;
 final Attributes attributesToRemove = new BasicAttributes ();&lt;br /&gt;
 &lt;br /&gt;
 // Ajout/Modification d'un attribut&lt;br /&gt;
 final String sn = ...&lt;br /&gt;
 attributesToReplace.put (new BasicAttribute (&amp;quot;sn&amp;quot;, sn));&lt;br /&gt;
 &lt;br /&gt;
 // Suppression d'un attribut (valeur NULL)&lt;br /&gt;
 attributesToRemove.put (new BasicAttribute (&amp;quot;givenName&amp;quot;));&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 // DN&lt;br /&gt;
 final LdapName name = new LdapName (&amp;quot;uid=&amp;quot; + Rdn.escapeValue (uid));&lt;br /&gt;
 &lt;br /&gt;
 // Modification&lt;br /&gt;
 context.modifyAttributes (name, DirContext.REPLACE_ATTRIBUTE, attributesToReplace);&lt;br /&gt;
 context.modifyAttributes (name, DirContext.REMOVE_ATTRIBUTE, attributesToRemove);&lt;br /&gt;
&lt;br /&gt;
'''Attention:''' Les attributs à supprimer doivent exister. S'ils n'existent pas une erreur se produit.&lt;br /&gt;
&lt;br /&gt;
La modification d'une entité se fera grâce à la méthode [http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/InitialDirContext.html#modifyAttributes(javax.naming.Name,%20int,%20javax.naming.directory.Attributes) modifyAttributes(Name, int, Attributes)] de l'objet connexion ([http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/InitialLdapContext.html javax.naming.ldap.InitialLdapContext]) et peut porter sur:&lt;br /&gt;
* une modification d'un ou plusieurs attributs de l'entité (REPLACE_ATTRIBUTE),&lt;br /&gt;
* ou une suppression d'un ou plusieurs attributs de l'entité (REMOVE_ATTRIBUTE).&lt;br /&gt;
&lt;br /&gt;
== Suppression d'une entité ==&lt;br /&gt;
Pour supprimer une entité du [[Linux:Configuration d'OpenLDAP|LDAP]]:&lt;br /&gt;
 // DN&lt;br /&gt;
 final LdapName name = new LdapName (&amp;quot;uid=&amp;quot; + Rdn.escapeValue (uid));&lt;br /&gt;
 &lt;br /&gt;
 // Suppression&lt;br /&gt;
 context.destroySubcontext (name);&lt;br /&gt;
&lt;br /&gt;
La suppression d'une entité se fera grâce à la méthode [http://docs.oracle.com/javase/6/docs/api/javax/naming/InitialContext.html#destroySubcontext(javax.naming.Name) destroySubcontext(Name)] de l'objet connexion ([http://docs.oracle.com/javase/6/docs/api/javax/naming/ldap/InitialLdapContext.html javax.naming.ldap.InitialLdapContext]).&lt;br /&gt;
&lt;br /&gt;
== Chiffrement d'attributs ==&lt;br /&gt;
Certains attributs, comme les mots de passe (userPassword), doivent être chiffrés:&lt;br /&gt;
 final String password = ...&lt;br /&gt;
 final MessageDigest sha = MessageDigest.getInstance (&amp;quot;SHA&amp;quot;);&lt;br /&gt;
 sha.update (password.getBytes (&amp;quot;UTF-8&amp;quot;));&lt;br /&gt;
 final String encodedPassword = &amp;quot;{SHA}&amp;quot; + (new BASE64Encoder ()).encode (sha.digest ());&lt;br /&gt;
&lt;br /&gt;
== Quelques entités et attributs les plus utilisées ==&lt;br /&gt;
=== Hiérarchie des utilisateurs et personnes ===&lt;br /&gt;
{|style=&amp;quot;color:black;background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Entités&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Attributs&lt;br /&gt;
|-&lt;br /&gt;
!Nom&lt;br /&gt;
!Type&lt;br /&gt;
!Nom&lt;br /&gt;
!Requis&lt;br /&gt;
!Longueur&lt;br /&gt;
!Explication&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|top&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|abstract&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|objectClass&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|oui&lt;br /&gt;
|&lt;br /&gt;
|Classe d'une entité (tableau de valeurs).&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; rowspan=&amp;quot;5&amp;quot;|person&lt;br /&gt;
(hérite de top)&lt;br /&gt;
|align=&amp;quot;center&amp;quot; rowspan=&amp;quot;5&amp;quot;|structural&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|cn&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|oui&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|32 768&lt;br /&gt;
|Nom complet de la personne (prénom et nom de famille).&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|sn&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|oui&lt;br /&gt;
|&lt;br /&gt;
|Nom de famille de la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|description&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|1 024&lt;br /&gt;
|Description de la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|telephoneNumber&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|32&lt;br /&gt;
|Numéro de téléphone.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|userPassword&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|128&lt;br /&gt;
|Mot de passe.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; rowspan=&amp;quot;7&amp;quot;|organizationalPerson&lt;br /&gt;
(hérite de person)&lt;br /&gt;
|align=&amp;quot;center&amp;quot; rowspan=&amp;quot;7&amp;quot;|structural&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|facsimileTelephoneNumber&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|&lt;br /&gt;
|Numéro de fax.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|l&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|&lt;br /&gt;
|Localité où réside la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|postOfficeBox&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|40&lt;br /&gt;
|Boite postale de la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|postalAddress&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|&lt;br /&gt;
|Ligne complémentaire d'adresse où réside la personne (tableau de valeurs).&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|postalCode&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|40&lt;br /&gt;
|Code postal où réside la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|st&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|&lt;br /&gt;
|Etat ou province où réside la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|street&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|128&lt;br /&gt;
|Numéro et nom de la rue où réside la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; rowspan=&amp;quot;4&amp;quot;|inetOrgPerson&lt;br /&gt;
(hérite de organizationalPerson)&lt;br /&gt;
|align=&amp;quot;center&amp;quot; rowspan=&amp;quot;4&amp;quot;|structural&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|givenName&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|&lt;br /&gt;
|Prénom de la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|mail&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|256&lt;br /&gt;
|Adresse e-mail de la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|o&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|&lt;br /&gt;
|Nom de la société où travail la personne.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|uid&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|256&lt;br /&gt;
|Identifiant de la personne (utilisateur).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Hiérarchie des groupes d'utilisateurs ===&lt;br /&gt;
{|style=&amp;quot;color:black;background-color:#ffffcc;&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Entités&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Attributs&lt;br /&gt;
|-&lt;br /&gt;
!Nom&lt;br /&gt;
!Type&lt;br /&gt;
!Nom&lt;br /&gt;
!Requis&lt;br /&gt;
!Longueur&lt;br /&gt;
!Explication&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|top&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|abstract&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|objectClass&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|oui&lt;br /&gt;
|&lt;br /&gt;
|Classe d'une entité (tableau de valeurs).&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; rowspan=&amp;quot;3&amp;quot;|groupOfUniqueNames&lt;br /&gt;
(hérite de top)&lt;br /&gt;
|align=&amp;quot;center&amp;quot; rowspan=&amp;quot;3&amp;quot;|structural&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|cn&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|oui&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|32 768&lt;br /&gt;
|Nom du groupe d'utilisateurs.&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|uniqueMember&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|oui&lt;br /&gt;
|&lt;br /&gt;
|Distinguished name (DN) d'un utilisateur membre du groupe (tableau de valeurs).&lt;br /&gt;
|- style=&amp;quot;background-color:white;&amp;quot;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|description&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|non&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|1 024&lt;br /&gt;
|Description du groupe d'utilisateurs.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jp</name></author>	</entry>

	</feed>