Skip to content

Authentification

Stib inclut un système d'authentification optionnel qui permet de sécuriser votre instance et de contrôler les accès. Lorsqu'il est activé, les utilisateurs doivent se connecter avant d'interagir avec Stib. Vous pouvez utiliser des comptes locaux ou connecter un fournisseur d'identité externe via OIDC Single Sign-On.

INFO

L'authentification est désactivée par défaut. Stib fonctionne directement sans aucune connexion — idéal pour un usage personnel ou local. Activez l'authentification uniquement lorsque vous devez partager votre instance avec d'autres personnes.

Fonctionnement de l'authentification

Lorsque l'authentification est activée :

  • Chaque requête API est vérifiée par un middleware d'authentification (sauf les routes publiques comme les health checks)
  • Les utilisateurs reçoivent un token JWT (HS256, expiration 24 heures) lors de la connexion
  • Le secret JWT est généré automatiquement au premier démarrage et stocké en base de données
  • Deux méthodes d'authentification sont disponibles : comptes locaux et OIDC SSO

Activer l'authentification

L'authentification se configure depuis la page Paramètres de l'interface web Stib.

Au premier lancement, Stib vous invite à créer un compte super administrateur (identifiant + mot de passe). Ce compte a un accès complet à tous les paramètres, y compris la configuration OIDC. Une fois créé, rendez-vous dans Paramètres → Authentification pour activer la connexion sur votre instance.

Variables d'environnement

