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 :
- 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 :
- 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 :
- 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) :
- 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.