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

  1. Connectez-vous à /admin/settings
  2. Activez le toggle OAuth / SSO activé
  3. Renseignez l'URL de base des callbacks (ex. https://gitrust.votre-domaine.com)
  4. Pour chaque fournisseur souhaité, activez le toggle et renseignez Client ID et Client Secret
  5. Cliquez Enregistrer
  6. Redémarrez le service : sudo systemctl restart gitrust

Configuration OAuth dans /admin/settings


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

  1. Ouvrez console.cloud.google.comAPIs & ServicesCredentials
  2. Cliquez Create CredentialsOAuth 2.0 Client ID
  3. Type : Web application
  4. Ajoutez l'URI de redirection autorisée :
    https://gitrust.votre-domaine.com/api/v1/auth/oauth/google/callback
    
  5. 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

  1. Ouvrez github.com/settings/developersOAuth AppsNew OAuth App
  2. Authorization callback URL :
    https://gitrust.votre-domaine.com/api/v1/auth/oauth/github/callback
    
  3. 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

  1. Ouvrez discord.com/developers/applicationsNew Application
  2. Onglet OAuth2Redirects → ajoutez :
    https://gitrust.votre-domaine.com/api/v1/auth/oauth/discord/callback
    
  3. 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

  1. Ouvrez portal.azure.comAzure Active DirectoryApp registrationsNew registration
  2. Redirect URI (Web) :
    https://gitrust.votre-domaine.com/api/v1/auth/oauth/microsoft/callback
    
  3. 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.


Pour aller plus loin