0 Votes

Code source wiki de Authelia

Modifié par john le 2026/09/19 20:10

Afficher les derniers auteurs
1 Portail d'authentification unique placé devant les services web. SWAG lui demande, pour chaque requête, si l'utilisateur est autorisé ; Authelia répond selon ses règles d'accès, et redirige vers son portail de connexion si nécessaire.
2
3 Il n'intervient que pour les services dont le proxy-conf SWAG contient les lignes Authelia. Les autres (Nextcloud, Passbolt…) gèrent leur propre authentification.
4
5 Déploiement : dans la stack swag, voir [[Reverse proxy>>Wiki Batcave John.Infrastructure.ServeurPrincipal.ReverseProxy.WebHome]].
6
7 == Fichiers ==
8
9 |=Fichier|=Contenu
10 |##<APPDATA>/authelia/config/configuration.yml##|Configuration principale
11 |##<APPDATA>/authelia/config/users_database.yml##|Comptes utilisateurs
12 |##<APPDATA>/authelia/secrets/##|Secrets lus via les variables ##*_FILE## (mot de passe SMTP…)
13 |##<APPDATA>/authelia/data/db.sqlite3##|Base : sessions, appareils de double authentification, bannissements
14
15 Toute modification demande un ##docker restart authelia##.
16
17 == Configuration en place ==
18
19 {{code language="yaml"}}
20 theme: auto
21 server:
22 address: "tcp://0.0.0.0:9091/authelia"
23 log:
24 level: info
25 session:
26 cookies:
27 - domain: <DOMAINE>
28 authelia_url: https://auth.<DOMAINE>
29 default_redirection_url: https://dash.<DOMAINE>
30 name: authelia_session
31 same_site: lax
32 inactivity: 15m
33 expiration: 8h
34 storage:
35 local:
36 path: /data/db.sqlite3
37 authentication_backend:
38 file:
39 path: /config/users_database.yml
40 watch: false
41 password:
42 algorithm: sha2crypt
43 sha2crypt:
44 variant: sha512
45 iterations: 50000
46 salt_length: 16
47 notifier:
48 smtp:
49 address: "submission://<SERVEUR_SMTP>:587"
50 username: "<COMPTE_SMTP>"
51 sender: "<EXPEDITEUR>"
52 {{/code}}
53
54 * Session : déconnexion après 15 minutes d'inactivité, et au plus tard après 8 heures.
55 * ##watch: false## : les modifications de ##users_database.yml## ne sont prises en compte qu'au redémarrage.
56 * Le mot de passe SMTP n'est pas dans ce fichier : il est lu depuis ##/config/secrets/smtp_password## (variable ##AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE## de la stack). Les autres secrets (session, stockage) sont gérés de la même façon.
57 * Le notificateur est indispensable : Authelia envoie par courriel le lien de validation avant l'enregistrement d'un appareil de double authentification.
58
59 == Règles d'accès ==
60
61 Tout ce qui n'est pas listé est refusé (##default_policy: deny##). Les règles sont lues dans l'ordre : la première qui correspond s'applique, d'où les règles de chemin placées avant la règle générale d'un même domaine.
62
63 |=Service|=Règle
64 |Portail Authelia (##auth.##)|Accès libre
65 |Dashy (##dash.##)|Accès libre, sauf ##/cors-proxy## : un facteur
66 |Tableau de bord SWAG (##dashboard.##)|Un facteur
67 |SearXNG|Un facteur
68 |Joplin, application web|Deux facteurs
69 |n8n, webhooks et retour OAuth|Accès libre
70 |n8n, interface|Un facteur
71 |networking-toolbox|Un facteur
72 |Jellystat|Un facteur
73 |Sshwifty|Un facteur
74 |Portainer|Un facteur
75 |AdGuard Home|Un facteur
76
77 === Syntaxe d'une règle ===
78
79 {{code language="yaml"}}
80 access_control:
81 default_policy: deny
82 rules:
83 - domain: "n8n.<DOMAINE>" # un domaine, une liste, ou un joker "*.<DOMAINE>"
84 resources: # expressions régulières sur le chemin
85 - "^/webhook"
86 policy: bypass
87 - domain: "portainer.<DOMAINE>"
88 subject: # restreindre à des utilisateurs ou groupes
89 - "group:admins"
90 - "user:<UTILISATEUR>"
91 networks: # restreindre à des réseaux d'origine
92 - "192.168.0.0/16"
93 methods: # restreindre à des méthodes HTTP
94 - GET
95 - POST
96 policy: two_factor
97 {{/code}}
98
99 |=Politique|=Effet
100 |##bypass##|Aucune authentification
101 |##one_factor##|Identifiant et mot de passe
102 |##two_factor##|Mot de passe puis second facteur (TOTP, clé de sécurité)
103 |##deny##|Toujours refusé
104
105 Les options ##subject##, ##networks## et ##methods## ne sont pas utilisées ici.
106
107 == Options disponibles, non utilisées ici ==
108
109 === Protection contre la force brute (regulation) ===
110
111 Absente de la configuration : Authelia applique ses valeurs par défaut.
112
113 {{code language="yaml"}}
114 regulation:
115 modes:
116 - ip # bannir l'adresse IP (mode recommandé) ; "user" bannit le compte
117 max_retries: 3 # 0 désactive la régulation
118 find_time: 2m # fenêtre d'analyse des échecs
119 ban_time: 5m # durée du bannissement
120 {{/code}}
121
122 CrowdSec bloque déjà les adresses abusives en amont, au niveau de SWAG.
123
124 === Double authentification par code (TOTP) ===
125
126 {{code language="yaml"}}
127 totp:
128 disable: false
129 issuer: <DOMAINE> # nom affiché dans l'application d'authentification
130 algorithm: sha1
131 digits: 6
132 period: 30
133 skew: 1
134 {{/code}}
135
136 Sans section ##totp##, l'émetteur affiché est ##authelia.com##. Les réglages en vigueur au moment de l'enregistrement d'un appareil sont conservés pour lui : les modifier ensuite n'impose pas de réenregistrer les appareils. Garder ##period## et ##skew## par défaut, beaucoup d'applications ne gèrent que ces valeurs.
137
138 === Clés de sécurité et passkeys (WebAuthn) ===
139
140 {{code language="yaml"}}
141 webauthn:
142 disable: false
143 display_name: <NOM_AFFICHE>
144 timeout: 60s
145 user_verification: preferred
146 {{/code}}
147
148 Second facteur par clé matérielle (FIDO2) ou par passkey.
149
150 === Mémoriser la connexion ===
151
152 {{code language="yaml"}}
153 session:
154 cookies:
155 - domain: <DOMAINE>
156 remember_me: 1M # case « Se souvenir de moi » ; -1 la désactive
157 {{/code}}
158
159 === Politique de mots de passe ===
160
161 {{code language="yaml"}}
162 password_policy:
163 standard:
164 enabled: true
165 min_length: 12
166 require_uppercase: true
167 require_lowercase: true
168 require_number: true
169 require_special: true
170 {{/code}}
171
172 Variante ##zxcvbn## : évaluation de la robustesse réelle du mot de passe plutôt que des règles de composition.
173
174 === Réinitialisation du mot de passe ===
175
176 {{code language="yaml"}}
177 authentication_backend:
178 password_reset:
179 disable: true # retire le lien « Mot de passe oublié » du portail
180 {{/code}}
181
182 === Autres possibilités ===
183
184 |=Option|=Usage
185 |##authentication_backend.ldap##|Utilisateurs dans un annuaire LDAP au lieu du fichier
186 |##storage.mysql## / ##storage.postgres##|Base dans MariaDB ou PostgreSQL au lieu de SQLite
187 |##session.redis##|Sessions dans Redis, pour plusieurs instances d'Authelia
188 |##notifier.filesystem##|Messages écrits dans un fichier au lieu d'être envoyés : pratique pour tester sans SMTP
189 |##identity_providers.oidc##|Authelia comme fournisseur OpenID Connect, pour la connexion unique d'applications compatibles (Portainer, Nextcloud…)
190
191 == Utilisateurs ==
192
193 Générer l'empreinte d'un mot de passe :
194
195 {{code language="bash"}}
196 docker exec -it authelia authelia crypto hash generate sha2crypt
197 {{/code}}
198
199 ##users_database.yml## :
200
201 {{code language="yaml"}}
202 users:
203 <UTILISATEUR>:
204 displayname: "<NOM>"
205 password: "<EMPREINTE>"
206 email: <EMAIL>
207 groups:
208 - admins
209 {{/code}}
210
211 Puis ##docker restart authelia##. La double authentification s'enregistre depuis le portail, après validation par courriel.
212
213 == Commandes utiles ==
214
215 {{code language="bash"}}
216 docker exec authelia authelia validate-config --config /config/configuration.yml # vérifier la configuration
217 docker exec authelia authelia storage user totp delete <UTILISATEUR> --config /config/configuration.yml # forcer un nouvel enregistrement TOTP
218 docker logs authelia --tail 50
219 {{/code}}
220
221 == Sauvegarde ==
222
223 ##<APPDATA>/authelia## (configuration, utilisateurs, secrets, base) est sauvegardé par le script de [[Sauvegarde>>Wiki Batcave John.Infrastructure.Sauvegarde.WebHome]].