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
  • Importation

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

    • Introduction
    • Librairie d'aide Python
    • Backend AD
      • Modifications necessaires sur windows serveur (>=Windows 2019)
        • Activer ssh :
        • Changement de l'encodage par defaut en UTF-8
      • Installation
      • Activation et paramètrage
      • Architecture du Backend après l'installation
        • Fichier de configuration (etc/config.conf)
        • Les templates powershell
    • Backend LDAP
  • 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

    • Personalisation des tuiles de la page d 'accueil'

Backend AD

Ce backup sert à synchroniser les identitées avec Active Directory sur windows server >= 2019

Modifications necessaires sur windows serveur (>=Windows 2019)

Activer ssh :

  • verification de la fonctionnalité
PS >Get-WindowsCapability -Online -Name Open* 


Name         : OpenSSH.Client~~~~0.0.1.0
State        : Installed
DisplayName  : Client OpenSSH
Description  : Client SSH (Secure Shell) basé sur OpenSSH, pour la gestion de clés sécurisée et l’accès aux
               ordinateurs distants.
DownloadSize : 1323493
InstallSize  : 5301402

Name         : OpenSSH.Server~~~~0.0.1.0
State        : NotPresent
DisplayName  : Serveur OpenSSH
Description  : Serveur SSH (Secure Shell) basé sur OpenSSH, pour la gestion de clés sécurisée et l’accès à partir
               d'ordinateurs distants.
DownloadSize : 1297677
InstallSize  : 4946932
  • Activation :
PS> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


Path          :
Online        : True
RestartNeeded : False
  • verification :
PS> Get-Service sshd

Status   Name               DisplayName
------   ----               -----------
Stopped  sshd               OpenSSH SSH Server

PS>  Get-Service ssh-agent

Status   Name               DisplayName
------   ----               -----------
Stopped  ssh-agent          OpenSSH Authentication Agent

  • demarrage des services
PS > Start-Service sshd
PS>  Start-Service ssh-agent
  • vérification des services
Get-Service sshd

Status   Name               DisplayName
------   ----               -----------
Running  sshd               OpenSSH SSH Server


PS C:\Users\Administrateur> Get-Service ssh-agent

Status   Name               DisplayName
------   ----               -----------
Running  ssh-agent          OpenSSH Authentication Agent
  • activation au démarrage
PS >Set-Service -Name ssh-agent -StartupType Automatic
PS >Set-Service -Name sshd -StartupType Automatic

Changement de l'encodage par defaut en UTF-8

Si vous voulez les accents dans les noms des utilisateurs vous devez changer l'encodage par défaut

Panneau de configuration 
   > Horloge et région
      > Région
         > Administration
            > Modifier les paramètres régionaux 
               Cochez :  Beta: Utilisez le format Unicode UTF-8 pour une prise en charge ....

Poue plus d'information consultez la base de connaissance Microsoft : [https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement]

Installation

Pour l'instant juste le paquet debian est disponible

téléchargez le packet debian à l'adresse : https://github.com/Libertech-FR/sesame-backend-ad/releases/

dpkg -i sesame-backend-ad_x.x.x_amd64.deb

Les erreurs sont normales car il y a des dependences supplémentaires à installer :

apt-get install -f

Activation et paramètrage

allez dans le répertoire /var/lib/sesame-daemon/backend-modules/ad

et lancez le script d'activation (install.sh

cd  /var/lib/sesame-daemon/backend-modules/ad
./install.sh

