OpenID Connect (OIDC)
Protocole d'authentification moderne basé sur OAuth 2.0, permettant aux applications de vérifier l'identité des utilisateurs via un fournisseur tiers.
Mis à jour le 12 janvier 2026
OpenID Connect (OIDC) est une couche d'identité construite au-dessus du protocole OAuth 2.0, conçue pour standardiser l'authentification des utilisateurs sur le web et les applications mobiles. Contrairement à OAuth 2.0 qui gère uniquement l'autorisation, OIDC ajoute une dimension d'authentification en fournissant des informations vérifiables sur l'identité de l'utilisateur. Cette technologie permet le Single Sign-On (SSO) et élimine le besoin de gérer des mots de passe multiples, tout en offrant une sécurité renforcée grâce à des tokens cryptographiques.
Fondements techniques
- Extension d'OAuth 2.0 ajoutant un ID Token JWT signé contenant les informations d'identité de l'utilisateur
- Trois flux principaux : Authorization Code Flow (le plus sécurisé), Implicit Flow (déprécié), et Hybrid Flow
- Utilisation de l'endpoint UserInfo pour récupérer des claims (attributs) supplémentaires sur l'utilisateur authentifié
- Support de la découverte automatique via des métadonnées JSON exposées par les fournisseurs d'identité
Avantages stratégiques
- Expérience utilisateur simplifiée avec authentification unique (SSO) sur plusieurs applications
- Réduction des risques de sécurité en déléguant l'authentification à des fournisseurs spécialisés (Google, Microsoft, Auth0)
- Standardisation interopérable permettant de changer de fournisseur d'identité sans refonte majeure
- Conformité facilitée avec les réglementations (RGPD, SOC2) grâce à la centralisation de la gestion des identités
- Réduction des coûts de développement et maintenance liés à la gestion des mots de passe et des sessions
Exemple de flux d'authentification
import { AuthorizationCode } from 'simple-oauth2';
// Configuration du client OIDC
const config = {
client: {
id: process.env.OIDC_CLIENT_ID,
secret: process.env.OIDC_CLIENT_SECRET
},
auth: {
tokenHost: 'https://accounts.provider.com',
authorizePath: '/oauth2/authorize',
tokenPath: '/oauth2/token'
}
};
const client = new AuthorizationCode(config);
// Génération de l'URL d'authentification
const authorizationUri = client.authorizeURL({
redirect_uri: 'https://myapp.com/callback',
scope: 'openid profile email',
state: generateRandomState() // Protection CSRF
});
// Traitement du callback après authentification
async function handleCallback(code: string) {
const tokenParams = {
code,
redirect_uri: 'https://myapp.com/callback'
};
// Échange du code contre les tokens
const accessToken = await client.getToken(tokenParams);
// Décodage de l'ID Token (JWT)
const idToken = decodeJWT(accessToken.token.id_token);
// Extraction des informations utilisateur
const userInfo = {
sub: idToken.sub, // Identifiant unique
email: idToken.email,
name: idToken.name,
email_verified: idToken.email_verified
};
return userInfo;
}Mise en œuvre dans votre infrastructure
- Choisir un fournisseur d'identité certifié (Auth0, Okta, Keycloak, Google Identity) en fonction de vos besoins de scalabilité et conformité
- Enregistrer votre application auprès du fournisseur pour obtenir client_id, client_secret et configurer les redirect URIs autorisés
- Implémenter le flux Authorization Code avec PKCE (Proof Key for Code Exchange) pour les applications publiques et SPAs
- Valider systématiquement les ID Tokens : vérifier la signature JWT, l'émetteur (iss), l'audience (aud) et l'expiration (exp)
- Stocker les tokens de manière sécurisée (HttpOnly cookies pour les refresh tokens, jamais en localStorage)
- Configurer la gestion des sessions côté serveur avec rotation des refresh tokens et timeout appropriés
- Mettre en place une stratégie de logout incluant la révocation des tokens et le nettoyage des sessions côté fournisseur
Conseil de sécurité
Toujours utiliser le flux Authorization Code avec PKCE pour les applications frontend (SPA, mobile). Ne jamais exposer le client_secret côté client. Pour les applications backend, préférez l'utilisation de certificats client plutôt que des secrets partagés pour une sécurité maximale. Implémentez également la validation du claim 'nonce' pour prévenir les attaques par rejeu.
Écosystème et outils
- Fournisseurs d'identité : Auth0, Okta, Keycloak, Google Identity Platform, Azure AD, AWS Cognito
- Bibliothèques clientes : oidc-client-ts, Passport.js (Node), Spring Security (Java), NextAuth.js (React/Next)
- Outils de test : oidcdebugger.com, jwt.io pour le décodage des tokens, Postman pour simuler les flux OAuth
- Solutions self-hosted : Keycloak, Ory Hydra, IdentityServer (C#) pour garder le contrôle total de vos données
OpenID Connect représente aujourd'hui le standard de facto pour l'authentification moderne, adopté par les plus grandes plateformes technologiques. Son implémentation permet non seulement de réduire significativement les coûts de développement et les risques de sécurité, mais aussi d'améliorer radicalement l'expérience utilisateur en éliminant la friction liée à la gestion de multiples identifiants. Pour les entreprises, OIDC facilite également la mise en conformité réglementaire et ouvre la voie vers des architectures zero-trust et des stratégies d'identité décentralisée.
