Stalwart Authelia OIDC
Stalwart Authelia OIDC
OpenID Connect 1.0
- Le OpenID Connect 1.0
client_idparamètre:- Cela doit être une valeur unique pour chaque client.
- La valeur utilisée dans ce guide est simplement à des fins de lisibilité et de démonstration et vous ne devriez pas utiliser cette valeur dans la production et devrait plutôt utiliser le Comment générer un identifiant client ou un secret client? FAQ. Nous recommandons 64 caractères aléatoires, mais vous pouvez utiliser n’importe quelle valeur arbitraire qui répond aux autres critères.
- Cela ne doit contenir que des caractères sans réserve RFC3986.
- Cela ne doit pas dépasser 100 caractères de longueur.
- Le OpenID Connect 1.0
client_secretparamètre:- La valeur utilisée dans ce guide est simplement à des fins de démonstration et vous ne devriez absolument pas l’utiliser valeur dans la production et devrait plutôt utiliser le Comment puis-je générer un identifiant client ou un secret client ? FAQ.
- Cette chaîne peut être stockée sous forme de texte clair dans la configuration d’Authelia, mais ce comportement est obsolète et ne l’est pas garantie d’être soutenu à l’avenir. Voir le guide Plaintext pour plus information.
- Lorsque le secret est stocké sous forme de hachage dans la configuration Authelia (fortement recommandé), le coût de Le hachage peut, si trop grand, causer des délais d’attente pour les clients. Voir le Régler le guide des facteurs de travail pour plus d’informations.
- L’exemple de configuration pour Authelia:
- Ne contient qu’un exemple de configuration pour l’enregistrement du client et vous DEVEZ également configurer les exigences éléments du guide de configuration du fournisseur OpenID Connect 1.0.
- Ne contient qu’une petite partie de toutes les options disponibles pour un client enregistré et les utilisateurs peuvent souhaiter configurer des portions qui ne font pas partie de ce guide ou les configurer différemment, car il est important de à la fois vous familiariser avec les autres options disponibles et l’effet de chacune des options configurées dans cette section en consultant la configuration des clients OpenID Connect 1.0 guide.
Hypothèses
Cet exemple fait les hypothèses suivantes:
- Application Root URL:
https://example.example.com/ - Authelia Root URL:
https://auth.example.com/ - ID du client:
stalwart - Secret du client:
insecure_secret
Certaines des valeurs présentées dans ce guide peuvent être automatiquement remplacées par des variables de documentation.
Authelia
Ce client est créé à titre d’exemple, mais Stalwart n’utilise pas directement ce client, il ne fait que poser des requêtes le point de terminaison Introspection ou Information utilisateur donné un Token d’accès.
Cela signifie que vous devez vous procurer le jeton d’accès concerné vous-même pour l’utiliser.
1
# Générer
Dans cet exemple, nous l’émettons à une application qui a un URI différent de Stalwart qui permet à cette application de tirer parti d’Auth 2.0 pour s’authentifier au nom des utilisateurs.
1
2
3
4
root@alder:/home/yick# authelia crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random.charset rfc3986
Random Password: Zs37oSgXqxnWwnCK8fDmOiFzple2Ht9nGFusUMtpTU_1kPFcXf-PXvH.f1Ut1XVkJpjU7mlU
Digest: $pbkdf2-sha512$310000$pY.ORz/OvWLI63RSay1oPQ$X3k3G3cTjcbFfNwA81hm3U3H8HXZret1mLs2Hbp.fzmgFUACY8VkE7OP7cpOTIonm.auMyjbP74BApER20A5gA
La configuration YAML suivante est un exemple de configuration client Authelia pour une utilisation avec Stalwart qui opére avec l’exemple d’application:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
identity_providers:
oidc:
hmac_secret: 'CHANGEZ-MOI'
jwks:
- key_id: 'authelia'
algorithm: 'RS256'
use: 'sig'
certificate_chain: |
-----BEGIN CERTIFICATE-----
MIIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----
key: |
-----BEGIN PRIVATE KEY-----
MIIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END PRIVATE KEY-----
enable_client_debug_messages: false
minimum_parameter_entropy: 8
enforce_pkce: 'public_clients_only'
enable_pkce_plain_challenge: false
enable_jwt_access_token_stateless_introspection: false
discovery_signed_response_alg: 'none'
discovery_signed_response_key_id: ''
require_pushed_authorization_requests: false
lifespans:
access_token: '1h'
authorize_code: '1m'
id_token: '1h'
refresh_token: '90m'
cors:
endpoints:
- authorization
- token
- revocation
- introspection
- userinfo
allowed_origins:
- https://immich.rnmkcy.eu
- https://yannig.net
allowed_origins_from_client_redirect_uris: false
clients:
- client_id: 'stalwart-webui'
client_name: 'Stalwart'
public: true
authorization_policy: 'two_factor'
require_pkce: true
pkce_challenge_method: 'S256'
redirect_uris:
- 'https://yannig.net/admin/oauth/callback'
scopes:
- 'openid'
- 'profile'
- 'email'
- 'groups'
- 'offline_access'
response_types:
- 'code'
grant_types:
- 'authorization_code'
- 'refresh_token'
token_endpoint_auth_method: 'none'
Paramétrage Stalwart Web GUI
Configurer Stalwart à l’aide de l’interface graphique Web B.
Configurer Stalwart pour utiliser Authelia en tant que fournisseur OpenID Connect 1.0, se connecter à Stalwart.
Basé sur la configuration Authelia que tu as collée et la documentation officielle pour Authelia + Stalwart, voici la procédure exacte pour paramétrer OIDC dans Stalwart via la Web GUI.
Settings → Authentication → Directories
Directory
- Directory type : OpenID Connect
- Description : authelia (C’est juste un texte libre, l’ID réel est implicitement le même que le nom du directory dans l’UI).
Provider
-
Issuer URL* :https://auth.rnmkcy.eu (C’est l’URL de base de ton Authelia, documenté dans la doc officielle pour Authelia + Stalwart).[authelia]
-
Required Audience (optional) : stalwart (Cela correspond à
client_id=stalwartdans Authelia). -
Required Scopes : email openid (Cela est suggéré par la doc officielle :
openidetemailsont les scopes essentiels).[authelia]
Tu peux aussi mettreemail openid profilesi tu veux le profil, maisemail openidsuffit.
Claims
-
Username Claim* : preferred_username (C’est le champ retourné par Authelia qui contient le nom d’utilisateur principal).[authelia]
-
Username Domain (optional) : yannig.net (Si
preferred_usernameest un nom simple sans@, commeyannig, ce domaine sera ajouté automatiquement pour formeryannig@yannig.net). -
Name Claim (optional) : name (Champ pour le nom d’affichage, par exemple
Yannig X). -
Groups Claim (optional) : groups (Si tu veux que Stalwart utilise les groupes d’Authelia pour les permissions ou rôles).
Settings → Authentication → General
Authentication Directory
- Authentication Directory (optional) : authelia (C’est le Directory Id du Directory OpenID Connect que tu as créé précédemment).
Cela signifie :
- Stalwart n’utilise plus l’annuaire interne pour l’authentification.
- Il utilise l’annuaire externe
authelia(OpenID Connect) pour authentifier les utilisateurs.
Les autres paramètres (Password Policy, Default Roles, App Passwords) s’appliquent uniquement à l’annuaire interne et ne sont pas utilisés pour Authelia.
Password Policy (non utilisé pour Authelia)
-
Hash Algorithm, Min Length, Max Length, Min Strength, Default Expiry :
Ces paramètres ne s’appliquent pas aux utilisateurs authentifiés via Authelia.
Ils ne concernent que :- Les comptes créés dans l’annuaire interne,
- Si tu viens d’activer Authelia, tu peux laisser les valeurs par défaut ou ne pas les modifier.
Default Roles
Tu peux laisser les rôles par défaut ou les adapter selon tes besoins :
- User Roles : User (Rôle par défaut pour les comptes utilisateurs).
- Group Roles : Group
- Admin Roles : System Administrator
Ces rôles sont assignés aux nouveaux comptes créés dans l’annuaire interne, mais pour Authelia, les permission peuvent être assignées via les groupes OU via les claims OIDC.
App Passwords
- Max App Passwords (optional) : 5 (Nombre maximal de mots de passe d’application par utilisateur).
- Max API Keys (optional) : 5
Ces paramètres s’appliquent aussi bien à l’annuaire interne et à l’annuaire externe ; ils limitent le nombre de mots de passe d’application et de clés API que chaque utilisateur peut créer.
Résumé configuration complète
1. Créer le Directory OpenID Connect
-
Settings → Authentication → Directories → Create Directory :
- Directory type :
OpenID Connect - Description :
authelia - Issuer URL* :
https://auth.rnmkcy.eu - Required Audience :
stalwart - Required Scopes :
email openid - Username Claim* :
preferred_username - Username Domain :
yannig.net - Name Claim :
name - Groups Claim :
groups - Save & Reload
- Directory type :
2. Activer Authelia comme source principale
- Settings → Authentication → General :
- Authentication Directory (optional) :
authelia - Laisser les autres paramètres par défaut ou les adapter selon tes besoins.
- Sauvegarde
- Authentication Directory (optional) :
3. Créer les comptes utilisateurs (précréation recommandée)
- Accounts → Create Account :
- Login :
preferred_username(ex.yannig) - Email : email dans Authelia (ex.
yannig@yannig.net)
- Login :
En suivant cette configuration, Stalwart utilisera Authelia comme fournisseur OIDC pour l’authentification, et tu n’as pas besoin de créer d’“OAuth Client” dans Stalwart.
Configuration via stalwart-cli
Pour revenir à l’annuaire interne
1
stalwart-cli update Authentication --field directoryId=null
Pour afficher la configuration complète d’un’ annuaire OIDC Authelia
A-Récupèrer son ID exact
1
stalwart-cli query Directory # Id et type
Affiche l’objet
1
stalwart-cli get Directory <Id>
get affiche l’objet de configuration, tandis que query sert à lister les annuaires.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
stalwart-cli query Directory
Id Type
io1j29vaa0aa Oidc
stalwart-cli get Directory io1j29vaa0aa
Type: OpenID Connect
Directory
Description: authelia
Provider
Issuer URL: https://auth.rnmkcy.eu
Required Audience: stalwart-webui
Required Scopes: email, openid
Claims
Username Claim: preferred_username
Username Domain: yannig.net
Name Claim: name
Groups Claim: groups
Tenant: <none>
Snapshot et ndjson
Le snapshot est un plan d’opérations idempotentes : il met à jour les objets existants ou les crée s’ils sont absents, sans supprimer les autres objets. Les secrets ne sont inclus que si le snapshot a été créé avec
--include-secretset que le serveur les a effectivement fournis.
Sauvegarder une configuration
Pour enregistrer une copie de la configuration du serveur dans un fichier :
1
stalwart-cli snapshot Directory --allow-unresolved Tenant --output directories.ndjson
Retour commande ci-dessus
1
2
3
4
5
6
7
snapshot: 3 upserts, 0 singletons
fetching Directory...
1 fetched
Directory (Oidc): 1
Directory (Sql): 0
Directory (Ldap): 0
snapshot complete
Le contenu du fichier directories.ndjson
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"@type": "upsert",
"object": "Directory",
"matchOn": [
"description"
],
"value": {
"directory-io1j29vaa0aa": {
"@type": "Oidc",
"claimUsername": "preferred_username",
"requireScopes": {
"email": true,
"openid": true
},
"issuerUrl": "https://auth.rnmkcy.eu",
"claimGroups": "groups",
"description": "authelia",
"requireAudience": "stalwart-webui",
"claimName": "name",
"usernameDomain": "yannig.net",
"memberTenantId": null
}
}
}
Attention : l’objet
Directoryconfigure l’annuaire d’authentification OIDC de Stalwart. Ce n’est pas la configuration du client OIDC de l’interface Web (stalwart-webui) enregistrée dans Authelia.
Restaurer une configuration
Utilise apply pour restaurer le plan NDJSON exporté par snapshot :
1
stalwart-cli apply --file directories.ndjson
Le fichier est appliqué au serveur sélectionné par ta configuration CLI (STALWART_URL et tes identifiants habituels). Pour cibler explicitement un serveur :
1
stalwart-cli --url https://mail.example.com apply --file directories.ndjson
Avant de modifier le serveur, tu peux vérifier le plan sans l’appliquer :
1
stalwart-cli apply --file directories.ndjson --dry-run
