Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ils sont partout, tu ne les vois jamais - Bienv...

Avatar for Richard Boilley Richard Boilley
March 16, 2026
0

Ils sont partout, tu ne les vois jamais - Bienvenue dans le monde des tokens

À chaque connexion, autorisation d’application ou session persistante, un token agit en coulisses. En 20 minutes, Richard décortiquera ces jetons numériques : leur origine, leur rôle et les protocoles qui les régissent.

Avatar for Richard Boilley

Richard Boilley

March 16, 2026

Transcript

  1. Ils sont partout, tu ne les vois jamais Bienvenue dans

    le monde des tokens Richard BOILLEY Meetup BEST Bordeaux 2026
  2. Qui suis-je ? Richard BOILLEY Ingénieur Backend Node.js Pratiquant de

    muscu et course à pied 🏋️‍♂️🏃 Mémoire de fin d’études sur OAuth 2.0 & OIDC Démystifier les Tokens 2
  3. Les apps qui demandaient vos credentials Trouver ses amis Email

    credentials Client Twitter populaire Twitter credentials Agrégateur de comptes bancaires Bank credentials Démystifier les Tokens 6
  4. Problème 1 : Pas de granularité Démystifier les Tokens 👤

    Utilisateur Yelp Gmail 👥 Contacts ✓ ✉️ Lire les emails ✓ 📤 Envoyer des emails ✓ 📎 Pièces jointes ✓ 🗑️ Supprimer ✓ 7
  5. Problème 2 : Révocation impossible Démystifier les Tokens TweetDeck Seesmic

    Twitterrific 👤 Utilisateur password update 🔑 Twitter ❌ ❌ ❌ 8
  6. Problème 3 : Confiance aveugle & stockage 👤 Utilisateur 🤞

    "J'espère qu'ils sont honnêtes..." 🗄️ Base de données de l'app user: "[email protected]" pass: "MonMotDePasse123" 😱 Stocké en clair ! Démystifier les Tokens 9
  7. Token : un mot, une histoire Étymologie : vieil anglais

    "tācn" (signe, symbole) Définition : Un objet qui représente autre chose 🎟️ Ticket de cinéma Droit d'entrée 🔑 Badge d'accès Droit d'entrer 🛒 Jeton de caddie Vaut une pièce 🎰 Jeton de casino Valeur monétaire Token numérique → Représente des accès Démystifier les Tokens 11
  8. Avant la standardisation… Chaque géant tech avait sa propre solution

    FlickrAuth 2005 AuthSub 2006 BBAuth 2006 FB Connect 2008 4 implémentations différentes ! Démystifier les Tokens 12
  9. Avant la standardisation… Blaine Cook Lead Developer Twitter Lance la

    rédaction d'un nouveau standard ouvert pour la délégation d'accès OAuth 2007 Première publication OAuth 1.0 2010 RFC 5849 OAuthcalypse 2010 Twitter impose OAuth OAuth 2.0 2012 RFC 6749 OAuth 2.1 2025 Draft Démystifier les Tokens 13
  10. Les 4 entités d’OAuth 2.0 Démystifier les Tokens 👤 Resource

    Owner Resource Server 🔐 Authorization Server Client 15
  11. Scopes et consentements Démystifier les Tokens 👤 Resource Owner RS

    👤 Bénéficiaires ✗ 🏦 Comptes ✗ 💰 Soldes ✓ 📊 Transactions ✓ 🔐 Authorization Server Client Demander scope Demander consentement 16
  12. Révocation des accès Démystifier les Tokens 👤 Resource Owner Resource

    Server 🔐 Authorization Server Client Révoquer l'accès Invalider token ❌ Accès refusé 17
  13. Les Grant Types Comment l'application obtient-elle un token ? 🔐

    Authorization Code Recommandé + PKCE obligatoire (OAuth 2.1) Apps web, mobile, SPA Démystifier les Tokens 🤖 Client Credentials Recommandé Machine-to-Machine API → API, microservices 📺 Device Code Cas spécifiques Appareils sans navigateur/clavier Smart TV, IoT, CLI ⚡ Implicit Déprécié Token direct dans l'URL Vulnérable : historique, Referer, XSS 🔑 Resource Owner Password Déprécié L'app collecte le mot de passe Viole le principe OAuth 19
  14. Canaux de communication Deux canaux de communication dans OAuth Démystifier

    les Tokens Navigateur 🔐 Authorization Server Backend Front Channel Redirections navigateur Back Channel Requêtes serveur à serveur 20
  15. Authorization Code Flow Le flow le plus sécurisé et recommandé

    Démystifier les Tokens 👤 User 🌐 FRONT CHANNEL Client 🔒 BACK CHANNEL Backend 🔐 Auth Server 1. Utiliser 2. login + consentement 3. Code 4. Déclencher 4. Code + Secret 5. Access Token 21
  16. AuthZ vs AuthN 🔑 Autorisation "Qu'as-tu le droit de faire

    ?" Vérifier les permissions 🆔 Authentification "Qui es-tu ?" Vérifier l'identité Démystifier les Tokens 23
  17. Le cauchemar du login maison Implémenter son propre système d'authentification

    🗄️ Stocker les credentials de manière sécurisée 📧 Gérer la vérification d’email 🔄 Implémenter "Mot de passe oublié" 🛡️ Protéger contre les attaques 📱 Supporter l’authentification multi-facteurs (MFA) 🔍 Auditer et maintenir la conformité (RGPD, etc.) Beaucoup de responsabilités... et de risques ! Démystifier les Tokens 24
  18. OpenID Connect — Qui es-tu ? OIDC : OAuth 2.0

    + Identité Créé en 2014 — Couche d'AUTHENTIFICATION 🎫 Access Token 🆔 ID Token Démystifier les Tokens 26 OAuth 2.0 — Qu'as-tu le droit de faire ?
  19. JWT : JSON Web Token HEADER.PAYLOAD.SIGNATURE eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhdXRoLmJhbmsuY29tIiwiY2xpZW50X2lkIjoiYmFua2luX2FwcCIsImF 1ZCI6ImFwaS5iYW5rLmNvbSIsInNjb3BlIjoiYWNjb3VudHMiLCJleHAiOjE3MzU2ODk2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk 6yJV_adQssw5c Header

    Algorithme Payload Claims (données) Signature Intégrité Démystifier les Tokens { "alg": "RS256", "typ": "JWT" } { "iss": "auth.bank.com", "client_id": "bankin_app", "aud": "api.bank.com", "scope": "accounts", "exp": 1735689600 } RSA-SHA256( header + payload, privateKey ) 29
  20. JWT : Avantages Qu'est-ce que ça apporte ? ✅ Auto-suffisant

    Self-contained ✅ Vérifiable Sans base de données ✅ Portable Header HTTP, URL, cookie... Démystifier les Tokens 30
  21. La recette des tokens modernes + Démystifier les Tokens OAuth

    2.0 Délégation d'accès OIDC Couche identité JWT Format universel header.payload.signature Access Token ID Token 32
  22. Ressources jwt.io Debugger et décoder des JWT oauth.net/2 Documentation OAuth

    2.0 openid.net/connect Spécifications OIDC "OAuth 2.0 Simplified" Aaron Parecki Démystifier les Tokens 34
  23. Annexe : Les Endpoints OAuth 2.0 Points d'entrée définis par

    le protocole AUTHORIZATION SERVER 📍 Authorization Endpoint RFC 6749 /authorize → Authentification + consentement 🔑 Token Endpoint RFC 6749 /token → Échange code contre access token 🔍 Introspection Endpoint RFC 7662 /introspect → Vérifier validité token 🗑️ Revocation Endpoint RFC 7009 /revoke → Invalider un token CLIENT APPLICATION ↩️ Redirection Endpoint RFC 6749 /callback → URL de retour avec le code Démystifier les Tokens 35
  24. Annexe : Vérification d’un JWT Comment le Resource Server valide

    un Access Token JWT 1️⃣ Vérifier la signature Récupérer la clé publique (JWKS) et valider la signature RSA/ECDSA $$ 2️⃣ Valider les claims standards exp (non expiré) • iat (émis dans le passé) • nbf (pas avant) 3️⃣ Vérifier l'émetteur et l'audience iss = Authorization Server attendu • aud = identifiant du Resource Server 4️⃣ Contrôler les scopes Vérifier que le scope demandé est présent dans le token Démystifier les Tokens 36
  25. Annexe : Stockage des tokens Où stocker les tokens côté

    client ? ✅ RECOMMANDÉ 🍪 Cookie HttpOnly + Secure Inaccessible au JavaScript, protégé contre XSS 🔐 En mémoire (SPA) Variable JS, perdu au refresh mais sécurisé 🔑 Keychain / Keystore Apps natives iOS/Android ❌ À ÉVITER 💾 localStorage Accessible au JS → vulnérable XSS 📦 sessionStorage Même problème que localStorage 🔗 URL / Query params Visible dans l'historique et logs serveur Démystifier les Tokens 37