Configurer l'authentification OAuth (Google, GitHub, Discord, Microsoft)
À qui s'adresse cette page
Administrateurs qui souhaitent permettre à leurs utilisateurs de se connecter via un fournisseur OAuth externe plutôt que (ou en plus de) le couple identifiant/mot de passe local.
Principe
OAuth est le seul sous-système hybride de gitrust : la configuration peut venir soit de la base de données (via /admin/settings), soit du fichier .env en fallback. La priorité est toujours à la base de données.
flowchart LR
A[OAuthConfig::load au démarrage] --> B{Valeur en DB ?}
B -->|Oui| C[Utiliser valeur DB]
B -->|Non| D[Fallback .env]
D --> E[Valeur codée en dur si absent]
C --> F[OAuthConfig en mémoire]
E --> F
F --> G[Arc — non rechargé à chaud]
Conséquence : toute modification de la configuration OAuth (via l'UI ou via
.env) nécessite un redémarrage pour être prise en compte.
Méthode recommandée : via l'interface /admin/settings
C'est la méthode la plus simple. Les secrets sont chiffrés en base (AES-256-GCM).
- Connectez-vous à
/admin/settings - Activez le toggle OAuth / SSO activé
- Renseignez l'URL de base des callbacks (ex.
https://gitrust.votre-domaine.com) - Pour chaque fournisseur souhaité, activez le toggle et renseignez
Client IDetClient Secret - Cliquez Enregistrer
- Redémarrez le service :
sudo systemctl restart gitrust

Méthode alternative : via les variables .env
Utile pour le provisionnement automatisé (Ansible, cloud-init) ou pour définir les valeurs au premier démarrage.
# Activation globale OAUTH_ENABLED=true OAUTH_REDIRECT_BASE_URL=https://gitrust.votre-domaine.com # Clé de chiffrement des secrets OAuth en base (AES-256-GCM) # Générer avec : openssl rand -hex 32 OAUTH_ENCRYPTION_KEY=REMPLACER_PAR_32_BYTES_HEX
Ces variables ne s'appliquent qu'en l'absence de valeur en base de données.
Configurer Google OAuth
1. Créer les identifiants dans Google Cloud Console
- Ouvrez console.cloud.google.com → APIs & Services → Credentials
- Cliquez Create Credentials → OAuth 2.0 Client ID
- Type : Web application
- Ajoutez l'URI de redirection autorisée :
https://gitrust.votre-domaine.com/api/v1/auth/oauth/google/callback - Notez le Client ID et le Client Secret
2. Configurer dans gitrust
Via .env :
OAUTH_GOOGLE_ENABLED=true OAUTH_GOOGLE_CLIENT_ID=123456789-xxxxxxxxxxxx.apps.googleusercontent.com OAUTH_GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxxxxx
Via /admin/settings : activez « Google » et renseignez les mêmes valeurs.
Scopes utilisés : openid, email, profile (read-only, pas d'accès au compte Google).
Configurer GitHub OAuth
1. Créer l'application OAuth sur GitHub
- Ouvrez github.com/settings/developers → OAuth Apps → New OAuth App
- Authorization callback URL :
https://gitrust.votre-domaine.com/api/v1/auth/oauth/github/callback - Notez le Client ID et générez un Client Secret
2. Configurer dans gitrust
OAUTH_GITHUB_ENABLED=true OAUTH_GITHUB_CLIENT_ID=Iv1.xxxxxxxxxxxxxxxx OAUTH_GITHUB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Scopes utilisés : read:user, user:email.
Configurer Discord OAuth
1. Créer l'application sur Discord Developer Portal
- Ouvrez discord.com/developers/applications → New Application
- Onglet OAuth2 → Redirects → ajoutez :
https://gitrust.votre-domaine.com/api/v1/auth/oauth/discord/callback - Notez le Client ID et le Client Secret
2. Configurer dans gitrust
OAUTH_DISCORD_ENABLED=true OAUTH_DISCORD_CLIENT_ID=123456789012345678 OAUTH_DISCORD_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Configurer Microsoft / Azure AD
1. Créer l'application dans Azure
- Ouvrez portal.azure.com → Azure Active Directory → App registrations → New registration
- Redirect URI (Web) :
https://gitrust.votre-domaine.com/api/v1/auth/oauth/microsoft/callback - Notez le Application (client) ID et créez un Client Secret dans Certificates & Secrets
2. Configurer dans gitrust
OAUTH_MICROSOFT_ENABLED=true OAUTH_MICROSOFT_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx OAUTH_MICROSOFT_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # "common" = comptes personnels et professionnels # Remplacer par le GUID du tenant pour restreindre à votre organisation OAUTH_MICROSOFT_TENANT=common
Comportement lors de la connexion OAuth
| Scénario | Comportement par défaut |
|---|---|
| Premier login OAuth, adresse e-mail inconnue | Compte créé automatiquement (oauth_auto_register=true) |
| Premier login OAuth, adresse e-mail déjà en base | Compte lié au compte existant (oauth_link_existing_account=true) |
| Login OAuth, compte désactivé par l'admin | Connexion refusée |
Ces comportements sont configurables dans /admin/settings (paramètres oauth_auto_register et oauth_link_existing_account).
Vérification après activation
# Redémarrer le service sudo systemctl restart gitrust # Vérifier les logs de démarrage sudo journalctl -u gitrust -n 30 --no-pager | grep -i oauth
Ouvrez une fenêtre de navigation privée et accédez à /login : les boutons OAuth activés doivent apparaître sous le formulaire classique.
GitRust