VariableDescriptionDéfautRequis
STIB_SERVER_ORIGINURL publique de votre instance Stib (ex. https://stib.example.com). Utilisée pour construire l'URL de callback OIDC.http://localhost:50505Oui, pour OIDC

WARNING

STIB_SERVER_ORIGIN doit correspondre à l'URL que vos utilisateurs saisissent dans leur navigateur. Si elle est incorrecte, le callback OIDC échouera. Incluez le protocole et le port si non standard (ex. https://stib.example.com:8443).

Configuration OIDC SSO

Stib supporte tout fournisseur d'identité compatible OIDC. L'interface Paramètres inclut des presets pour les fournisseurs courants.

Fournisseurs supportés

FournisseurURL de l'émetteurNotes
Googlehttps://accounts.google.comFonctionne avec Google Workspace et les comptes personnels
Microsoft Entra IDhttps://login.microsoftonline.com/{tenant-id}/v2.0Nécessite votre ID de tenant Azure AD
KeycloakURL de votre realm KeycloakFournisseur d'identité auto-hébergé
PersonnaliséToute URL d'émetteur compatible OIDCDoit exposer /.well-known/openid-configuration

Paramètres requis

ParamètreDescription
URL de l'émetteur (Issuer URL)L'URL de base du fournisseur OIDC. Stib récupère le document de découverte depuis {issuer_url}/.well-known/openid-configuration.
Client IDL'identifiant client OAuth2 fourni lors de l'enregistrement de votre application chez le fournisseur.
Client SecretLe secret client OAuth2. Chiffré au repos avec AES-256-GCM à l'aide d'une clé dérivée du secret JWT.
ScopesLes scopes OIDC à demander. Par défaut : openid email profile.

Mise en place d'OIDC

WARNING

La configuration OIDC nécessite les privilèges super admin. Seul le compte super administrateur créé lors de la première configuration peut accéder à Paramètres → Configuration OIDC.

  1. Enregistrez une application chez votre fournisseur d'identité
  2. Définissez l'URI de redirection : {STIB_SERVER_ORIGIN}/api/auth/oidc/callback
  3. Copiez le Client ID et le Client Secret
  4. Dans Stib, allez dans Paramètres → Configuration OIDC
  5. Sélectionnez votre fournisseur dans le menu déroulant (ou choisissez Personnalisé)
  6. Renseignez l'URL de l'émetteur, le Client ID, le Client Secret et les Scopes
  7. Cliquez sur Tester la connexion pour valider la configuration
  8. Activez Activer OIDC et cliquez sur Enregistrer

TIP

L'URI de redirection est affichée dans le panneau de configuration OIDC avec un bouton de copie (ex. https://stib.example.com/api/auth/oidc/callback). Utilisez cette valeur exacte lors de l'enregistrement de votre application chez le fournisseur d'identité.

Guides par fournisseur

Google

  1. Accédez à la Google Cloud ConsoleAPIs & Services → Credentials
  2. Créez un OAuth 2.0 Client ID (Application Web)
  3. Ajoutez l'URI de redirection : {STIB_SERVER_ORIGIN}/api/auth/oidc/callback
  4. Dans Stib, sélectionnez Google dans le menu déroulant
  5. L'URL de l'émetteur est pré-remplie : https://accounts.google.com
  6. Saisissez votre Client ID et Client Secret

Microsoft Entra ID

  1. Accédez au Portail AzureMicrosoft Entra ID → Inscriptions d'applications
  2. Inscrivez une nouvelle application avec l'URI de redirection : {STIB_SERVER_ORIGIN}/api/auth/oidc/callback
  3. Sous Certificats et secrets, créez un nouveau secret client
  4. Dans Stib, sélectionnez Microsoft Entra ID dans le menu déroulant
  5. Saisissez votre ID de tenant — l'URL de l'émetteur est construite automatiquement : https://login.microsoftonline.com/{tenant-id}/v2.0
  6. Saisissez votre Client ID et Client Secret

INFO

Trouvez votre ID de tenant dans le Portail Azure sous Microsoft Entra ID → Vue d'ensemble. C'est la valeur « ID d'annuaire (tenant) ».

Keycloak

  1. Dans l'administration Keycloak, créez un nouveau Client dans votre realm
  2. Activez Authentification du client (Client authentication)
  3. Définissez l'URI de redirection valide : {STIB_SERVER_ORIGIN}/api/auth/oidc/callback
  4. Dans Stib, sélectionnez Keycloak dans le menu déroulant
  5. Saisissez votre URL d'émetteur : https://votre-keycloak.example.com/realms/{nom-du-realm}
  6. Saisissez votre Client ID et Client Secret

Fournisseur personnalisé

Tout fournisseur compatible OIDC fonctionne avec Stib. Le fournisseur doit :

  • Exposer un document de découverte à {issuer_url}/.well-known/openid-configuration
  • Supporter le flux d'autorisation par code avec PKCE
  • Retourner un id_token contenant les claims sub, email, et optionnellement name et picture
  1. Dans Stib, sélectionnez Personnalisé dans le menu déroulant
  2. Saisissez l'URL de l'émetteur de votre fournisseur
  3. Saisissez votre Client ID et Client Secret
  4. Ajustez les scopes si votre fournisseur utilise des noms de scopes non standard

Fonctionnement de la connexion SSO

Lorsqu'OIDC est activé, la page de connexion affiche un bouton « Se connecter avec {Fournisseur} » à côté du formulaire de connexion local.

Flux de connexion

L'utilisateur clique sur « Se connecter avec Google »


┌─────────────────────────────┐
│  Serveur Stib               │
│  GET /api/auth/oidc         │
│  • Génère le verifier PKCE  │
│  • Génère le state (CSRF)   │
│  • Stocke les deux en mémoire│
│  • Redirige vers le fournisseur│
└──────────┬──────────────────┘
           │  Redirection 302

┌─────────────────────────────┐
│  Fournisseur d'identité     │
│  • L'utilisateur s'authentifie│
│  • L'utilisateur consent    │
│  • Redirige avec un code    │
└──────────┬──────────────────┘
           │  Redirection 302

┌─────────────────────────────┐
│  Serveur Stib               │
│  GET /api/auth/oidc/callback│
│  • Valide le state (CSRF)   │
│  • Échange le code contre   │
│    les tokens via PKCE      │
│  • Valide l'ID token        │
│  • Provisionne l'utilisateur│
│  • Émet un JWT Stib         │
│  • Redirige vers le frontend│
└─────────────────────────────┘

Validation du token

L'ID token reçu du fournisseur est validé sur :

  • Émetteur (issuer) — doit correspondre à l'URL de l'émetteur configurée
  • Audience — doit contenir le Client ID configuré
  • Expiration — le token ne doit pas être expiré

INFO

Stib ne vérifie pas la signature cryptographique de l'ID token via JWKS. Le token étant reçu directement du fournisseur d'identité via TLS (point de terminaison token), la couche de transport garantit l'authenticité.

Provisionnement des utilisateurs

Stib utilise le provisionnement Just-In-Time (JIT) — les comptes utilisateurs sont créés automatiquement lors de la première connexion SSO.

Première connexion

  1. Le serveur recherche l'utilisateur par le claim sub (subject) de l'ID token
  2. S'il n'est pas trouvé, il vérifie que l'email ne soit pas en conflit avec le compte super administrateur
  3. En l'absence de conflit, un nouvel utilisateur est créé avec :
    • Rôle : user
    • Fournisseur d'authentification : oidc
    • Nom et avatar issus des claims de l'ID token (name, picture)
  4. Les invitations de projet en attente correspondant à l'email de l'utilisateur sont automatiquement résolues

Connexions suivantes

À chaque connexion, le nom et l'avatar de l'utilisateur sont mis à jour depuis les derniers claims de l'ID token. Cela maintient les profils en synchronisation avec le fournisseur d'identité.

WARNING

Un utilisateur OIDC ne peut pas se connecter si son email correspond à celui du super administrateur. Le compte super administrateur est toujours un compte local.

SSO Mobile

L'application mobile Stib supporte le SSO via un flux de callback par deep link.

Flux de connexion mobile

  1. L'application mobile initie l'authentification : GET /api/auth/oidc?mobile_redirect=stib://auth/callback
  2. Le serveur redirige vers le fournisseur d'identité (même flux PKCE que le web)
  3. Après authentification réussie, le serveur redirige vers : stib://auth/callback?token={jwt}
  4. L'application mobile capture le deep link et stocke le token JWT

INFO

Le paramètre mobile_redirect doit utiliser le schéma stib://. Le serveur valide ceci pour prévenir les attaques de redirection ouverte.

Considérations de sécurité

PKCE (Proof Key for Code Exchange)

Stib utilise PKCE avec la méthode S256 pour tous les flux OIDC. Un code verifier et un challenge uniques sont générés pour chaque requête d'autorisation, empêchant les attaques d'interception du code d'autorisation même si un attaquant capture l'URL de callback.

Protection CSRF

Un paramètre state aléatoire est généré pour chaque requête d'autorisation. Le serveur valide le state lors du callback pour prévenir les attaques CSRF (Cross-Site Request Forgery). Les states expirent automatiquement après 10 minutes.

Chiffrement du client secret

Le client secret OIDC est chiffré au repos avec AES-256-GCM. La clé de chiffrement est dérivée du secret JWT interne (généré automatiquement, stocké en base de données) — ceci est séparé de STIB_ENCRYPTION_KEY, qui est utilisée pour les autres credentials comme les clés API Claude.

Dépannage

Erreurs OIDC courantes et leurs solutions :

Code d'erreurSignificationSolution
OIDC_NOT_ENABLEDLa configuration OIDC existe mais n'est pas activéeAllez dans Paramètres → Configuration OIDC et activez OIDC
OIDC_CONFIG_INVALIDDes champs de configuration requis sont manquantsVérifiez que l'URL de l'émetteur, le Client ID et le Client Secret sont tous renseignés
OIDC_STATE_INVALIDLe paramètre state est manquant ou expiréRéessayez de vous connecter — les states expirent après 10 minutes. Vérifiez que votre navigateur accepte les cookies.
OIDC_TOKEN_INVALIDL'ID token du fournisseur est malformé ou invalideVérifiez la configuration de votre fournisseur. Assurez-vous que le Client ID correspond.
OIDC_EMAIL_CONFLICTL'email de l'utilisateur SSO correspond à l'email du super administrateurLe compte super administrateur est toujours local. Utilisez un email différent pour le SSO.

TIP

Utilisez le bouton Tester la connexion dans les paramètres OIDC pour valider votre configuration avant d'activer le SSO. Il vérifie que le document de découverte et le point de terminaison JWKS sont accessibles.

Prochaines étapes

TIP

Maintenant que l'authentification est configurée, consultez ces guides connexes :

  • Configuration — Configuration générale du serveur et variables d'environnement
  • Identifiants & Scripts — Gérer les credentials chiffrés et les sauvegardes de base de données
  • Référence API — Points de terminaison API et en-têtes d'authentification