Skip to content

Commit 75240fc

Browse files
committed
review documentation
1 parent bf168d5 commit 75240fc

File tree

3 files changed

+148
-31
lines changed

3 files changed

+148
-31
lines changed

INSTALL.debian.fr.md

Lines changed: 146 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,14 @@ Mettre les paramètre de connexion à la base de données :
7979

8080
vi .env
8181

82-
## .env file
83-
DB_CONNECTION=mysql
84-
DB_HOST=127.0.0.1
85-
DB_PORT=3306
86-
DB_DATABASE=deming
87-
DB_USERNAME=deming_user
88-
DB_PASSWORD=demPasssword-123
82+
```dotenv
83+
DB_CONNECTION=mysql
84+
DB_HOST=127.0.0.1
85+
DB_PORT=3306
86+
DB_DATABASE=deming
87+
DB_USERNAME=deming_user
88+
DB_PASSWORD=demPasssword-123
89+
```
8990

9091
## Créer la base de données
9192

@@ -137,23 +138,23 @@ Pour importer un référentiel et générer des données de test, allez dans "Co
137138
Il est également possible de faire démarrer l'application en tant que service `systemd`. Pour cela, créez un nouveau fichier de définition du service :
138139

139140
su root -c "vi /etc/systemd/system/deming.service"
140-
141+
141142
Ajoutez les lignes suivantes:
142143

143144
[Unit]
144145
Description=Deming
145146
After=network.target
146147
After=mariadb.service
147148
After=apache2.service
148-
149+
149150
[Service]
150151
Type=simple
151152
ExecStart=/usr/bin/php artisan serve --host 127.0.0.1 --port 8000
152153
User=www-data
153154
Group=www-data
154155
WorkingDirectory=/var/www/deming
155156
KillMode=mixed
156-
157+
157158
[Install]
158159
WantedBy=multi-user.target
159160

@@ -206,21 +207,21 @@ Ajouter les lignes suivantes :
206207

207208
<VirtualHost *:80>
208209
ServerName deming.local
209-
210+
210211
RewriteEngine On
211212
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1
212213
</VirtualHost>
213-
214+
214215
<VirtualHost *:443>
215216
ServerName deming.local
216217
DocumentRoot /var/www/deming/public
217-
218+
218219
Protocols h2 h2c http/1.1
219-
220+
220221
<Directory /var/www/deming>
221222
AllowOverride All
222223
</Directory>
223-
224+
224225
ProxyPass / http://127.0.0.1:8000/
225226
ProxyPassReverse / http://127.0.0.1:8000/
226227
ProxyPreserveHost On
@@ -229,10 +230,10 @@ Ajouter les lignes suivantes :
229230
#<FilesMatch \.php$>
230231
# SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
231232
#</FilesMatch>
232-
233+
233234
ErrorLog ${APACHE_LOG_DIR}/error.log
234235
CustomLog ${APACHE_LOG_DIR}/access.log combined
235-
236+
236237
<IfModule mod_headers.c>
237238
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload"
238239
Header always set Referrer-Policy "no-referrer"
@@ -242,7 +243,7 @@ Ajouter les lignes suivantes :
242243
Header always set X-Frame-Options "SAMEORIGIN"
243244
Header edit Set-Cookie ^(.*)$ "$1;HttpOnly;Secure;SameSite=Strict"
244245
</IfModule>
245-
246+
246247
SSLEngine on
247248
SSLCertificateFile /etc/apache2/ssl/deming.local.crt
248249
SSLCertificateKeyFile /etc/apache2/ssl/deming.local.key
@@ -269,23 +270,139 @@ Après avoir modifié le(s) fichier(s) php.ini, vous devez redémarrer le servic
269270
Si vous souhaitez envoyer des e-mails de notification depuis Deming.
270271
Vous devez configurer l'accès au serveur SMTP dans .env
271272

