Sesame
  • Introduction
  • Installation

    • Installation rapide
    • Installation sesame-daemon
    • Installation import Taiga
    • Installation du frontal de gestion du mot de passe
    • Architecture de sécurité
  • Configuration

    • Architecture
    • Principe
    • Validation et description des données
    • Formulaire
    • Configuration de la politique de mot de passe
    • Templates de mails
    • Personalisation des tuiles de la page d'accueil
    • Cycle de vie
    • Cron
  • Importation

    • Import des données
    • Configuration de l'import
    • Import depuis taiga
  • Backends

    • Introduction
    • Librairie d'aide Python
    • Backend AD
    • Backend LDAP
      • Configuration du backend LDAP
        • config.conf :
        • Les paramètres positionnés par le script install.sh
        • Les parammètres supplémentaires
      • Gestion du cycle de vie
      • Entrée envoyée au backend
      • Nom des templates pour le cycle de vie
        • Squelette de script python pour le cycle de vie
  • Utilisation de l'API

    • Les filtres de recherches pour l'API
    • récupération de la photo d'une identité
    • Exemples d'utilisation de l'API Sesame
  • Personalisation de l'UI

    • /Ui/personalisation_tuiles.html
  • Pages UI

    • Accueil
    • Connexion
    • Sentry (exemple)
    • Paramètres
    • Health
    • Keyrings
    • Cron
    • SMTP
    • Envoi de mails (templates)
    • SMS
    • Politique mots de passe
    • Rôles
    • Agents
    • /pages/identities.html
    • Table des identités
    • Corbeille
    • Identités obsolètes
    • Export
    • Fusion
    • Table des cycles de vie
    • Table jobs
    • Détails job
    • Table audits
  • Upgrades

    • Migration Sesame : Alpha → v2

Backend LDAP

télechargez le paquet debian (.deb) avec ce lien

https://github.com/Libertech-FR/sesame-backend-ldap/releases

