Utiliser OpenLDAP comme annuaire des identités
Sur cette page
TOSIAM peut prendre ses utilisateurs dans un annuaire OpenLDAP, avec un magasin d’identités de type LDAPv3 générique. Les valeurs par défaut de ce type de magasin ne sont pas adaptées à OpenLDAP : cette page donne les réglages à faire, côté TOSIAM et côté annuaire, et ce qu’ils apportent.
| Réglage | Sans lui | À partir de |
|---|---|---|
| Cache des DN | 18 opérations LDAP par connexion au lieu de 8 | toutes versions |
| Attributs de verrouillage | pas de verrouillage de compte enregistré dans l’annuaire | toutes versions |
| Notifications | une modification faite dans l’annuaire n’est vue qu’à l’expiration du cache, 15 minutes par défaut | 3.38.0 |
Les deux premiers réglages ne dépendent pas de la version : ils s’appliquent tels quels à une installation existante.
1. Activer le cache des DN#
Pour chaque opération sur un utilisateur, TOSIAM a besoin de son DN. Le magasin LDAPv3 générique le retrouve par une recherche sur l’identifiant, et son cache des DN est désactivé par défaut : la recherche est refaite à chaque opération.
Mesure sur une ferme de deux serveurs TOSIAM et deux serveurs OpenLDAP, un million d’utilisateurs, connexion par identifiant et mot de passe suivie d’un flux OAuth 2.0 :
| Cache des DN | Recherches par identifiant | Lectures directes | BIND | Opérations LDAP par connexion |
|---|---|---|---|---|
| Désactivé (défaut) | 12,0 | 5,0 | 1,0 | 18,0 |
| Activé | 2,0 | 5,0 | 1,0 | 8,0 |
Les temps de réponse de TOSIAM sont les mêmes dans les deux cas ; c’est la charge de l’annuaire qui est divisée par deux.
ssoadm update-datastore --realm /employees --name users \
--adminid amadmin --password-file /chemin/vers/pwd.txt \
--attributevalues \
"sun-idrepo-ldapv3-dncache-enabled=true" \
"sun-idrepo-ldapv3-dncache-size=100000"sun-idrepo-ldapv3-dncache-size est le nombre de DN gardés en mémoire par serveur, 1 500 par défaut. Dimensionnez-le sur le nombre d’utilisateurs actifs sur la durée d’une session. La modification est prise en compte à chaud.
2. Déclarer les attributs de verrouillage#
Le verrouillage de compte enregistre le compteur d’échecs et le statut du compte dans l’entrée de l’utilisateur. Le magasin LDAPv3 générique ne déclare pas ces attributs, et OpenLDAP ne les connaît pas.
Dans OpenLDAP : le schéma#
Le schéma utilisateur de TOSIAM est livré pour TosDJ dans lib/tst-ldif.jar de la distribution TosDJ. Ses définitions sont acceptées telles quelles par OpenLDAP, sous la forme attendue par cn=config :
{
echo "dn: cn=tosiam,cn=schema,cn=config"
echo "objectClass: olcSchemaConfig"
echo "cn: tosiam"
unzip -p tst-ldif.jar ldif/opendj/opendj_user_schema.ldif \
| sed -n -e 's/^attributeTypes: /olcAttributeTypes: /p' \
-e 's/^objectClasses: /olcObjectClasses: /p'
} > tosiam-schema.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f tosiam-schema.ldifLes utilisateurs doivent ensuite porter les classes auxiliaires inetuser (statut du compte) et sunAMAuthAccountLockout (compteur d’échecs), et le compte de service de TOSIAM doit pouvoir écrire ces attributs.
Dans TOSIAM : les attributs du magasin#
Ajoutez aux attributs et aux classes d’objets du magasin :
| Propriété du magasin | Valeurs à ajouter |
|---|---|
sun-idrepo-ldapv3-config-user-attributes | sunAMAuthInvalidAttemptsData, iplanet-am-user-login-status |
sun-idrepo-ldapv3-config-user-objectclass | inetUser, sunAMAuthAccountLockout, iplanet-am-user-service |
3. Recevoir les notifications de l’annuaire#
Chaque serveur TOSIAM garde les identités en cache. Avec TosDJ, l’annuaire le prévient de chaque changement par une recherche persistante. OpenLDAP ne propose pas ce mécanisme : il notifie par la synchronisation de contenu de la RFC 4533 (syncrepl), celle qu’il utilise pour sa propre réplication. TOSIAM la prend en charge à partir de la version 3.38.0.
Sans notification, TOSIAM applique le fonctionnement décrit dans Annuaires sans notification : le verrouillage et le statut du compte restent fiables, mais les groupes et les attributs de profil peuvent avoir jusqu’à 15 minutes de retard.
Dans OpenLDAP : l’overlay syncprov#
L’overlay syncprov doit être chargé sur la base des identités de chaque serveur OpenLDAP auquel TOSIAM se connecte. Un serveur qui sert de fournisseur de réplication l’a déjà.
dn: cn=module{1},cn=config
objectClass: olcModuleList
cn: module{1}
olcModulePath: /usr/lib/ldap
olcModuleLoad: syncprov
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 1000Le numéro du module, le chemin et le numéro de la base dépendent de votre installation. Le compte de service de TOSIAM doit pouvoir lire les entrées, ainsi que l’attribut contextCSN de l’entrée du suffixe. Pour vérifier que l’annuaire annonce la synchronisation :
ldapsearch -x -H ldap://annuaire.example.fr -b "" -s base supportedControl \
| grep 1.3.6.1.4.1.4203.1.9.1.1Dans TOSIAM : la base de notification#
Renseignez le DN de base de la recherche persistante du magasin. C’est la même propriété que pour TosDJ : TOSIAM choisit le mécanisme selon ce que l’annuaire annonce.
ssoadm update-datastore --realm /employees --name users \
--adminid amadmin --password-file /chemin/vers/pwd.txt \
--attributevalues "sun-idrepo-ldapv3-config-psearchbase=dc=example,dc=fr"Vérifier#
- Le journal
IdRepo.logdu répertoiredebugde l’instance ne contient plus le messageNo change notification for the data store…pour ce magasin. - Chaque serveur TOSIAM garde une recherche ouverte sur l’annuaire, sur la base de notification.
- Une modification faite directement dans l’annuaire est lue aussitôt par l’API REST de chaque serveur TOSIAM.
Ce que cela change#
| Sans notification | Avec notification | |
|---|---|---|
| Verrouillage de compte entre serveurs | fiable | fiable |
| Compte désactivé dans l’annuaire | refusé aussitôt | refusé aussitôt |
| Attribut ou groupe modifié dans l’annuaire | vu à l’expiration du cache | vu aussitôt |
| Utilisateur supprimé dans l’annuaire | vu à l’expiration du cache | vu aussitôt |
| Opérations LDAP par connexion | 8,0 | 8,0 |
Les notifications n’allègent pas la charge de l’annuaire : elles apportent la fraîcheur des données.
À chaque connexion ou reconnexion à l’annuaire, TOSIAM vide son cache puis reprend l’écoute à partir de l’état courant de l’annuaire. L’arrêt d’un serveur OpenLDAP ne fait donc perdre aucun changement : TOSIAM se reconnecte à un autre serveur et relit les identités à la demande.
Limites#
Ce qui a été validé : OpenLDAP 2.6, deux serveurs en réplication multi-maîtres, un million d’utilisateurs, deux serveurs TOSIAM. N’ont pas été testés : OpenLDAP 2.4 et 2.5, et un répartiteur de charge placé entre TOSIAM et les annuaires, qui doit laisser ouverte une connexion longue.
Pour aller plus loin#
- Annuaires sans notification : expiration du cache, attributs toujours relus et propriétés de réglage.
- Modèle d’identité : types d’identité et magasins d’identités.
- LDAP : le protocole, la recherche et les magasins d’identités de TOSIAM.
Mis à jour le