Qu'est-ce qu'OAuth 2.0 et la connexion sociale ?

Mis à jour : septembre 2026

OAuth 2.0 est un standard d’autorisation qui laisse une app accéder à votre compte sur un autre service — la connexion sociale s’appuie dessus. Les deux sont presque toujours expliqués séparément, et c’est ainsi que la confusion survit : la RFC 6749 définit la plomberie (accès délégué et à portée limitée, sans partage de mot de passe), OpenID Connect ajoute la couche d’identité, et le bouton “Se connecter avec…” est la feature produit qui roule sur les deux.

Points clés

QuestionRéponse
OAuth 2.0Autorisation déléguée : des tokens à portée limitée et périssables au lieu de mots de passe
La confusionOAuth répond à quoi cette app peut-elle accéder — OIDC répond qui est cet utilisateur
Le flux moderneAuthorization code + PKCE — les grants implicit et password ont disparu en 2.1
Les tokensAccess (court, à portée limitée) · refresh (avec rotation) · ID (claims d’identité signés)
Connexion socialeDe l’OIDC dans un bouton : le fournisseur authentifie, votre app reçoit des claims vérifiés

Le flux authorization code, étape par étape

La danse des redirections derrière chaque écran de consentement — avec les paramètres qui comptent :

1  App → fournisseur          /authorize?client_id=…&redirect_uri=…&scope=profile
                              &state=af3G…            ← garde anti-CSRF, vérifiée au retour
                              &code_challenge=hK9…    ← PKCE : hash d'un secret tout neuf

