Serveur OAuth2/OIDC
SmartAuth intègre un serveur OAuth2 compatible OpenID Connect. Il permet d'utiliser Dolibarr comme fournisseur d'identité (Identity Provider) central pour le Single Sign-On (SSO) avec des applications tierces.
Activation
- Allez dans Accueil > Configuration > Modules > SmartAuth
- Ouvrez l'onglet Serveur OAuth
- Cochez Activer le serveur OAuth/OIDC
- Cliquez sur Enregistrer

Paramètres du serveur
URL de l'issuer
L'URL de l'issuer identifie votre serveur OAuth. Si vous laissez ce champ vide, SmartAuth utilise l'URL auto-détectée de votre installation Dolibarr.
Durées des jetons
| Paramètre | Description | Valeur par défaut |
|---|---|---|
| Durée access token | Durée de validité d'un access token OAuth, en secondes | 3600 (1 heure) |
| Durée refresh token | Durée de validité d'un refresh token OAuth, en secondes | 2592000 (30 jours) |
| Durée code d'autorisation | Durée de validité d'un code d'autorisation, en secondes | 600 (10 minutes) |
Sécurité
| Paramètre | Description |
|---|---|
| PKCE obligatoire pour clients publics | Recommandé pour les applications mobiles et les Single Page Applications (SPA). Activé par défaut. |
| Mémoriser les consentements | Évite de redemander le consentement à chaque connexion pour un même utilisateur et un même client. |
Endpoints OIDC
Lorsque le serveur OAuth est activé, les endpoints suivants sont disponibles :
| Endpoint | URL |
|---|---|
| Discovery | /.well-known/openid-configuration |
| JWKS | /.well-known/jwks.json |
| Authorization | /oauth/authorize |
| Token | /oauth/token |
| Userinfo | /oauth/userinfo |
| Revocation | /oauth/revoke |
| End Session | /oauth/logout |
Ces URLs sont affichées directement dans l'onglet de configuration du serveur OAuth après activation.
Gestion des clients OAuth
Créer un client
- Depuis l'onglet Serveur OAuth, cliquez sur Clients OAuth ou accédez directement à la liste des clients
- Cliquez sur Nouveau client
- Renseignez les informations du client :

| Champ | Description |
|---|---|
| Nom | Nom du client (exemple : "Mon application WordPress") |
| URIs de redirection | Une URI par ligne. Doit être une URL valide en HTTPS. |
| Scopes autorisés | Scopes que le client peut demander (openid, profile, email, groups, offline_access) |
| Grant types autorisés | Types d'autorisation : Authorization Code (apps web), Refresh Token, Client Credentials (machine-à-machine) |
| Type de client | Confidentiel (application serveur avec secret) ou Public (application mobile/SPA avec PKCE) |
| PKCE obligatoire | Recommandé pour tous les clients |
Scopes disponibles
| Scope | Description |
|---|---|
openid |
Requis pour OpenID Connect |
profile |
Profil utilisateur (nom, etc.) |
email |
Adresse email |
groups |
Groupes utilisateur |
offline_access |
Accès hors ligne (refresh token) |
Des scopes personnalisés peuvent être enregistrés par les modules externes.
Client confidentiel ou public
- Client confidentiel -- Application serveur capable de protéger un secret (exemple : backend WordPress, Nextcloud). Un secret est généré et affiché une seule fois lors de la création.
- Client public (PKCE) -- Application mobile ou SPA qui ne peut pas stocker un secret en toute sécurité. L'authentification utilise PKCE (Proof Key for Code Exchange) à la place.
Attention : Le secret client est affiché une seule fois lors de la création. Copiez-le et conservez-le dans un endroit sécurisé. Il ne peut pas être récupéré ultérieurement. Vous pouvez toutefois le régénérer si nécessaire.
Gérer un client existant
Depuis la liste des clients OAuth, vous pouvez :
- Consulter -- Voir les détails du client, ses jetons actifs et le dernier jeton émis
- Modifier -- Mettre à jour les URIs de redirection, les scopes et les grants autorisés
- Activer/Désactiver -- Activer ou désactiver temporairement un client
- Régénérer le secret -- Générer un nouveau secret (l'ancien est immédiatement invalidé)
- Supprimer -- Supprimer le client et révoquer tous ses jetons
Client Credentials (machine-à-machine)
Le grant type client_credentials permet l'authentification entre serveurs sans interaction utilisateur.
Configuration
- Créez un client OAuth de type confidentiel
- Activez le grant type Client Credentials
- Définissez un utilisateur de service sur la fiche du client
L'utilisateur de service détermine les permissions et l'entité pour les opérations effectuées par le client. Si aucun utilisateur de service n'est défini sur le client, SmartAuth utilise l'utilisateur par défaut global (constante SMARTAUTH_DEFAULT_USER).
Fonctionnement
- Le client envoie
grant_type=client_credentialsavec sonclient_idetclient_secret - SmartAuth valide les identifiants et les scopes demandés
- SmartAuth retourne un
access_tokenJWT (pas de refresh token ni d'id_token en mode client credentials)
Intégration Dolibarr (SSO)
SmartAuth peut servir de fournisseur d'authentification pour une autre instance Dolibarr.
Création du client Dolibarr
- Allez dans l'onglet Serveur OAuth
- Dans la section Intégration Dolibarr, cliquez sur Créer le client Dolibarr
- Indiquez l'URI de redirection de votre instance Dolibarr cible
Configuration de l'instance Dolibarr cible
Après la création du client, l'onglet affiche les instructions de configuration :
-
Copiez le fichier d'authentification dans l'instance Dolibarr cible :
cp htdocs/custom/smartauth/core/login/functions_smartauthoauth.php \ /chemin/vers/dolibarr/htdocs/core/login/ -
Modifiez le fichier
conf.phpde l'instance cible :$dolibarr_main_authentication = 'smartauthoauth,dolibarr'; -
Configurez les constantes Dolibarr sur l'instance cible :
Constante Valeur SMARTAUTH_OAUTH_ISSUERURL de votre serveur SmartAuth SMARTAUTH_OAUTH_CLIENT_IDdolibarr-erp
Test de connexion
Depuis l'onglet Serveur OAuth, utilisez le bouton Tester la connexion pour vérifier que le serveur SmartAuth est accessible via l'endpoint de discovery.