Comment intégrer la 2FA dans une application web avec Oauth ?

Comment intégrer la 2FA dans une application web avec Oauth ?

Face aux attaques par hameçonnage et aux compromissions de sessions, l’ajout d’une authentification à deux facteurs (2FA) dans une application web est aujourd’hui une mesure de sécurité largement adoptée. En particulier lorsqu’on utilise OAuth comme système de délégation d’identité, il devient essentiel de mettre en place une vérification complémentaire, indépendante du fournisseur d’identité.

Mais comment associer efficacement OAuth avec un second facteur d’authentification, tout en respectant la logique du flux d’autorisation ? 

Pourquoi compléter OAuth avec une vérification en deux étapes ?

OAuth permet à une application de s’appuyer sur un tiers de confiance (Google, Facebook, Microsoft, etc.) pour gérer l’identité de l’utilisateur. L’avantage : ne plus avoir à stocker les mots de passe localement.
Cependant, cette délégation ne couvre pas forcément les besoins de sécurité spécifiques à l’application elle-même, notamment dans les environnements sensibles (accès à des données de santé, documents internes, espaces professionnels confidentiels, etc.).

En ajoutant un second facteur comme un code temporaire envoyé par SMS, une notification push ou une application d’authentification on réduit considérablement le risque qu’une session soit ouverte par un acteur non autorisé, même si l’identifiant OAuth est compromis.

Choisir à quel moment insérer la 2FA dans le flux OAuth

Le flux OAuth standard suit généralement cette séquence :

  1. L’utilisateur initie la connexion via un fournisseur (ex. : Google).
  2. Il autorise l’application à accéder à certaines données.
  3. L’application reçoit un token d’accès puis le token d’identité (OpenID Connect).
  4. L’utilisateur est considéré comme connecté.
À lire  FileFix : ce qu'il faut savoir sur cette attaque indétectable sur Windows

L’authentification à deux facteurs ne remplace pas OAuth, elle vient s’intercaler après l’obtention du token, avant de délivrer l’accès à l’application elle-même. Il s’agit donc d’un mécanisme de sécurité interne à l’application, basé sur l’identité déjà validée par le fournisseur externe.

Mettre en place une 2FA liée au compte utilisateur local

Même si l’utilisateur s’authentifie via OAuth, l’application web doit maintenir une base de données propre à ses utilisateurs, ne serait-ce que pour gérer les préférences, les rôles ou les règles de sécurité. C’est dans cette couche locale qu’on active la 2FA.

Le scénario typique :

  • Une fois l’identité validée par le fournisseur OAuth, l’application vérifie dans sa base locale si un second facteur est activé pour cet utilisateur.
  • Si oui, elle interrompt temporairement la connexion et demande la saisie d’un code à usage unique (généré via TOTP, envoyé par email ou push mobile).
  • Ce n’est qu’après validation de ce second facteur que la session web complète est ouverte.

Cela permet de conserver la fluidité d’OAuth tout en appliquant une politique de sécurité sur mesure, adaptée aux risques liés aux usages de l’application.

Intégrer des bibliothèques open source pour la génération de codes TOTP

Pour éviter de réinventer la roue, il existe de nombreuses bibliothèques permettant de générer et vérifier des codes d’authentification temporaire conformes à la norme TOTP (Time-based One-Time Password). C’est le même système utilisé par Google Authenticator ou Authy.

Quelques exemples robustes :

  • Speakeasy pour Node.js
  • PyOTP pour les applications Python
  • OTP.NET pour les projets .NET
  • Oathtool en ligne de commande (utilisable côté serveur pour tester)
À lire  Il existe une faille sur les câbles HDMI : on peut reproduire jusqu'à 70 % de l'image de votre écran

Ces outils s’intègrent facilement dans un backend existant, à condition que le secret partagé soit associé à l’utilisateur lors de la configuration initiale (QR code ou clef OTP).

Associer les bonnes méthodes de vérification pour renforcer le dispositif

Outre les générateurs de codes, certains projets open source comme Authelia, Keycloak (avec MFA activé), ou encore Gluu Server, permettent d’intégrer une politique de sécurité plus granulaire, avec des déclencheurs contextuels :

  • adresse IP inhabituelle,
  • changement d’appareil,
  • géolocalisation suspecte.

Combiné à OAuth, cela permet d’activer ou non le second facteur selon la situation, améliorant à la fois la sécurité et l’expérience utilisateur.

Ce qu’il faut surveiller lors de l’implémentation

Une implémentation réussie de la 2FA avec OAuth repose sur plusieurs précautions :

  • Ne jamais stocker le secret OTP en clair dans la base utilisateur ;
  • Ne pas court-circuiter la 2FA lors d’un rafraîchissement du token (refresh_token) ;
  • Privilégier un canal sécurisé pour la transmission initiale du secret partagé (éviter les emails non chiffrés) ;
  • Documenter et tester chaque étape du flux, y compris les erreurs : mauvais code, expiration, désynchronisation.

Enfin, il est important de prévoir des mécanismes de secours en cas de perte du second facteur, comme une vérification par email ou une procédure manuelle d’identification via l’assistance.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *