Skip to content

Commit 14527c0

Browse files
committed
documentation backend
1 parent 3559f0b commit 14527c0

File tree

6 files changed

+514
-24
lines changed

6 files changed

+514
-24
lines changed

docs/.DS_Store

0 Bytes
Binary file not shown.

docs/.vuepress/config.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,17 @@ theme: defaultTheme({
4646
'configyml',
4747
'importtaiga'
4848
]
49+
},
50+
{
51+
text: 'Backends',
52+
prefix: '/backends',
53+
children: [
54+
'backends',
55+
'backend_AD',
56+
'backend_LDAP'
57+
]
4958
}
59+
5060
],
5161
},
5262
}),

docs/backends/backend_AD.md

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
# Backend AD
2+
Ce backup sert à synchroniser les identitées avec Active Directory sur windows server >= 2019
3+
4+
## Installation
5+
6+
Pour l'instant juste le paquet debian est disponible
7+
8+
9+
téléchargez le packet debian à l'adresse : [https://github.com/Libertech-FR/sesame-backend-ad/releases/](https://github.com/Libertech-FR/sesame-backend-ad/releases/)
10+
11+
```
12+
dpkg -i sesame-backend-ad_x.x.x_amd64.deb
13+
```
14+
Les erreurs sont normales car il y a des dependences supplémentaires à installer :
15+
16+
```
17+
apt-get install -f
18+
```
19+
20+
## Activation et paramètrage
21+
22+
allez dans le répertoire /var/lib/backend-modules/ad
23+
24+
et lancez le script d'activation (install.sh
25+
26+
```
27+
cd /var/lib/backend-modules/ad
28+
./install.sh
29+
```
30+
Le script va vous demander un certains nombre de renseignement pour pouvoir configurer le backend
31+
32+
* **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.
33+
* **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)
34+
* **Utilisateur (doit avoir les droits d'administration) :** Utilateur ayant les droits d'administration du serveur
35+
* **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
36+
* **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")
37+
* **Domaine pour UserPrincipalName :** Le nom de domaine sou la forme DOMAIN.XX (vous pouvez le voir dans l'onglet compte d'un utilisateur.
38+
39+
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
40+
41+
42+
## Architecture du Backend après l'installation
43+
Le script d'installation aura mis dans dans **/var/lib/sesame-daemon/XXad** les repertoires, fichiers necessaires
44+
45+
```
46+
XXad - etc - config.conf
47+
- bin - changepwd.py
48+
- ping.py
49+
- resetpwd.py
50+
- upsertidentity.py
51+
- lib - ad_utils.py
52+
- backends_utils.py
53+
- ps1_templates - changepassword.template
54+
- ping.template
55+
- resetpassword.template
56+
- upsertidentity.template
57+
config.yml
58+
```
59+
### Fichier de configuration (etc/config.conf)
60+
61+
```
62+
# Paramètres générés par install.sh
63+
host=ad.mydomain.com
64+
user=administrator
65+
base=dc=mydomain,dc=com
66+
domain=libertest.fr
67+
# Paramètres que vous devez renseigner manuellement
68+
branchForEtd=ou=Etudiants
69+
branchForAdm=ou=Administratifs
70+
branchForEsn=ou=Enseignants
71+
branchAttr=supannTypeEntiteAffectation
72+
backendFor=adm,etd,esn
73+
```
74+
#### Paramètres renseignés par install.sh
75+
* **host** = adresse du serveur AD primaire
76+
* **user** = Utilisateur ayant les droits d'administration
77+
* **base** = Base LDAP du domaine (DistinguishedName)
78+
* **domain** = domaine sous la forme doamin.xx
79+
80+
#### Paramètres facultatifs
81+
* **branchForEtd** = branche relative pour la population etd
82+
* **branchForAdm** = branche relative pour la population adm
83+
* **branchForEsn** = branche relative pour la population esn
84+
* **branchAttr** = Attribut qui sert à determiner le type de population
85+
* **backendFor** = Le backend fera l'action pour les populations listées
86+
87+
### Les templates powershell
88+
89+
Le principe de fonctionnenemt est le suivant :
90+
91+
* Le script python genére un script powershell par rapport au modèle (templates).
92+
* Le script copie via ssh le script généré sur le serveur windows.
93+
* Le script powershell est exécuté.
94+
95+
Les templates sont généré avec la librairie **jinja2**
96+
97+
Vous trouverez la documentation Jinja à [https://jinja.palletsprojects.com/en/3.1.x/](https://jinja.palletsprojects.com/en/3.1.x/)
98+
99+
Les variables disponibles pour le template sont :
100+
101+
* **e** L'identité sous forme e.attribut exemple : e.cn, e.supannTypeEntiteAffectation
102+
* **domain** la variable domain du fichier de configuration
103+
* **base** Base LDAP du domaine present dans le fichier de configuration
104+
* **dn** Le DN calculé de l'identité
105+
* **path** le DN superieur de l'identité
106+
107+
108+
Exemple de template (upsertidentity.template)
109+
110+
```powershell
111+
try{
112+
$tab=Get-ADUser -Filter 'employeeNumber -eq "{{ e.employeeNumber }}" -and employeeType -eq "{{ e.employeeType }}"' -Properties "DistinguishedName"
113+
if ($tab["DistinguishedName"] -ne "{{ dn }}"){
114+
try{
115+
$dn=$tab["DistinguishedName"]
116+
move-adObject "$dn" -targetpath "{{ path }}"
117+
}catch{
118+
Write-Host $_
119+
exit 1
120+
}
121+
}
122+
$UserExists = $true
123+
}
124+
catch{
125+
$UserExists = $false
126+
}
127+
if ($UserExists -eq $false){
128+
$np = @{
129+
Path="{{ path }}"
130+
EmployeeNumber="{{ e.employeeNumber }}"
131+
Name="{{ e.cn }}"
132+
DisplayName="{{ e.displayName }}"
133+
GivenName="{{ e.givenName }}"
134+
Surname="{{ e.sn }}"
135+
SamAccountName="{{ e.uid }}"
136+
EmailAddress="{{ e.mail }}"
137+
UserPrincipalName = "{{ e.uid }}" + '@' + "{{ domain }}"
138+
Enabled=$false
139+
CannotChangePassword=$true
140+
ChangePasswordAtLogon = $false
141+
}
142+
try{
143+
new-adUser @np -OtherAttributes @{ 'EmployeeType' = '{{ e.employeeType }}' }
144+
Write-Host "Identity created"
145+
}catch{
146+
Write-Host $_
147+
exit 1
148+
}
149+
}else{
150+
try{
151+
$dn=$tab["DistinguishedName"]
152+
$UserPrincipalName = "{{ e.uid }}" + '@' + "{{ domain }}"
153+
set-adUser -Identity "$dn" -SamAccountName "{{ e.uid }}" -DisplayName "{{e.displayName}}" -GivenName "{{ e.givenName }}" -EmailAddress "{{ e.mail }}" -UserPrincipalName "$UserPrincipalName"
154+
Write-Host "Identity modified"
155+
}catch{
156+
Write-Host $_
157+
exit 1
158+
}
159+
}
160+
exit 0
161+
162+
```
163+
164+
Le powershell doit donner un code de retour (exit)
165+
* 0 tout est ok
166+
* 1 Erreur
167+
168+
L'erreur ou le message doit être écrite sur la sortie standard (Write-Host)

docs/backends/backend_LDAP.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Backend LDAP
2+
3+
télechargez le paquet debian (.deb) avec ce lien
4+
5+
[https://github.com/Libertech-FR/sesame-backend-ldap/releases](https://github.com/Libertech-FR/sesame-backend-ldap/releases/)
6+
7+
```
8+
# dpkg -i sesame-backend-openldap_0.0.3_amd64.deb
9+
Sélection du paquet sesame-backend-openldap précédemment désélectionné.
10+
(Lecture de la base de données... 37052 fichiers et répertoires déjà installés.)
11+
Préparation du dépaquetage de sesame-backend-openldap_0.0.3_amd64.deb ...
12+
Dépaquetage de sesame-backend-openldap (0.0.3) ...
13+
dpkg: des problèmes de dépendances empêchent la configuration de sesame-backend-openldap :
14+
sesame-backend-openldap dépend de libnet-ldap-perl; cependant :
15+
Le paquet libnet-ldap-perl n'est pas installé.
16+
sesame-backend-openldap dépend de libjson-perl; cependant :
17+
Le paquet libjson-perl n'est pas installé.
18+
19+
dpkg: erreur de traitement du paquet sesame-backend-openldap (--install) :
20+
problèmes de dépendances - laissé non configuré
21+
Des erreurs ont été rencontrées pendant l'exécution :
22+
sesame-backend-openldap
23+
```
24+
Ces erreurs sont normales car dpkg n'installe pas les dépendance tout seul.
25+
26+
Installez les dépendances :
27+
28+
```
29+
#apt-get -f install
30+
```
31+
32+
## Configuration du backend LDAP
33+
Une fois l'installation du paquets vous devez activer le backend.
34+
35+
Vous pouvez activer plusieurs fois le backendn si par exemple vous avez 2 serveurs Ldap differents pour les populations.
36+
37+
Allez dans /var/lib/sesame-daemon/backends-modules/openldap
38+
39+
Lancer ./install.sh
40+
41+
```
42+
Deploiment du module LDAP
43+
La position determinera l'ordre d'execution des backends (comme dans init.d)
44+
Numero de demarrage du module (2 positions):02
45+
installation dans backends/02openldap
46+
Copie des fichiers dans ../../backends/02openldap
47+
Le backend a été installé dans ../../backends/02openldap
48+
Configuration
49+
Url du serveur ldap (ldap[s]://FDQN:PORT : ldaps://myldap.mydomain.com
50+
Dn d'authentification (doit avoir les droits d'ecriture) : cn=manager,cn=internal,dc=mydomain,dc=com
51+
Mot de passe : MonPassword!
52+
Base ldap : dc=mydomain,dc=com
53+
Branche pour les utilisateurs ex: ou=peoples : ou=peoples
54+
Attribut pour le Rdn : uid
55+
Génération du fichier de configuration
56+
Vous pouvez completer le fichier de configuration avec les parametres optionnels (voir README.md)
57+
Merci
58+
```
59+
Le script va génerer l'architecture dans backends et creer le fichier de configuration
60+
61+
### config.conf :
62+
63+
```
64+
host=myldap.mydomain.com
65+
dn=cn=manager,cn=internal,dc=mydomain,dc=com
66+
password=MyPassword
67+
base=dc=mydomain,dc=com
68+
userbase=ou=peoples,dc=mydomain,dc=com
69+
rdnattribute=uid
70+
### Parametres facultatifs
71+
branchForEtd=ou=Etudiants
72+
branchForAdm=ou=Administratifs
73+
branchForEsn=ou=Enseignants
74+
branchAttr=supannTypeEntiteAffectation
75+
backendFor=adm,etd,esn
76+
```
77+
### Les paramètres positionnés par le script install.sh
78+
* host : addresse de votre serveur ldap sous la forme simple ou en URL (ldap://monserveur:389 ou ldaps://monserveur:636)
79+
* dn : le dn de connexion (il doit avoir les droits d'écriture sur les branches )
80+
* password : mot de passe du DN ci dessus
81+
* base : votre base LDAP
82+
* userbase : la branche dans laquelle seront créés les comptes
83+
84+
### Les parammètres supplémentaires
85+
* rdnattribute : l'attribut qui servira à la composition du DN
86+
* branchForEtd : la sous branche (dans userbase) pour les étudiants. Si ce paramètre est vide les identitées seront créées directememt dans **userbase**
87+
* branchForAdm : idem pour les administratifs
88+
* branchForEsn : idem pour les enseignants
89+
* branchAttr : l'attribut qui sert à determiner dans quelle branche l'identité est crée.
90+
* backendFor : liste des types d'identités gérée par le backend ex : adm,esn,etd
91+
92+
93+
94+

0 commit comments

Comments
 (0)