Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| fr:ldap [2025/01/01 09:23] – [OpenLDAP] Fichiers de configuration, ldapmodify, logs zatalyz | fr:ldap [2025/09/20 20:14] (Version actuelle) – Et revoir l'organisation de l'article zatalyz | ||
|---|---|---|---|
| Ligne 12: | Ligne 12: | ||
| C'est bien la seule chose de basique, parce que ça se corse très vite. Mais c'est la logique de base qu'il faut garder en tête. | C'est bien la seule chose de basique, parce que ça se corse très vite. Mais c'est la logique de base qu'il faut garder en tête. | ||
| - | Donc, il y a généralement un backend LDAP qui stocke les informations, | + | Concernant l' |
| + | |||
| + | <WRAP center round tip 100%> | ||
| + | Techniquement, | ||
| + | |||
| + | Mais il se trouve aussi que les frontend permettent de gérer d' | ||
| + | </ | ||
| + | |||
| + | <WRAP center round info 100%> | ||
| + | Attention : LDAP est avant tout un service d' | ||
| + | |||
| + | J'ai passé un temps fou à comprendre ce que ça impliquait... | ||
| + | |||
| + | Il ne gère pas les cookies, le temps qu'on peut rester connecté, et si on se logue à un endroit cela ne se répercute pas sur tous les CMS. | ||
| + | |||
| + | Chaque CMS va demander à l' | ||
| + | * Telle personne essaye de se connecter, est-ce qu' | ||
| + | * Quelles sont les groupes dont elle fait partie ? Suivant ces infos le CMS gère de son côté les droits d' | ||
| + | |||
| + | Il s'agit uniquement de consulter les informations, | ||
| + | |||
| + | D' | ||
| + | |||
| + | Ces protocoles et LDAP sont indépendants (chacun peut fonctionner seul) mais peuvent aussi être combinés. C'est une architecture plus complexe, mais qui permet aussi plus de possibilité, | ||
| + | |||
| + | Pourquoi utiliser LDAP et pas uniquement par un de ces protocoles ? Parce que LDAP est une brique vraiment très basique, bien intégrée " | ||
| + | |||
| + | </ | ||
| ===== Comprendre un annuaire LDAP ===== | ===== Comprendre un annuaire LDAP ===== | ||
| Ligne 24: | Ligne 51: | ||
| Voici une représentation : | Voici une représentation : | ||
| - | <code exemple> | + | < |
| dc=example, | dc=example, | ||
| | | ||
| Ligne 35: | Ligne 62: | ||
| </ | </ | ||
| + | Cet arbre se lit de la façon suivante : " | ||
| ==== Attributs ==== | ==== Attributs ==== | ||
| - | Chaque donnée dans l' | + | Chaque donnée dans l' |
| - | Ce qui suit **n' | + | Les attributs sont les caractères avant le signe '' |
| + | attribut=objet | ||
| + | |||
| + | Il y a énormément d' | ||
| Organisation et groupes | Organisation et groupes | ||
| Ligne 50: | Ligne 81: | ||
| Identification des personnes : | Identification des personnes : | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| * '' | * '' | ||
| Ligne 67: | Ligne 98: | ||
| Autre | Autre | ||
| * '' | * '' | ||
| + | * '' | ||
| + | |||
| + | <WRAP center round info 100%> | ||
| + | **'' | ||
| + | |||
| + | '' | ||
| + | |||
| + | '' | ||
| + | |||
| + | Ceci reste des conventions mais va simplifier la gestion de l' | ||
| + | </ | ||
| ==== Classes d' | ==== Classes d' | ||
| Ligne 85: | Ligne 127: | ||
| * Obligatoires : '' | * Obligatoires : '' | ||
| + | ==== Peupler son annuaire ==== | ||
| + | |||
| + | Ici, c'est un peu spécial. Et surtout LE point où juste copier ne peut pas suffire. | ||
| + | |||
| + | Il est très important de définir une hiérarchie propre à son organisation. Dans notre cas, l' | ||
| + | |||
| + | <WRAP center round help 100%> | ||
| + | Je n'ai pas encore tranché sur deux cas : | ||
| + | * Les non-humains, | ||
| + | * l' | ||
| + | |||
| + | En attendant, je vais avoir un arbre intitulé '' | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo 60%> | ||
| + | C'est vraiment la partie la plus compliquée : faire un schéma et trouver les bons attributs à chaque morceau. | ||
| + | </ | ||
| ===== Logiciels pour gérer LDAP ===== | ===== Logiciels pour gérer LDAP ===== | ||
| Ligne 124: | Ligne 183: | ||
| ==== OpenLDAP ==== | ==== OpenLDAP ==== | ||
| - | C'est LE backend de référence. Ça fait le café, d' | + | Cette partie de l'article devenait un peu obèse, donc je renvoie vers un article dédié : [[fr: |
| - | sudo apt install slapd ldap-utils | + | |
| - | La configuration par défaut s' | + | OpenLDAP est LE backend de référence. Ça fait le café, d' |
| - | sudo slapcat | grep dn: | ||
| - | Le résultat devrait être "dn: dc=example, | ||
| - | On peut admirer la base de son annuaire avec la commande suivante '' | ||
| - | |||
| - | Dans mon cas, avec l' | ||
| - | < | ||
| - | dn: dc=ldap, | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | objectClass: | ||
| - | o: ldap.local | ||
| - | dc: ldap | ||
| - | </ | ||
| - | |||
| - | Concernant la structure et la configuration d' | ||
| - | |||
| - | Un petit coup de '' | ||
| - | < | ||
| - | └── slapd.d | ||
| - | ├── cn=config | ||
| - | │ ├── cn=module{0}.ldif | ||
| - | │ ├── cn=schema | ||
| - | │ │ ├── cn={0}core.ldif | ||
| - | │ │ ├── cn={1}cosine.ldif | ||
| - | │ │ ├── cn={2}nis.ldif | ||
| - | │ │ └── cn={3}inetorgperson.ldif | ||
| - | │ ├── cn=schema.ldif | ||
| - | │ ├── olcDatabase={0}config.ldif | ||
| - | │ ├── olcDatabase={-1}frontend.ldif | ||
| - | │ └── olcDatabase={1}mdb.ldif | ||
| - | └── cn=config.ldif | ||
| - | |||
| - | </ | ||
| - | |||
| - | Ce qui est dans le dossier '' | ||
| - | |||
| - | Dans la suite du document, nous allons donc écrire nos documents " | ||
| - | |||
| - | <WRAP center round tip 60%> | ||
| - | En fait, LDAP étant un vieux dinosaure utilisé très largement, l' | ||
| - | |||
| - | Cela semble anodin lors des tests, mais un gros annuaire peut mettre beaucoup de temps à redémarrer... Alors autant prendre l' | ||
| - | </ | ||
| - | === Avoir des logs plus bavards === | ||
| - | |||
| - | Pour avoir des logs plus complets, il va falloir l' | ||
| - | # ldapsearch -Y external -H ldapi:/// -b cn=config " | ||
| - | Ce fichier " | ||
| - | * '' | ||
| - | * '' | ||
| - | * -1 : enable all debugging | ||
| - | * 0 : no debugging | ||
| - | * 1 : trace function calls | ||
| - | * 2 : debug packet handling | ||
| - | * 4 : heavy trace debugging | ||
| - | * 8 : connection management | ||
| - | * 16 : print out packets sent and received | ||
| - | * 32 : search filter processing | ||
| - | * 64 : configuration file processing | ||
| - | * 128 : access control list processing | ||
| - | * 256 : stats log connections/ | ||
| - | * 512 : stats log entries sent | ||
| - | * 1024 : print communication with shell backends | ||
| - | * 2048 : print entry parsing debugging | ||
| - | |||
| - | On va faire ceci : | ||
| - | |||
| - | <code txt log.ldif> | ||
| - | dn: cn=config | ||
| - | changetype: modify | ||
| - | replace: olcLogLevel | ||
| - | olcLogLevel: | ||
| - | </ | ||
| - | |||
| - | On injecte avec la commande suivante : | ||
| - | |||
| - | # ldapmodify -Y EXTERNAL -H ldapi:/// -f log.ldif | ||
| - | |||
| - | On peut vérifier le résultat avec ça : | ||
| - | |||
| - | # ldapsearch -Y external -H ldapi:/// -b cn=config " | ||
| - | |||
| - | Ou simplement en faisant une requête avec slapd (par exemple '' | ||
| - | <WRAP center round info 100%> | ||
| - | J'ai des trucs dans ''/ | ||
| - | |||
| - | On retrouve les logs propres à slapd *aussi* dans journalctl : | ||
| - | journalctl -eu slapd.service | ||
| - | </ | ||
| - | |||
| - | === Peupler son annuaire === | ||
| - | |||
| - | |||
| - | <WRAP center round todo 60%> | ||
| - | Todo : Créer l' | ||
| - | </ | ||
| - | === Plus de doc === | ||
| - | Voir https:// | ||
| ===== Outils complémentaires ===== | ===== Outils complémentaires ===== | ||