272-
MAIL_HOST='smtp.localhost'
273-
MAIL_PORT=2525
274-
MAIL_AUTH=true
275-
MAIL_SMTP_SECURE='ssl'
276-
MAIL_SMTP_AUTO_TLS=false
277-
MAIL_USERNAME=
278-
MAIL_PASSWORD=
273+
```dotenv
274+
MAIL_HOST='smtp.localhost'
275+
MAIL_PORT=2525
276+
MAIL_AUTH=true
277+
MAIL_SMTP_SECURE='ssl'
278+
MAIL_SMTP_AUTO_TLS=false
279+
MAIL_USERNAME=
280+
MAIL_PASSWORD=
281+
```
279282

280283
Vous pouvez également configurer DKIM :
281284

282-
MAIL_DKIM_DOMAIN = 'admin.local';
283-
MAIL_DKIM_PRIVATE = '/path/to/private/key';
284-
MAIL_DKIM_SELECTOR = 'default'; // Match your DKIM DNS selector
285-
MAIL_DKIM_PASSPHRASE = ''; // Only if your key has a passphrase
285+
```dotenv
286+
MAIL_DKIM_DOMAIN = 'admin.local';
287+
MAIL_DKIM_PRIVATE = '/path/to/private/key';
288+
MAIL_DKIM_SELECTOR = 'default'; // Match your DKIM DNS selector
289+
MAIL_DKIM_PASSPHRASE = ''; // Only if your key has a passphrase
290+
```
286291

287292
N'oubliez pas de [configurer](https://dbarzin.github.io/deming/config.fr/#notifications) le contenu et la fréquence d'envoi des mails.
288293