2  Utilisateur ↔ fournisseur  Se connecte LÀ (le mot de passe ne touche jamais l'app), consent

3  Fournisseur → app          redirect_uri?code=SplxlO…&state=af3G…   ← code à usage unique

4  App → fournisseur          POST /token  { code, code_verifier }    ← preuve PKCE
   Fournisseur → app          { access_token, refresh_token, id_token }

5  App → API                  Authorization: Bearer <access_token>

Voilà ce que cela donne quand un backend l’enveloppe — les tokens du fournisseur entrent, une session vérifiée sort :

// JavaScript / Node.js — Back4app JS SDK
// Social login: the provider's tokens become a user session
const user = await Parse.User.logInWith('apple', {
  authData: { id: appleUserId, token: identityToken },
});
// First login creates the user; later logins match — session token issued

// Account linking: attach a second provider to the same user
await user.linkWith('facebook', { authData: fbAuthData });

Les quatre rôles

RôleQui c’estEn termes de “Se connecter avec…”
Resource ownerL’utilisateurVous
ClientL’app qui demande l’accèsL’app qui affiche le bouton
Authorization serverÉmet les codes et les tokensLes pages de connexion du fournisseur d’identité
Resource serverL’API qui garde les donnéesL’API de profil/utilisateur du fournisseur
Flux authorization code d'OAuth 2.0 avec PKCEL'app cliente redirige l'utilisateur vers l'authorization server avec un challenge PKCE ; l'utilisateur s'authentifie et consent là-bas ; le serveur redirige avec un code à usage unique ; le client échange le code et le verifier PKCE contre des access, refresh et ID tokens, puis appelle le resource server avec l'access token.

1 · redirigé avec
state + code_challenge

2 · code à usage unique

3 · code + code_verifier

4 · access · refresh · ID tokens

5 · Bearer access_token

Utilisateur
(resource owner)

Authorization server
connexion + consentement

App cliente

Resource server
(API)

L'app cliente redirige l'utilisateur vers l'authorization server avec un challenge PKCE ; l'utilisateur s'authentifie et consent là-bas ; le serveur redirige avec un code à usage unique ; le client échange le code et le verifier PKCE contre des access, refresh et ID tokens, puis appelle le resource server avec l'access token.

Grant types : quel flux, et ce qu’OAuth 2.1 a changé

GrantPourUtilisateur présent ?Statut dans OAuth 2.1
Authorization code + PKCEWeb, mobile, SPA — tout ce qui implique un utilisateurOuiLe choix par défaut — PKCE exigé de presque tous les clients
Client credentialsMachine à machine, comptes de serviceNonConservé
Device authorizationTéléviseurs, consoles, CLIOui, sur un second appareilConservé
Refresh tokenRenouveler l’accès en silenceNonConservé — rotation ou sender-constraining exigés pour les clients publics
ImplicitSPA legacy (tokens dans les fragments d’URL)OuiSupprimé
Password (ROPC)L’app collecte elle-même le mot de passeOuiSupprimé — il ruine tout l’intérêt de la démarche

OAuth 2.1 est une consolidation, pas une révolution : les suppressions ci-dessus, plus des redirect URI à correspondance exacte et l’interdiction des bearer tokens dans les query strings — les leçons de sécurité accumulées en une décennie, repliées dans un seul document. Les explications définitionnelles n’ont pour l’essentiel pas suivi ; plusieurs enseignent encore le flux implicit sans le moindre avertissement.

OAuth vs. OpenID Connect : autorisation vs. authentification

La phrase que tout le monde répète — “OAuth n’est pas de l’authentification” — mérite son mécanisme, parce que c’est le mécanisme qui rend une connexion naïve exploitable :

Access token (OAuth)ID token (OIDC)
Adressé àLe resource server (API)Votre app (aud = votre client ID)
ProuveCe porteur peut accéder à ces scopesCet utilisateur (sub) s’est authentifié chez cet émetteur (iss), maintenant (iat/exp), pour cette connexion (nonce)
FormatSouvent opaque pour le clientJWT signé que votre app doit valider
Utilisable pour se connecter ?Non — toute app autorisée par l’utilisateur en détient un ; il ne dit rien de qui est présentOui — c’est exactement son métier

“Se connecter avec un simple access token” échoue parce qu’un access token est une preuve transférable de permission, pas de présence : une app malveillante ayant obtenu un token pour ses propres besoins pourrait le rejouer ailleurs pour se faire passer pour l’utilisateur. OpenID Connect existe précisément pour combler cet écart — les mêmes flux, plus une assertion d’identité liée cryptographiquement à votre app.

La connexion sociale : le bouton posé sur la plomberie

La connexion sociale, c’est de l’OIDC emballé en UX : le fournisseur authentifie, votre app reçoit des claims vérifiés et crée ou retrouve un compte — aucun mot de passe stocké, aucun flux de réinitialisation à maintenir, la MFA du fournisseur héritée gratuitement. Les trade-offs produit méritent des chiffres honnêtes. Les promesses de 20 à 50 % d’inscriptions en plus relèvent du folklore commercial ; les tests contrôlés mesurent plutôt 3 %, même si près d’un tiers des connexions grand public arrivent aujourd’hui par la voie sociale — signe que les utilisateurs veulent l’option. Les pratiques qui font réellement bouger la conversion : proposez deux ou trois fournisseurs que votre audience utilise vraiment (la grille de départ de boutons nuit de façon mesurable), gardez toujours une alternative par e-mail, et sachez que les redirections OAuth cassent à l’intérieur des WebViews embarquées — une cause réelle d’échecs d’inscription sur mobile. Deux faits propres à un fournisseur pèsent assez pour être nommés : Sign in with Apple émet des adresses de relais privé (…@privaterelay.appleid.com), donc la liaison par e-mail et les listes de diffusion doivent s’attendre à des alias opaques — et les règles de l’App Store imposent aux apps proposant une connexion tierce de proposer aussi une option de connexion respectueuse de la vie privée.

Liaison de comptes et le piège de l’e-mail

La même personne arrivera par deux fournisseurs, et tous deux annonceront [email protected]. La règle qui évite la vulnérabilité classique : l’identité s’ancre sur l’identifiant sub stable du fournisseur, jamais sur l’e-mail seul. Les e-mails changent, sont recyclés et — le vrai tranchant — ne sont pas toujours vérifiés : une classe de vulnérabilités révélée en 2023 a montré que les apps faisant confiance à un claim d’e-mail non vérifié dans les tokens d’un grand fournisseur étaient ouvertes au vol de compte par quiconque pouvait fixer cet e-mail sur son propre compte. Ne liez automatiquement que sur des e-mails que le fournisseur atteste comme vérifiés ; sinon, demandez à l’utilisateur de lier explicitement. Et anticipez la sortie : un utilisateur bloqué chez un fournisseur (cela arrive sans prévenir) perd toutes les apps en aval, sauf si vous lui avez proposé une seconde méthode liée — c’est pourquoi “une seule méthode de connexion par utilisateur” est une machine à tickets de support déguisée en simplicité.

Cas d’usage courants

  • Connexion aux apps grand public — la connexion sociale canonique : moins de friction, MFA héritée, aucune base de mots de passe à faire fuiter.
  • Accès à des API tierces — le cas OAuth d’origine : une app d’agenda qui lit votre calendrier sans votre mot de passe.
  • Authentification machine à machine — client credentials entre services, sans le moindre utilisateur en vue.
  • Identité multifournisseur — un compte, plusieurs méthodes de connexion liées, dissociation et récupération par utilisateur.
  • Passerelle vers le SSO d’entreprise — le même pattern OIDC pointé vers un fournisseur d’identité d’entreprise plutôt que social.

Devriez-vous proposer la connexion sociale ? Matrice de décision

Votre situationPenchez vers
App grand public, audience très mobileOui — 2 à 3 fournisseurs + alternative par e-mail
App iOS proposant une connexion tierceUne option de connexion respectueuse de la vie privée est obligatoire — prévoyez les e-mails de relais
Produit B2B/entrepriseOIDC oui, mais vers le SSO d’entreprise, pas le social
Données réglementées, cycle de vie des comptes strictPrudence — le blocage chez le fournisseur et la vérification d’identité exigent des réponses
MVP qui a besoin d’auth cette semaineOui, via un backend qui enveloppe les flux
Utilisateurs sans compte chez les grands fournisseursE-mail/passwordless d’abord ; social en option

Limites et trade-offs

  • Vous héritez des décisions du fournisseur. Écrans de consentement, durée des sessions, récupération de compte et dépréciations arrivent à son calendrier, pas au vôtre.
  • Le risque de concentration est réel. Une panne du fournisseur ou un compte bloqué, c’est votre connexion en panne ; les méthodes de secours liées sont la mitigation, pas un supplément facultatif.
  • La souplesse d’OAuth est sa faiblesse historique. Un framework à options invite les combinaisons non sûres — si 2.1 existe, c’est que les flux implicit, les redirections avec jokers et les refresh tokens sans rotation continuaient de partir en production.
  • Les flux de redirection ont des angles vifs. state (CSRF), les redirect URI exactes (open redirect et vol de code) et PKCE (interception) sont chacun à un paramètre oublié d’un incident.
  • Les claims sociaux sont un plancher, pas un profil. Vous recevez subject, e-mail, nom — les attributs au-delà demandent toujours votre propre onboarding, et les relais de confidentialité font que même l’e-mail peut être un alias.

OAuth et la connexion sociale sur Back4app

Back4app est une plateforme open-source de Backend as a Service (BaaS) qui combine une base de données gérée, des API REST et GraphQL générées automatiquement, l’authentification, le stockage de fichiers et des fonctions serverless avec Cloud Code. Les flux ci-dessus se replient dans les onglets de code : le client obtient nativement les tokens du fournisseur, les passe à logInWith, et les adaptateurs d’authentification de Back4app les vérifient côté serveur auprès du fournisseur avant de créer ou de retrouver le User — les identités de fournisseur vivent dans des blocs authData par fournisseur, indexés sur le subject stable, ce qui impose la règle de liaison de comptes par construction. linkWith rattache des fournisseurs supplémentaires (ou un identifiant e-mail) au même utilisateur, réglant le problème du blocage en un seul appel, et le token de session que votre app reçoit fonctionne ensuite sur les API REST, GraphQL et Live Query, avec les ACL et les permissions de classe qui décident de ce qu’il peut toucher. La danse des redirections, la vérification des tokens et les cas limites de liaison arrivent comme des comportements de plateforme — vous configurez les fournisseurs dans le dashboard et vous livrez le bouton.

Questions fréquentes

Qu'est-ce qu'OAuth 2.0 en termes simples ?

Un standard qui permet à une app d'obtenir un accès limité à votre compte sur un autre service sans que vous lui confiiez votre mot de passe. À la place de vos identifiants, le service émet pour l'app un token temporaire et à portée limitée — comme une carte d'hôtel qui ouvre votre chambre et la salle de sport, mais pas le bureau du directeur, et qui expire au départ.

OAuth, c'est de l'autorisation ou de l'authentification ?

De l'autorisation — le titre même de la spécification le dit, la RFC 6749 s'appelle "The OAuth 2.0 Authorization Framework". Elle répond à "à quoi cette app peut-elle accéder ?", pas à "qui est cet utilisateur ?". La connexion par-dessus OAuth est standardisée par OpenID Connect, qui ajoute un ID token signé attestant l'identité auprès de l'app.

Quelle est la différence entre OAuth 2.0 et OpenID Connect ?

OpenID Connect est une fine couche d'identité posée sur OAuth 2.0 : les mêmes flux, plus un ID token signé (un JWT adressé à votre app, avec les claims issuer, subject, audience et nonce) et un endpoint userinfo. Tout vrai bouton "Se connecter avec…" est de l'OIDC ou un équivalent propre au fournisseur — OAuth seul ne définit aucun moyen de prouver qui s'est connecté.

Quels sont les grant types d'OAuth ?

Authorization code avec PKCE dès qu'un utilisateur est impliqué ; client credentials pour le machine à machine ; device authorization pour les téléviseurs et les CLI ; refresh token pour renouveler l'accès. Les grants implicit et password sont du legacy — tous deux supprimés dans OAuth 2.1, et aucune conception nouvelle ne devrait les utiliser.

Que sont les access tokens et les refresh tokens ?

L'access token est l'identifiant à durée de vie courte que l'app présente à l'API — à portée limitée, avec expiration, souvent un JWT. Le refresh token vit plus longtemps et s'échange contre de nouveaux access tokens sans rien redemander à l'utilisateur ; la pratique moderne le fait tourner à chaque usage, pour qu'un token volé meure au premier rejeu.

Qu'est-ce que PKCE et pourquoi est-il obligatoire ?

Proof Key for Code Exchange (prononcé "pixie") : l'app démarre le flux avec le hash d'un secret et doit présenter l'original au moment d'échanger l'authorization code, prouvant que celui qui échange est bien celui qui a initié. Conçu pour les apps mobiles, incapables de garder un client secret, il défend contre l'interception de code — et le brouillon d'OAuth 2.1 l'exige de presque tous les clients.

Qu'est-ce que la connexion sociale et comment fonctionne-t-elle ?

C'est de l'OIDC emballé dans un bouton : l'app redirige vers l'endpoint d'autorisation du fournisseur ; l'utilisateur s'authentifie là-bas — le mot de passe ne touche jamais l'app — et consent ; le fournisseur redirige avec un code à usage unique ; l'app l'échange contre des tokens et lit le subject stable de l'ID token pour créer ou retrouver le compte local.

La connexion sociale est-elle sûre ?

Globalement oui : l'utilisateur hérite de l'authentification durcie et de la MFA du fournisseur au lieu d'un énième mot de passe réutilisé. Les contreparties sont le risque de concentration — un compte fournisseur bloqué ou compromis affecte toutes les apps en aval — et le soin apporté à l'implémentation : l'app doit ancrer l'identité sur le subject stable du fournisseur et sur des claims vérifiés, jamais sur un champ e-mail brut.

Termes associés

À comparer avec

Lectures recommandées

Prêt à construire votre backend ?

Lancez votre projet sur Back4app en quelques minutes — base de données, authentification, API et Cloud Code inclus. Sans carte bancaire.

Écrit et révisé par Back4app Engineering, Back4app Engineering · Publié le 2026-09-10