# Backend de configuration LDAP

## Présentation

On peut choisir de stocker la configuration de LemonLDAP::NG dans un annuaire LDAP.

Avantages :

- Facilité de partage entre serveurs avec un accès LDAP distant
- Facilité de duplication avec les services de synchronisation LDAP (tel SyncRepl de OpenLDAP)
- Securité avec SSL/TLS
- Contrôle d'accès possible en créant un compte pour le manager (écriture) et un autre pour le portail et les agents (lecture)
- Import/export facilité via les fichiers LDIF

La configuration est stockée dans une branche spécifique, par exemple `ou=conf,ou=applications,dc=example,dc=com`.

Chaque configuration est représentée par une entrée, dont l'objectClass structurel est `applicationProcess`. Le nom de la configuration est le même que pour File : lmConf-1, lmConf-2, etc... Ce nom est utilisé dans l'entrée DN, par exemple `cn=lmConf-1,ou=conf,ou=applications,dc=example,dc=com`.

Ensuite, chaque paramètre est une valeur de l'attribut `description`, prefixé par sa clef. Par exemple `{ldapPort}389`.

La vue LDIF d'une telle entrée ressemble à :

    dn: cn=lmConf-1,ou=conf,ou=applications,dc=example,dc=com
    objectClass: top
    objectClass: applicationProcess
    cn: lmConf-1
    description: {globalStorage}'Apache::Session::File'
    description: {cookieName}'lemonldap'
    description: {whatToTrace}'$uid'
    ...

## Configuration

### Serveur LDAP

Les objets de configuration utilisent une classe d'objet standard : `applicationProcess`. Cet classe d'objet autorise les attributs `cn` et `description`. Si le serveur LDAP ne gère pas cette classe d'objet, il faut étendre le schéma.

Il est recommandé de créer un compte LDAP spécifique qui peut écrire dans la branche de configuration.

Créer ensuite la branche des configurations n'importe où. Il faut juste retenir le DN pour la configuration de LemonLDAP::NG.

### LemonLDAP::NG

Configurer la backend de configuration LDAP dans `lemonldap-ng.ini`, section `[configuration]` :

    type = LDAP
    ldapServer = ldap://localhost
    ldapConfBase = ou=conf,ou=applications,dc=example,dc=com
    ldapBindDN = cn=manager,dc=example,dc=com
    ldapBindPassword = secret
    ldapObjectClass = applicationProcess
    ldapAttributeId = cn
    ldapAttributeContent = description

Paramètres:

- ldapServer: URI LDAP du serveur
- ldapConfBase : DN de la branche des configurations
- ldapBindDN : DN utilisé pour se connecter au serveur LDAP
- ldapBindPassword : mot-de-passe à utiliser pour se connecter au serveur LDAP
- ldapObjectClass : objectclass structurel de l'entrée de configuration entry (optionnel)
- ldapAttributeId : attribut RDN de l'entrée de configuration (optionnel)
- ldapAttributeContent : attribut utilisé pour stocker la valeur des configurations, doit être multivalué (optionnel)