294+
## LDAP / LDAPRecord configuration (optional)
295+
296+
Cette section te permet d’activer l’authentification LDAP dans Deming avec **LDAPRecord v2**. Elle fonctionne indifféremment avec **Active Directory** *ou* **OpenLDAP**, et peut cohabiter avec l’authentification locale (base de données).
297+
298+
### Prérequis
299+
300+
Prérequis : l’extension PHP LDAP doit être installée et active.
301+
302+
```bash
303+
sudo apt-get install php-ldap
304+
sudo systemctl restart apache2
305+
```
306+
307+
### Environnement
308+
309+
Ajouter / adapter les variables suivantes :
310+
311+
```dotenv
312+
# Activation LDAP dans Deming (mode hybride)
313+
LDAP_ENABLED=true # Active l’authentification LDAP
314+
LDAP_FALLBACK_LOCAL=true # Si LDAP échoue, tenter l’auth locale
315+
LDAP_AUTO_PROVISION=false # Créer automatiquement l’utilisateur local après bind LDAP OK
316+
317+
# Connexion au serveur LDAP
318+
LDAP_HOST=ldap.example.org
319+
LDAP_PORT=389 # 389 (StartTLS) ou 636 (LDAPS)
320+
LDAP_BASE_DN=dc=example,dc=org
321+
LDAP_USERNAME=cn=admin,dc=example,dc=org # Compte de service pour la recherche
322+
LDAP_PASSWORD=********
323+
LDAP_TLS=true # StartTLS (recommandé si port 389)
324+
LDAP_SSL=false # true si tu utilises ldaps:// sur 636
325+
LDAP_TIMEOUT=5 # (optionnel)
326+
327+
# Attributs candidats pour identifier l’utilisateur saisi dans le formulaire
328+
# L’ordre a de l’importance : le premier qui matche est utilisé.
329+
# OpenLDAP: uid, cn, mail ; AD: sAMAccountName, userPrincipalName, mail
330+
LDAP_LOGIN_ATTRIBUTES=uid,cn,mail,sAMAccountName,userPrincipalName
331+
```
332+
333+
**Exemples**
334+
335+
* OpenLDAP (DN utilisateur typique : `uid=jdupont,ou=people,dc=example,dc=org`) :
336+
337+
```dotenv
338+
LDAP_TLS=true
339+
LDAP_SSL=false
340+
LDAP_LOGIN_ATTRIBUTES=uid,cn,mail
341+
```
342+
* Active Directory (UPN : `jdupont@example.org`, sAM : `jdupont`) :
343+
344+
```dotenv
345+
LDAP_TLS=true
346+
LDAP_SSL=false
347+
LDAP_LOGIN_ATTRIBUTES=sAMAccountName,userPrincipalName,mail,cn
348+
LDAP_USERNAME=EXAMPLE\\svc_ldap # ou DN complet du compte de service
349+
```
350+
351+
Après modification du `.env` :
352+
353+
```bash
354+
php artisan config:clear
355+
php artisan optimize:clear
356+
```
357+
358+
### Certificats
359+
360+
**Certificats** : si tu utilises StartTLS/LDAPS avec un CA interne, ajoute le CA au trust store de ta distribution (ex. `/usr/local/share/ca-certificates` + `update-ca-certificates`).
361+
362+
### Comment ça marche côté Deming
363+
364+
Le contrôleur d’authentification :
365+
366+
* recherche l’entrée LDAP via une **OR**-query sur les attributs listés dans `LDAP_LOGIN_ATTRIBUTES` ;
367+
* récupère le **DN** ;
368+
* tente un **bind** avec le mot de passe saisi ;
369+
* si OK, il connecte l’utilisateur applicatif local correspondant (et peut **auto-provisionner** s’il n’existe pas, selon `LDAP_AUTO_PROVISION`).
370+
371+
### Test rapide
372+
373+
Avant de tester via l’UI, valide la connexion en CLI :
374+
375+
```bash
376+
php artisan tinker
377+
```
378+
379+
Puis dans Tinker :
380+
381+
```php
382+
use LdapRecord\Container;
383+
384+
$dn = 'uid=jdupont,ou=people,dc=example,dc=org'; // ou cn=..., ou DN AD
385+
Container::getConnection()->auth()->attempt($dn, 'MOT_DE_PASSE', true);
386+
// => true attendu si l’authentification réussit
387+
```
388+
389+
### Dépannage express
390+
391+
* **PHP LDAP manquant** : `php -m | grep ldap` doit renvoyer `ldap`. Sinon `sudo apt-get install php-ldap`, puis redémarrage PHP/Apache.
392+
* **Mauvais DN** : ajoute les `ou=...` corrects (ex. `ou=people`).
393+
* **TLS/SSL** : StartTLS = `LDAP_TLS=true` (389). LDAPS = `LDAP_SSL=true` (636). Ne laisse pas en clair en prod.
394+
* **Certificat non approuvé** : ajoute le CA au système (voir ci-dessus).
395+
* **Recherche impossible** : vérifie `LDAP_USERNAME` / `LDAP_PASSWORD` (compte de service) et les ACL de l’annuaire.
396+
* **Attribut de login** : aligne `LDAP_LOGIN_ATTRIBUTES` avec ce que tes utilisateurs saisissent réellement (uid ? UPN ? email ?).
397+
398+
### Sécurité – à faire, pas à discuter
399+
400+
* Utilise **TLS/LDAPS**. Point.
401+
* Restreins les droits du **compte de service** au strict nécessaire (lecture des attributs requis).
402+
* Évite de logger des mots de passe ou DN complets côté application.
403+
* Si tu actives l’**auto-provisioning**, stocke un mot de passe aléatoire côté base (pas un duplicat du LDAP) et applique tes politiques de rôles/profils.
404+
405+
289406
## Sheduler
290407

291408
Modifier le crontab

INSTALL.fr.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ Prérequis : l’extension PHP LDAP doit être installée et active.
300300

301301
```bash
302302
sudo apt-get install php-ldap
303-
sudo systemctl restart php8.3-fpm || sudo systemctl restart apache2
303+
sudo systemctl restart apache2
304304
```
305305
### Environnement
306306

INSTALL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ The PHP LDAP extension must be installed and enabled.
294294

295295
```bash
296296
sudo apt-get install php-ldap
297-
sudo systemctl restart php8.3-fpm || sudo systemctl restart apache2
297+
sudo systemctl restart apache2
298298
```
299299

300300
### Environment

0 commit comments

Comments
 (0)