API et Auth : construire un login sécurisé avec OAuth2 (Google et GitHub)

cours en ligne

5 mars 2026

Depuis 2026, les équipes produit et sécurité s’organisent pour déployer un login sécurisé fondé sur OAuth2 pour leurs API. Les choix d’implémentation influencent directement la protection des jetons et la confiance des utilisateurs.

Léa Martin, ingénieure chez StartDev, a piloté plusieurs intégrations avec Google OAuth et GitHub OAuth pour des applications internes. Les points clés à garder pour un déploiement sûr suivent.

A retenir :

  • Stockage des clés en variables d’environnement et coffres sécurisés
  • URI de redirection strictes et propriété vérifiable du domaine
  • Scopes limités et vérification des autorisations utilisateur
  • Usage de jetons d’accès courts et mécanismes de rafraîchissement sécurisés

Enregistrer l’application OAuth2 avec Google et GitHub

Suite aux éléments synthétiques, l’enregistrement de l’application s’impose comme l’étape initiale déterminante pour la sécurité globale. Cette phase détermine le Client ID, le Client Secret et les URI de redirection qui protègent le flux d’autorisation.

Les bonnes pratiques incluent le recours aux consoles d’administration pour générer des identifiants et limiter les modifications manuelles. Ces paramètres influent ensuite sur la gestion des scopes et la validation des jetons reçus.

Étapes d’enregistrement :

  • Connexion à la console du fournisseur
  • Création d’un projet ou d’une application
  • Définition des origines JavaScript autorisées
  • Configuration des URI de redirection applicatives
A lire également :  Top 10 des cours DevOps en ligne pour débutants et pros

Voici un tableau synthétique des points à remplir par fournisseur pour éviter les erreurs courantes. Ce tableau aide à comparer les paramètres essentiels entre Google et GitHub.

Fournisseur Console Paramètre critique Remarque pratique
Google Google Cloud Console Client ID, Client Secret, URI de redirection Branding et type d’utilisateur interne/extern
GitHub Developer Settings Client ID, Client Secret, Callback URL Callback propriété nécessaire pour sécurité
Usage local localhost / 127.0.0.1 URI de redirection locale Nécessaire pour tests en développement
Stockage Environnements Variables d’environnement ou secret manager Éviter l’inclusion dans le dépôt

Le stockage des identifiants en clair dans le code source est à proscrire pour protéger le Client Secret. Selon la documentation GitHub, la séparation des secrets et du code réduit le risque d’exfiltration.

Paramètres Google OAuth pour applications web

Ce point détaille le parcours côté Google et complète l’enregistrement initial décrit plus haut. Il est nécessaire de renseigner le branding et le périmètre des utilisateurs pour obtenir un Client ID.

Selon Google Cloud Console, le branding définit l’écran de consentement et le type d’accès, interne ou externe, ce qui conditionne la diffusion. Prévoir ces éléments avant la création des identifiants.

Paramètres GitHub et callback sécurisé

Ce sous-ensemble se rattache directement au H2 dédié à l’enregistrement et clarifie le rôle du callback. GitHub exige une URL de rappel exacte pour prévenir le vol de code d’autorisation.

A lire également :  Logs et métriques : Grafana Cloud et OpenTelemetry pour démarrer vite

Selon GitHub, l’ownership de l’URI garantit que les jetons ne sont pas redirigés vers un domaine étranger ou malveillant. Valider le domaine avant publication.

« J’ai perdu un secret dans un commit, cela a conduit à l’expiration immédiate des identifiants et à une rotation urgente »

Léa M.

Implémenter le flux d’autorisation et gérer les jetons

Dans la continuité de l’enregistrement, le flux d’autorisation définit comment l’utilisateur concède l’accès et comment l’application récupère un jeton d’accès. La mise en œuvre correcte du flux limite l’exposition des jetons et les erreurs 401 ou 404.

La solution doit vérifier les scopes accordés et rafraîchir les jetons sans exposer le Client Secret côté client. Selon des guides pratiques, la vérification des scopes à chaque appel évite des surprises fonctionnelles.

Bonnes pratiques côté serveur :

  • Stocker access_token en session serveur chiffrée
  • Vérifier X-OAuth-Scopes après chaque appel API
  • Gérer les erreurs 401 et procéder à la révocation
  • Prévoir rotation et expiration des secrets

Le tableau suivant compare endpoints et usages typiques pour effectuer les échanges de code et obtenir des jetons. Il aide à automatiser les appels du flux d’autorisation.

Étape Endpoint GitHub Endpoint Google Paramètre clé
Autorisation /login/oauth/authorize /o/oauth2/v2/auth client_id, redirect_uri, scope
Échange code /login/oauth/access_token /oauth2/v4/token client_secret, code
Récupération profil /api/v3/user /oauth2/v3/userinfo access_token
Vérification token Tokens endpoint / apps Tokeninfo endpoint validation et scopes

A lire également :  Formation Python pour débutants : par où commencer sans se perdre ?

En production, éviter l’envoi du Client Secret vers le navigateur pour respecter le protocole OAuth. Selon des retours d’expérience, la gestion serveur évite la plupart des fuites de jetons.

Garder une session persistante côté serveur

Ce point se rattache à la gestion des jetons et décrit la session persistante pour l’utilisateur. L’usage de sessions permet d’éviter des logins répétés et d’améliorer l’expérience.

Selon des guides Sinatra, la session peut stocker l’access_token et les scopes, ce qui nécessite une vérification périodique. La vérification protège contre la révocation ou la réduction de scopes.

Vérifier et rafraîchir les scopes avant les appels

Ce sujet complète l’approche de session en ajoutant la vérification des scopes via en-têtes. L’entête X-OAuth-Scopes fournit une source fiable sur les autorisations actuelles du jeton.

Selon GitHub, l’utilisation de cet en-tête facilite la détection de changements et permet d’informer l’utilisateur sur les fonctionnalités limitées. Gérer ces cas rend l’application plus robuste.

« Lors des tests locaux, le callback manquant m’a valu plusieurs 404 avant de régler l’URI correctement »

Marc D.

Bonnes pratiques de sécurité et intégration continue

Après la mise en place du flux et des sessions, il faut intégrer la sécurité dans le cycle CI/CD pour protéger les identifiants. L’automatisation permet de détecter les secrets exposés avant publication.

Un plan de rotation des secrets, des contrôles d’accès et des scans de configuration complète la protection. Selon des retours d’équipes DevSecOps, ces mécanismes réduisent significativement le risque opérationnel.

Bonnes pratiques d’intégration :

  • Utiliser secret managers intégrés au pipeline CI/CD
  • Scanner les commits pour éviter la fuite de clés
  • Appliquer le principe du moindre privilège aux scopes
  • Documenter la procédure de rotation et révocation

Pour humaniser le processus, retenez l’exemple de StartDev qui a mis en place une rotation trimestrielle. Cette mesure a amélioré la résilience et la confiance des équipes métiers.

« L’automatisation du scan de commits a évité une divulgation critique lors d’un déploiement »

Alex P.

Enfin, tester les flux en local, puis en préproduction, permet d’identifier rapidement les erreurs d’URI, de scope et de token. La dernière étape consiste à monitorer les appels API pour détecter les anomalies.

Source : GitHub documentation ; Google Cloud Console ; Sinatra guide.

Tracking : GA4, GTM et Consent Mode v2, setup propre

Google Workspace : SPF, DKIM, DMARC pour sécuriser vos emails

Laisser un commentaire