# dpkg -i sesame-backend-openldap_0.0.3_amd64.deb 
Sélection du paquet sesame-backend-openldap précédemment désélectionné.
(Lecture de la base de données... 37052 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de sesame-backend-openldap_0.0.3_amd64.deb ...
Dépaquetage de sesame-backend-openldap (0.0.3) ...
dpkg: des problèmes de dépendances empêchent la configuration de sesame-backend-openldap :
 sesame-backend-openldap dépend de libnet-ldap-perl; cependant :
  Le paquet libnet-ldap-perl n'est pas installé.
 sesame-backend-openldap dépend de libjson-perl; cependant :
  Le paquet libjson-perl n'est pas installé.

dpkg: erreur de traitement du paquet sesame-backend-openldap (--install) :
 problèmes de dépendances - laissé non configuré
Des erreurs ont été rencontrées pendant l'exécution :
 sesame-backend-openldap

Ces erreurs sont normales car dpkg n'installe pas les dépendance tout seul.

Installez les dépendances :

#apt-get -f install

Configuration du backend LDAP

Une fois l'installation du paquets vous devez activer le backend.

Vous pouvez activer plusieurs fois le backendn si par exemple vous avez 2 serveurs Ldap differents pour les populations.

Allez dans /var/lib/sesame-daemon/backends-modules/openldap

Lancer ./install.sh

Deploiment du module LDAP
La position determinera l'ordre d'execution des backends (comme dans init.d)
Numero de demarrage du module (2 positions):02
installation dans backends/02openldap
Copie des fichiers dans ../../backends/02openldap
Le backend a été installé dans ../../backends/02openldap
Configuration
Url du serveur ldap (ldap[s]://FDQN:PORT : ldaps://myldap.mydomain.com
Dn d'authentification (doit avoir les droits d'ecriture) : cn=manager,cn=internal,dc=mydomain,dc=com
Mot de passe : MonPassword!
Base ldap : dc=mydomain,dc=com
Branche pour les utilisateurs ex: ou=peoples : ou=peoples
Attribut pour le Rdn : uid
Génération du fichier de configuration
Vous pouvez completer le fichier de configuration avec les parametres optionnels (voir README.md)
Merci 

Le script va génerer l'architecture dans backends et creer le fichier de configuration

config.conf :

#paramètres positionnés par l'installation
host=myldap.mydomain.com
dn=cn=manager,cn=internal,dc=mydomain,dc=com
password=MyPassword
base=dc=mydomain,dc=com
userbase=ou=peoples,dc=mydomain,dc=com
rdnattribute=uid
# Parametres facultatifs 
excludedObjectclasses=objeclass1,objectclass2
branchForEtd=ou=Etudiants
branchForAdm=ou=Administratifs
branchForEsn=ou=Enseignants
branchAttr=supannTypeEntiteAffectation
backendFor=adm,etd,esn
disabledAttribute=sogxdisableflag
disableValue=1
enableValue=0
additionnalObjectClass=sogxUser

Les paramètres positionnés par le script install.sh

  • host : addresse de votre serveur ldap sous la forme simple ou en URL (ldap://monserveur:389 ou ldaps://monserveur:636)
  • dn : le dn de connexion (il doit avoir les droits d'écriture sur les branches )
  • password : mot de passe du DN ci dessus
  • base : votre base LDAP
  • userbase : la branche dans laquelle seront créés les comptes

Les parammètres supplémentaires

  • rdnattribute : l'attribut qui servira à la composition du DN
  • branchForEtd : la sous branche (dans userbase) pour les étudiants. Si ce paramètre est vide les identitées seront créées directememt dans userbase
  • branchForAdm : idem pour les administratifs
  • branchForEsn : idem pour les enseignants
  • branchAttr : l'attribut qui sert à determiner dans quelle branche l'identité est crée.
  • backendFor : liste des types d'identités gérée par le backend ex : adm,esn,etd
  • excludedObjectclasses : listes de objectclasses qui ne seront pas écrits dans le serveur LDAP
  • disabledAttribute : Attribut utilisé pour desactiver le compte
  • disableValue : La valeur de disabledAttribute pour desactiver le compte
  • enableValue : la valeur de disabledAttribute quand le compte est actif
  • additionnalObjectClass : l'objectclass pour disabledAttribute

Composition du DN

Vous pouvez composer le DN avec un template dans la variable dnTemplate

dnTemplate=cn={{ e.cn }},{{branch}},{{config.base}}

vous disposez comme dans les templates des variable

  • e contient les champs de l'identité
  • config contient la configuration
  • branch contient la branche contenue dans la variable branchForXXX
  • rdnValue contient la valeur du rdn

Gestion du cycle de vie

Dans le fichier config.yml une nouvelle clé est gérée :

...
  IDENTITY_LIFECYCLE_CHANGED:
    script: 'lifecycle.py'
    onError: 'stop'

A noter : sesame-daemon doit être à la version >= 1.0.14

Entrée envoyée au backend

L'entrée envoyée au backend pour la generation des scripts est un peu differente que pour les autres actions


  "concernedTo": "6852cd3980ae416061df5dae",
  "payload": {
    "before": {
      "_id": "6852cd3980ae416061df5dae",
      "inetOrgPerson": {
        "cn": "Dupont Gerald",
        "displayName": "Gérald Dupont",
        "facsimileTelephoneNumber": "",
...
  "after": {
  "_id": "6852cd3980ae416061df5dae",
  "inetOrgPerson": {
  "cn": "Dupont Gerald",
  "displayName": "Gérald Dupont",
  "facsimileTelephoneNumber": "",

  • Une clé before représente l'identité avant modification par le cycle de vie
  • Une clé after représente l'identité après modification par le cycle de vie

Nom des templates pour le cycle de vie

Par défaut l'installation ne donne qu'un script dummy pour le cycle de vie, c'est à vous de les créer selon vos besoins

Processus : Le backend cherche un script dans le répertoire lifecyle nommé 'X'_'Y' ou X_Y.py X etant la valeur de lifecyle précédant la modification

Exemple : si le cycle de vie passe de A à I le backend regardera si un template du nom de A_I ou A_I.py existe

Si il n y a pas de script pour cette transition le backend va prendre le script lifecycle.py.

Si aucun des templates existe le backend ne fait rien.

Squelette de script python pour le cycle de vie

#!/usr/bin/python3
#Exemple de script lifecycle
import sys
# Import librairie
sys.path.append('../lib')
import backend_utils as u
import backend_ldap as ldap



def main():
    # lecture json sur l'entree standart
    content=u.readjsoninput()
    #retour de l'execution au daemon
    return print(u.returncode(0,'lifecycle.py'))

if __name__ == '__main__':
    main()
Last Updated:
Contributors: Alain Abbas
Prev
Backend AD