Connexions sociales Auth0 : Google, GitHub, LinkedIn — configuration et pièges
Configurer Google, GitHub, Apple, LinkedIn et Facebook comme connexions sociales dans Auth0. Scopes, consentement, account linking et gestion des refresh tokens sociaux.
Par Auth0.Expert · 2025-04-01 · 10 min de lecture
Connexions sociales Auth0 : guide complet
TL;DR
Auth0 supporte 50+ fournisseurs sociaux (Google, GitHub, Apple, LinkedIn...). Ce guide couvre la configuration, les scopes nécessaires, le traitement des refresh tokens et l'account linking.
---
Google OAuth2
Cette section présente les étapes pour connecter Google comme fournisseur OAuth2 dans Auth0.
Configuration dans Auth0
Ce bloc JSON représente la configuration requise à entrer dans Auth0 pour connecter Google, incluant les identifiants client et les scopes d'autorisation.
{
"client_id": "YOUR_GOOGLE_CLIENT_ID.apps.googleusercontent.com",
"client_secret": "YOUR_GOOGLE_CLIENT_SECRET",
"scope": "email profile",
"allowed_audiences": []
}
Créer les credentials Google
Voici les étapes à suivre dans la Google Cloud Console pour générer vos identifiants OAuth2 nécessaires à Auth0.
- Google Cloud Console → APIs & Services → Credentials
- Create OAuth 2.0 Client ID
- Type: Web application
- Authorized redirect URIs:
https://YOUR_DOMAIN.auth0.com/login/callback
Scopes Google étendus
Ce bloc montre comment ajouter des scopes Google supplémentaires pour demander des accès à Google Calendar, Drive, etc.
// Pour accès à Google Calendar, Drive, etc.
{
"scope": "email profile https://www.googleapis.com/auth/calendar.readonly"
}
⚠️ Les scopes étendus nécessitent une vérification Google (OAuth Consent Screen → Production).
---
GitHub OAuth2
Voici comment configurer l'authentification via GitHub dans Auth0. Les scopes définissent les droits d'accès demandés.
{
"client_id": "YOUR_GITHUB_CLIENT_ID",
"client_secret": "YOUR_GITHUB_CLIENT_SECRET",
"scope": "user:email read:user"
}
GitHub ne retourne pas toujours l’email d’un utilisateur, surtout si l'email est privé. Ce code permet de le récupérer via l’API GitHub lors du post-login.
// Action Post Login pour GitHub
exports.onExecutePostLogin = async (event, api) => {
if (event.connection.strategy !== 'github') return;
if (!event.user.email) {
// Appeler l'API GitHub pour récupérer l'email privé
const token = event.secrets.GITHUB_ACCESS_TOKEN;
const res = await fetch('https://api.github.com/user/emails', {
headers: { Authorization: `token ${event.identity?.access_token}` }
});
const emails = await res.json();
const primary = emails.find(e => e.primary)?.email;
if (primary) {
api.user.setUserMetadata('github_email', primary);
}
}
};
Ce script effectue un appel API pour compléter automatiquement les emails manquants dans Auth0 lors de la connexion GitHub.
---
Apple Sign In
Dans cette partie, découvrez la configuration Apple, qui demande des spécificités de sécurité et un stockage immédiat des informations.
{
"client_id": "com.yourapp.service", // Service ID Apple, pas le Bundle ID
"team_id": "TEAMID10PL",
"key_id": "AUTHKEY001",
"private_key": "-----BEGIN PRIVATE KEY-----
...",
"scope": "name email"
}
Apple ne fournit le nom et l’email de l'utilisateur qu’à la toute première connexion. Il est donc essentiel de capturer ces données dans user_metadata dès le départ.
exports.onExecutePostLogin = async (event, api) => {
if (event.connection.strategy !== 'apple') return;
const { given_name, family_name } = event.user;
if (given_name && !event.user.user_metadata?.name_stored) {
api.user.setUserMetadata('given_name', given_name);
api.user.setUserMetadata('family_name', family_name);
api.user.setUserMetadata('name_stored', true);
}
};
Ce code garantit que les données prénom et nom issues d’Apple sont bien sauvegardées dans Auth0 au moment de la première connexion.
---
Account Linking : fusionner les identités
Voici comment automatiser la détection et la fusion de deux comptes utilisateur utilisant la même adresse email sur des providers différents.
// Action Post Login : détecter et lier les comptes avec le même email
exports.onExecutePostLogin = async (event, api) => {
if (event.stats.logins_count > 1) return; // Déjà connecté avant
const ManagementClient = require('auth0').ManagementClient;
const mgmt = new ManagementClient({
domain: event.secrets.AUTH0_DOMAIN,
clientId: event.secrets.AUTH0_CLIENT_ID,
clientSecret: event.secrets.AUTH0_CLIENT_SECRET,
});
const users = await mgmt.getUsersByEmail(event.user.email);
if (users.length > 1) {
// Lier l'identité actuelle à l'utilisateur principal
const primaryUser = users.find(u => u.user_id !== event.user.user_id);
await mgmt.linkUsers(primaryUser.user_id, {
user_id: event.user.user_id.split('|')[1],
provider: event.user.user_id.split('|')[0],
});
api.authentication.setPrimaryUser(primaryUser.user_id);
}
};
Ce script relie automatiquement plusieurs comptes Auth0 ayant le même email, permettant une expérience utilisateur unifiée.
---
Tableau des fournisseurs sociaux
Voici un récapitulatif des principaux fournisseurs sociaux, des scopes minimaux, de la gestion des emails et du support refresh token.
| Fournisseur | Scopes min | Email garanti | Refresh Token | |-------------|-----------|---------------|---------------| | Google | email, profile | ✅ | Offline access | | GitHub | user:email | ⚠️ Si email public | ❌ | | Apple | email | ✅ (1ère fois) | ❌ | | LinkedIn | openid, email | ✅ | ❌ | | Facebook | email | ✅ | 60 jours | | Microsoft | openid, email | ✅ | offline_access | | Twitter/X | tweet.read, users.read | ❌ | ❌ |
---
> 🔐 Configuration SSO enterprise : nous configurons vos connexions sociales et entreprise avec account linking et provisioning automatique en 48h.
Autres articles
- Auth0 et OAuth 2.0 : architecture complète pour comprendre les flux d'autorisation
- OpenID Connect sur Auth0 : ID Token, UserInfo et discovery endpoint expliqués
- Configurer SAML 2.0 avec Auth0 : guide complet pour l'entreprise
- Migrer des Rules vers les Auth0 Actions : guide pas à pas
- Architecture multi-tenant avec Auth0 : organisations, isolation et bonnes pratiques
- Validation des JWT Auth0 : RS256 vs HS256, JWKS et pièges communs
- Concevoir son architecture de tenants Auth0 : dev, staging, prod
- Configurer un domaine personnalisé Auth0 : login.votredomaine.com étape par étape