You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -79,13 +79,14 @@ Mettre les paramètre de connexion à la base de données :
79
79
80
80
vi .env
81
81
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
+
```
89
90
90
91
## Créer la base de données
91
92
@@ -137,23 +138,23 @@ Pour importer un référentiel et générer des données de test, allez dans "Co
137
138
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 :
138
139
139
140
su root -c "vi /etc/systemd/system/deming.service"
@@ -269,23 +270,139 @@ Après avoir modifié le(s) fichier(s) php.ini, vous devez redémarrer le servic
269
270
Si vous souhaitez envoyer des e-mails de notification depuis Deming.
270
271
Vous devez configurer l'accès au serveur SMTP dans .env
271
272
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
+
```
279
282
280
283
Vous pouvez également configurer DKIM :
281
284
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
+
```
286
291
287
292
N'oubliez pas de [configurer](https://dbarzin.github.io/deming/config.fr/#notifications) le contenu et la fréquence d'envoi des mails.
288
293
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
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
***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.
0 commit comments