OpenID Connect
Cette section décrit la configuration de l'authentification OpenID Connect (OIDC) dans Sync-in.
Sync-in implémente le flux Authorization Code conforme aux recommandations OAuth 2.0 pour les applications web.
La configuration se fait dans environment.yaml, voir la section OIDC.
Prérequis
Avant d'activer l'OIDC dans Sync-in, un client OAuth/OIDC doit être créé dans votre fournisseur d'identité (IdP).
Les libellés varient selon les fournisseurs, mais la logique est similaire.
Créer une application (client) :
- Le type de fournisseur doit être
OpenID Connect. - Le type de client doit être
Confidentiel. - Le type d'application doit être
Web. - Le type de flux (grant) doit être
Authorization Code.
Cette configuration permet d'obtenir l'identifiant client (clientId) ainsi que le secret associé (clientSecret) que vous devez reporter dans la
configuration.
Configurer les URI de redirection
Les URI de redirection doivent être déclarées auprès de l'IdP.
Elles permettent à l'IdP de rediriger l'utilisateur vers Sync-in après une authentification réussie.
Connexion depuis un navigateur web
Pour l'authentification via l'interface web, déclarez l'URI suivante :
https://DOMAINE:PORT/api/auth/oidc/callback
Cette URI correspond au paramètre de configuration redirectUri.
Elle doit obligatoirement se terminer par /api/auth/oidc/callback.
Connexion depuis les applications de bureau
Les applications de bureau utilisent le navigateur par défaut du système pour réaliser l'authentification.
Après la connexion, le navigateur redirige l'utilisateur vers une URI locale afin de transmettre le résultat d'authentification à l'application.
Pour autoriser ce fonctionnement, les URI locales suivantes doivent être déclarées :
http://127.0.0.1:49152/oidc/callbackhttp://127.0.0.1:49153/oidc/callbackhttp://127.0.0.1:49154/oidc/callback
Cette méthode améliore la compatibilité avec les IdP et permet de respecter les mécanismes d'authentification déjà déployés dans les environnements d'entreprise (SSO, MFA, politiques de sécurité, etc.).
Lors de l'utilisation d'OIDC, la MFA est censée être appliquée par le fournisseur d'identité. Sync-in n'ajoute pas de challenge 2FA local après le callback OIDC. La 2FA Sync-in reste configurable depuis le profil utilisateur pendant une session OIDC ; les flux d'activation, de réinitialisation et de désactivation vérifient le mot de passe local Sync-in.
Configuration
Exemple minimal :
auth:
provider: oidc
oidc:
issuerUrl: 'https://auth.example.com/realms/my-realm'
clientId: 'OIDCClientId'
clientSecret: 'OIDCClientSecret'
redirectUri: 'https://sync-in.domain.com/api/auth/oidc/callback'
⚠️ redirectUri doit correspondre exactement à l'URI déclarée dans l'IdP.
Flux d'authentification
Deux méthodes d'authentification sont disponibles sur l'écran de connexion Sync-in.
Authentification locale
- Les comptes invités, les comptes administrateurs et les comptes avec des mots de passe d'application peuvent se connecter via leur login / mot de passe.
- Pour ce flux de connexion, la 2FA locale de Sync-in s'applique lorsqu'elle est activée pour l'utilisateur.
- Les autres utilisateurs peuvent utiliser leur mot de passe local uniquement si :
- l'option
options.enablePasswordAuthest activée ; - ils connaissent leur mot de passe local Sync-in.
- l'option
- Cette configuration permet de conserver un accès d'urgence à l'administration sans désactiver l'authentification OIDC.
Pour que cet accès de secours soit utilisable, il est recommandé de configurer et de conserver disponible un mot de passe local Sync-in pour les comptes administrateurs.
Par défaut, l'authentification locale par mot de passe est désactivée pour les utilisateurs OIDC standards. Activez options.enablePasswordAuth
uniquement si vous souhaitez explicitement autoriser ce fallback.
Les utilisateurs créés via OIDC commencent avec un mot de passe interne aléatoire. Ils peuvent définir un mot de passe local connu depuis leur profil lorsqu'ils sont authentifiés via OIDC. Ce mot de passe peut ensuite servir à l'authentification locale par mot de passe lorsqu'elle est activée, et au fallback de step-up par mot de passe lorsqu'aucun secret TOTP n'est actif. Il est aussi nécessaire pour activer, réinitialiser ou désactiver la 2FA Sync-in depuis une session navigateur OIDC.
Mots de passe d'application
La génération et la révocation des mots de passe d'application nécessitent le step-up Sync-in habituel : TOTP lorsqu'il est activé, sinon confirmation par mot de passe local.
Authentification via OpenID Connect (OIDC)
- L'utilisateur lance la connexion via le bouton OIDC.
- Il est redirigé vers l'IdP pour s'authentifier.
- La MFA, lorsqu'elle est requise, est appliquée par le fournisseur d'identité à cette étape.
- Après validation, l'utilisateur est automatiquement redirigé vers Sync-in.
- Sync-in récupère les informations utilisateur et synchronise le compte local.
- Si aucun compte local n'existe et que
autoCreateUserest activée, un compte local est créé avec un mot de passe aléatoire. - Le rôle administrateur est appliqué automatiquement si configuré.
- Le quota de stockage est synchronisé depuis
options.storageQuotaClaimlorsque le profil OIDC fournit une valeur valide en octets. Une valeur de claim absente ou0définit un stockage illimité.
Le profil OIDC doit fournir une adresse e-mail. Les nouveaux comptes initialisent leur login local depuis preferred_username, puis depuis la partie
locale de l'e-mail lorsque preferred_username est absent. Le login est attribué une seule fois et n'est pas renommé lors des connexions OIDC
suivantes.
Association du compte et synchronisation
Sync-in utilise le claim sub validé du token ID comme identité externe stable et le stocke sur le compte utilisateur local. Lors de la connexion,
les comptes sont résolus dans cet ordre :
- Correspondance de l'identité externe stockée avec le
subdu token ID. - Fallback par e-mail uniquement pour les comptes existants qui n'ont pas encore d'identité externe.
- Enregistrement du
subinchangé sur ce compte après la première correspondance de compatibilité réussie. - Création d'un nouveau compte local lorsqu'aucune correspondance n'existe et que
autoCreateUserest activé.
Une fois un compte associé, les changements d'e-mail côté IdP ne cassent plus la connexion, car Sync-in résout l'utilisateur par sub. Si le login
dérivé est déjà utilisé lors de la création automatique d'un compte, Sync-in ajoute un suffixe déterministe dérivé de sub ; la valeur brute de
sub n'est pas exposée dans le login.
Pour les utilisateurs existants, Sync-in peut synchroniser l'e-mail, le prénom, le nom, le rôle, le quota de stockage et l'avatar depuis OIDC. Le login local, le mot de passe et les permissions ne sont pas synchronisés après la création du compte.
Rôles administrateurs
Si options.adminRoleOrGroup est défini, Sync-in vérifie la présence de cette valeur dans les claims groups ou roles
retournés par l'IdP. Le rôle administrateur est attribué si une correspondance est trouvée.
Si options.adminRoleOrGroup n'est pas défini, les comptes admin existants conservent leur rôle et ne peuvent pas être rétrogradés via OIDC.
Disponibilité et erreurs
Les erreurs de configuration ou d'accès à l'IdP entraînent un échec de l'authentification.
En cas d'indisponibilité de l'IdP, seule l'authentification locale reste
possible (voir la section Flux d'Authentification).
Sécurité
Sync-in utilise automatiquement le mécanisme PKCE (Proof Key for Code Exchange) lorsqu'il est pris en charge par le fournisseur d'identité et
activé dans la configuration via le paramètre security.supportPKCE (activé par défaut).
PKCE renforce le flux Authorization Code en ajoutant une preuve cryptographique lors de l'échange du code d'autorisation, améliorant la sécurité pour les clients web et natifs.
Cette implémentation s'aligne avec les recommandations de sécurité OAuth actuelles.
Le support de PKCE peut empêcher l'authentification avec certains fournisseurs d'identité comme PocketID, auquel cas il peut être désactivé.
L'option security.tokenEndpointAuthMethod prend en charge client_secret_basic et client_secret_post. Utilisez la valeur attendue par votre IdP ;
client_secret_basic est la valeur par défaut pour les clients web confidentiels. Le champ clientSecret est requis dans la configuration Sync-in.
La découverte OIDC et les requêtes token exigent HTTPS par défaut. L'option security.allowInsecureRequests ne doit être activée que pour du
développement local ou des fournisseurs hérités de confiance.
L'option security.requireVerifiedEmail est activée par défaut. Sync-in exige que le claim UserInfo email_verified soit exactement true avant
l'association du compte ou la synchronisation du profil. Désactivez-la uniquement si votre IdP n'expose pas de claim d'e-mail vérifié fiable.
Lorsque options.autoSyncAvatar est activée, Sync-in peut synchroniser l'avatar utilisateur depuis le claim OIDC picture. Les téléchargements
d'avatar depuis des plages IP privées ou internes restent bloqués sauf si security.allowPrivateIpAvatarDownload est explicitement activée.