OpenID Connect (OIDC)
Ajouter l’identité par-dessus OAuth.
OpenID Connect (OIDC) est une leçon Cyber Security Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cyber Security Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cyber Security Academy comprend 4 leçons au total.
Pourquoi OIDC existe
OpenID Connect est une fine couche d’identité construite au-dessus d’OAuth 2.0. OAuth répond à la question que peut faire cette application ; OIDC répond à la question qui est l’utilisateur.
- Il normalise la manière dont les clients authentifient les utilisateurs et reçoivent des revendications d’identité vérifiées.
- Il introduit le jeton ID comme assertion d’authentification signée cryptographiquement.
Avant OIDC, les développeurs utilisaient à tort les jetons d’accès OAuth pour la connexion, ce qui entraînait des failles de type mandataire confus et des problèmes d’usurpation d’identité.
Le jeton ID (un JWT)
L’élément caractéristique d’OIDC est le jeton ID, un JWT signé qui décrit l’événement d’authentification.
- Il contient des revendications sur l’identité de la personne connectée et sur le moment de sa connexion.
- Il est destiné au client, qui doit le traiter, et non au serveur de ressources.
N’envoyez jamais un jeton ID à une API comme identifiant d’accès et n’en acceptez jamais un sans valider sa signature et ses revendications.
Header.Payload.Signature
{
"iss": "https://idp.example",
"sub": "248289761001",
"aud": "app123",
"exp": 1718000000,
"iat": 1717996400,
"nonce": "n-abc"
}Revendications essentielles des jetons ID
Valider un jeton ID signifie vérifier des revendications précises, et pas seulement la signature.
- L’émetteur iss doit correspondre à l’IdP attendu.
- L’audience aud doit contenir votre client_id.
- Le jeton exp / iat doit ne pas être expiré et avoir été émis récemment.
- sub est l’identifiant stable et unique de l’utilisateur.
- nonce doit correspondre à la valeur envoyée par votre client.
Le flux d’authentification OIDC
OIDC reprend le flux de code d’autorisation, mais ajoute la portée openid et un nonce.
- Le client demande la portée
openid(ainsi que, facultativement,profileetemail). - Le point de terminaison des jetons renvoie un jeton ID en même temps que le jeton d’accès.
- Le
noncelie le jeton ID à la requête d’origine, ce qui empêche le rejeu.
GET /authorize?response_type=code
&scope=openid profile email
&client_id=app123
&redirect_uri=https://app.example/cb
&state=xyz&nonce=n-abcValidation de la signature avec JWKS
Les fournisseurs OIDC publient leurs clés de signature sur un point de terminaison JWKS, accessible via le document de configuration bien connu.
- Récupérez les clés depuis
jwks_uriet faites correspondre l’en-têtekiddu jeton. - Vérifiez la signature avec l’algorithme asymétrique indiqué (RS256, ES256).
Rejetez l’algorithme none et ne faites jamais confiance à une valeur d’algorithme fournie uniquement par le jeton.
GET /.well-known/openid-configuration
-> { "jwks_uri": "https://idp.example/jwks", ... }
GET /jwks
-> { "keys": [ { "kid": "k1", "kty": "RSA", ... } ] }Le nonce protège contre le rejeu
Le nonce joue pour les jetons ID le même rôle que state pour la redirection : c’est une valeur à usage unique qui lie la réponse à la requête.
- Le client génère un nonce aléatoire et le stocke dans la session.
- L’IdP le répercute dans le jeton ID.
- À sa réception, le client vérifie que le nonce correspond et n’a pas déjà été utilisé.
Cela bloque le rejeu d’un jeton et l’injection d’un jeton émis pour une autre session.
Le point de terminaison UserInfo
Pour obtenir des données de profil supplémentaires au-delà du jeton ID, OIDC définit le point de terminaison UserInfo.
- Le client l’appelle avec le jeton d’accès, et non avec le jeton ID.
- Il renvoie des revendications telles que le nom, l’adresse e-mail et la photo du sujet authentifié.
Faites toujours correspondre le sub renvoyé au sub du jeton ID afin d’empêcher la substitution de revendications.
GET /userinfo
Authorization: Bearer <access_token>
-> { "sub": "248289761001", "email": "u@example.com" }Découverte et métadonnées
OIDC normalise la découverte afin que les clients puissent configurer automatiquement les points de terminaison et les fonctionnalités prises en charge.
- Le document
/.well-known/openid-configurationrépertorie les points de terminaison, les portées prises en charge et les algorithmes. - Épinglez ou validez l’émetteur ; ne suivez pas aveuglément la découverte depuis un hôte contrôlé par un attaquant.
La découverte simplifie l’intégration, mais l’émetteur reste une ancre de confiance que vous devez vérifier.
Déconnexion par canal frontal ou dorsal
La fin des sessions entre applications fédérées est gérée par les spécifications de déconnexion OIDC.
- La déconnexion par canal frontal utilise les redirections du navigateur et des cadres intégrés pour déconnecter chaque partie de confiance.
- La déconnexion par canal dorsal envoie des jetons de déconnexion de serveur à serveur ; elle est plus fiable, mais nécessite des points de terminaison.
Sans déconnexion coordonnée, un utilisateur peut se déconnecter d’une application tout en restant connecté aux autres, ce qui constitue un véritable risque pour la gestion des sessions.
Pièges courants d’OIDC
Les erreurs liées à l’identité proviennent souvent de l’omission d’étapes de validation.
- Accepter des jetons sans vérifier aud (jeton destiné à un autre client).
- Ignorer iss, ce qui permet l’usurpation d’un IdP.
- Ne pas valider la signature ou accepter
alg: none. - Confondre les jetons ID et les jetons d’accès.
- Omettre la vérification du nonce, ce qui permet le rejeu.
Validation checklist:
[ ] iss == expected
[ ] aud contains client_id
[ ] exp not passed, iat sane
[ ] signature verified via JWKS
[ ] nonce matches sessionOIDC ou OAuth seul pour la connexion
Si votre objectif est la connexion, utilisez OIDC, et non OAuth seul.
- Les jetons d’accès OAuth sont opaques pour le client et ne prouvent rien concernant l’identité.
- Un jeton d’accès peut être valide pour un autre utilisateur ou une autre application, ce qui permet l’usurpation d’identité s’il est utilisé pour la connexion.
- Les jetons ID OIDC sont explicitement des assertions d’identité liées à une audience.
Cette distinction empêche la faille classique d’authentification du mandataire confus.
Vérification rapide : validation d’un jeton ID
Choisissez l’étape de validation la plus importante pour une partie de confiance qui traite un jeton ID.
Récapitulatif : OpenID Connect
Points essentiels :
- OIDC ajoute une couche d’identité à OAuth 2.0 ; le jeton ID est un JWT signé qui atteste l’authentification.
- Validez toujours iss, aud, exp, signature (via JWKS) et nonce.
- Les jetons ID sont destinés au client ; les jetons d’accès sont destinés aux API : n’intervertissez jamais leurs rôles.
- Utilisez
noncecontre le rejeu etstatecontre le CSRF. - Utilisez OIDC, et non OAuth seul, lorsque vous devez authentifier des utilisateurs.
Questions Fréquemment Posées
La leçon « OpenID Connect (OIDC) » est-elle gratuite ?
Oui — le texte complet de « OpenID Connect (OIDC) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cyber Security Academy, passe à CoddyKit PRO. Le cours Cyber Security Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « OpenID Connect (OIDC) » ?
Ajouter l’identité par-dessus OAuth. Tu pratiques Cyber Security Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cyber Security Academy ?
Aucune expérience préalable n'est requise. Cyber Security Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « OpenID Connect (OIDC) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cyber Security Academy ?
Oui. Chaque leçon Cyber Security Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Flux OAuth 2.0
- OpenID Connect (OIDC)
- SAML et fédération
- Attaques contre les jetons et renforcement