Le script va vous demander un certains nombre de renseignement pour pouvoir configurer le backend

  • Numero de demarrage du module (2 positions) : Position d'execution du Backend dans le repertoire /var/lib/sesame-backend/backends. Mettre un chiffre sur 2 positions.
  • Adresse du serveur AD primaire : Entrez le FDQN ou l'adresse IP du serveur de domaine (assurez vous avant que le serveur où est installé le daemon peut accéder au poer 22 (ssh)
  • Utilisateur (doit avoir les droits d'administration) : Utilateur ayant les droits d'administration du serveur
  • Mot de passe : Mot de passe de cet utilisateur (le mot de passe ne sera pas enregistré sur le serveur mais est utilisé pour copier la clé publique qui sera générée par le script
  • Base ldap AD : Base LDAP de votre domaine (vous pouvez l'avoir en vous connectant sur le serveur windows (Utilisateurs et ordinateurs Active Directory -> bouton droit sur le domaine et editeur d'attributs, cherchez "DistinguishedName")
  • Domaine pour UserPrincipalName : Le nom de domaine sou la forme DOMAIN.XX (vous pouvez le voir dans l'onglet compte d'un utilisateur.

Une fois les renseignements donnés le script va générer une paire de clés ed25519 et va recopier la clé publique sur le serveur AD

Architecture du Backend après l'installation

Le script d'installation aura mis dans dans /var/lib/sesame-daemon/XXad les repertoires, fichiers necessaires

XXad - etc - config.conf
     - bin - changepwd.py
           - ping.py
           - resetpwd.py
           - upsertidentity.py
     - lib - ad_utils.py
           - backends_utils.py
     - ps1_templates - changepassword.template
     					 - ping.template
     					 - resetpassword.template
     					 - upsertidentity.template
     config.yml

Fichier de configuration (etc/config.conf)

# Paramètres générés par  install.sh
host=ad.mydomain.com
user=administrator
base=dc=mydomain,dc=com
domain=libertest.fr
# Paramètres que vous devez renseigner manuellement
branchForEtd=ou=Etudiants
branchForAdm=ou=Administratifs
branchForEsn=ou=Enseignants
branchAttr=supannTypeEntiteAffectation
backendFor=adm,etd,esn
debug=0

Paramètres renseignés par install.sh

  • host = adresse du serveur AD primaire
  • user = Utilisateur ayant les droits d'administration
  • base = Base LDAP du domaine (DistinguishedName)
  • domain = domaine sous la forme doamin.xx

Paramètres facultatifs

  • branchForEtd = branche relative pour la population etd
  • branchForAdm = branche relative pour la population adm
  • branchForEsn = branche relative pour la population esn
  • branchAttr = Attribut qui sert à determiner le type de population
  • backendFor = Le backend fera l'action pour les populations listées
  • debug = 0|1 si 1 le backend generera le script, lo copiera sur le host mais ne l executera pas

A noter : vous pouvez ajouter une variable branchFor + "type de population "

exemple branchForChercheurs= ...

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

Le dn généré se retrouvera disponible dans la variable dn pour le template

Paramètres personalisés

monparametre = mavaleur

Ces paramètres seront accessibles dans les templates sous la forme

{{ config.monparametre }} 

Les templates powershell

Le principe de fonctionnenemt est le suivant :

  • Le script python genére un script powershell par rapport au modèle (templates).
  • Le script copie via ssh le script généré sur le serveur windows.
  • Le script powershell est exécuté.

Les templates sont généré avec la librairie jinja2

Vous trouverez la documentation Jinja à https://jinja.palletsprojects.com/en/3.1.x/templates/

Les variables disponibles pour le template sont :

  • e L'identité sous forme e.attribut exemple : e.cn, e.supannTypeEntiteAffectation
  • domain la variable domain du fichier de configuration
  • base Base LDAP du domaine present dans le fichier de configuration
  • dn Le DN calculé de l'identité
  • path le DN superieur de l'identité
  • config les variables du fichier de configuration (etc/config.conf)

Exemple de template (upsertidentity.template)

try{
    $tab=Get-ADUser -Filter 'employeeNumber -eq "{{ e.employeeNumber }}" -and employeeType -eq "{{ e.employeeType }}"' -Properties "DistinguishedName"
	if ($tab["DistinguishedName"] -ne "{{ dn }}"){
	    try{
	        $dn=$tab["DistinguishedName"]
            move-adObject "$dn" -targetpath "{{ path }}"
	    }catch{
	        Write-Host $_
            exit 1
	    }
	}
	$UserExists = $true
}
catch{
    $UserExists = $false
} 
if ($UserExists -eq $false){
    $np = @{
       Path="{{ path }}"
       EmployeeNumber="{{ e.employeeNumber }}"
       Name="{{ e.cn }}"
       DisplayName="{{ e.displayName }}"
       GivenName="{{ e.givenName }}"
       Surname="{{ e.sn }}"
       SamAccountName="{{ e.uid }}"
       EmailAddress="{{ e.mail }}"
       UserPrincipalName = "{{ e.uid }}" + '@' + "{{ domain }}"
       Enabled=$false
       CannotChangePassword=$true
       ChangePasswordAtLogon = $false
    }
    try{
        new-adUser @np -OtherAttributes @{ 'EmployeeType' = '{{ e.employeeType }}' }
        Write-Host "Identity created"
    }catch{
        Write-Host $_
        exit 1
    }
}else{
    try{
        $dn=$tab["DistinguishedName"]
        $UserPrincipalName = "{{ e.uid }}" + '@' + "{{ domain }}"
        set-adUser -Identity "$dn" -SamAccountName "{{ e.uid }}" -DisplayName "{{e.displayName}}" -GivenName "{{ e.givenName }}" -EmailAddress "{{ e.mail }}" -UserPrincipalName "$UserPrincipalName"
        Write-Host "Identity modified"
    }catch{
        Write-Host $_
        exit 1
    }
}
exit 0

Le powershell doit donner un code de retour (exit)

  • 0 tout est ok
  • 1 Erreur

L'erreur ou le message doit être écrite sur la sortie standard (Write-Host)

deboggage

la variable debug du fichier de configuration, si elle est positionnée à 1, permet de générer le script, de le copier sur le serveur, mais il ne sera pas executé

Last Updated:
Contributors: Alain Abbas
Prev
Librairie d'aide Python
Next
Backend LDAP