OpenID Connect : qu'est-ce que c'est, protocole d'authentification et d'autorisation

Auteur : IT Sectr Publié le : 2026-04-05 Temps de lecture : 9 min

OpenID Connect est un protocole d'authentification construit sur OAuth 2.0 qui ajoute une couche de vérification d'identité de l'utilisateur à l'autorisation standard. Contrairement à OAuth 2.0 pur, où un access token donne accès aux ressources sans information sur l'utilisateur, OpenID Connect retourne un ID Token — un JWT avec des données de profil vérifiées. Selon OpenID Foundation, 2026, le protocole est pris en charge par tous les principaux Identity Providers — Google, Apple, Microsoft et Auth0.

Points Clés

  • OpenID Connect — protocole d'authentification sur OAuth 2.0 qui retourne un ID Token
  • ID Token — un JWT avec des claims de l'utilisateur : identifiant, email, nom, avatar
  • Authorization Code Flow — le flux OIDC principal pour les applications mobiles et serveur
  • Single Sign-On — l'utilisateur se connecte une fois via un Identity Provider et accède à toutes les applications connectées
  • Discovery URL — endpoint standard /.well-known/openid-configuration pour obtenir la configuration du fournisseur

Qu'est-ce qu'OpenID Connect ?

OpenID Connect (OIDC) est un protocole d'authentification ouvert construit comme une extension sur OAuth 2.0. Il standardise ce qui manquait à OAuth 2.0 : la vérification de l'identité de l'utilisateur. Si OAuth 2.0 répond à la question « quelle application a accès ? », alors OIDC répond « qui est exactement cet utilisateur ? ».

Le protocole utilise un ID Token — un JSON Web Token (JWT) qui contient un ensemble de claims : un identifiant de sujet unique, email, nom, avatar, horodatages d'émission et d'expiration. L'application cliente peut vérifier cryptographiquement l'ID Token — le serveur signe le token avec RS256 ou ES256, et le client vérifie la signature par rapport à la clé publique obtenue via l'endpoint JWKS.

Selon Auth0, 2025, plus de 78 % des applications mobiles utilisant une authentification tierce emploient OIDC via Google Sign-In ou Sign in with Apple. Cela fait du protocole le standard de facto pour la connexion sociale et l'authentification d'entreprise.

Comment fonctionne OpenID Connect

OpenID Connect définit plusieurs flux (flows) selon le type de client. Pour les applications mobiles, le standard est l'Authorization Code Flow avec Proof Key for Code Exchange (PKCE) — il assure la sécurité même sans client secret sur l'appareil.

Identity Provider et son rôle

Un Identity Provider (IdP) est un serveur qui authentifie les utilisateurs et émet des tokens. Dans l'écosystème OIDC, l'IdP fournit deux endpoints clés : l'Authorization Endpoint pour la connexion de l'utilisateur et le Token Endpoint pour échanger le code contre des tokens. Le client découvre les adresses de ces endpoints via la Discovery URL — le chemin standard /.well-known/openid-configuration, qui retourne un document JSON avec toute la configuration du fournisseur.

Chaque IdP publie son JWKS (JSON Web Key Set) — un ensemble de clés publiques pour vérifier la signature de l'ID Token. Le client met en cache ces clés et les utilise pour vérifier chaque token reçu sans contacter le serveur.

Authorization Code Flow avec PKCE

L'Authorization Code Flow est un processus en trois étapes. Premièrement, l'application mobile génère un code verifier (une chaîne aléatoire de 43 à 128 caractères) et son hash — le code challenge. L'application ouvre un navigateur ou WebView avec une URL contenant le client_id, redirect_uri, scope (openid profile email) et le code challenge. L'utilisateur saisit ses identifiants sur la page IdP et confirme son consentement. L'IdP redirige le navigateur vers l'application avec un authorization code.

Dans la deuxième étape, l'application envoie l'authorization code, le code verifier et le client_id au Token Endpoint du serveur. Le serveur vérifie le code verifier par rapport au code challenge stocké et retourne un ID Token, un Access Token et optionnellement un Refresh Token. Dans la troisième étape, l'application vérifie l'ID Token : elle valide la signature par rapport au JWKS, vérifie l'issuer (iss), l'audience (aud) et le temps d'expiration (exp). Si la vérification réussit, l'utilisateur est considéré comme authentifié.

PKCE (Proof Key for Code Exchange) élimine une vulnérabilité inhérente à l'Authorization Code Flow standard dans les clients publics. Étant donné qu'une application mobile ne peut pas stocker un client secret en toute sécurité, un attaquant qui intercepte l'authorization code pourrait l'échanger contre des tokens. Le code verifier résout ce problème : même si le code est intercepté, sans le code verifier original l'échange est impossible. Les OAuth Security Best Practices (RFC 9700) exigent PKCE pour tous les clients publics, y compris les applications mobiles.

ID Token et Access Token

OpenID Connect retourne deux tokens fondamentalement différents : l'ID Token et l'Access Token. L'ID Token est toujours un JWT que le client peut lire et vérifier par lui-même. Il contient des informations sur l'utilisateur et est utilisé pour l'authentification, pas pour l'accès à l'API.

Structure de l'ID Token

L'ID Token se compose d'un header, d'un payload et d'une signature, encodés en Base64 et séparés par des points. Le header contient alg (algorithme de signature) et kid (identifiant de clé). Le payload inclut les claims obligatoires : iss (issuer), sub (subject — ID unique de l'utilisateur), aud (audience — identifiant du client), exp (expiration), iat (issued at). Les claims optionnels incluent name, email, picture, locale.

Exemple d'un payload d'ID Token décodé de Google :

json
{
  "iss": "https://accounts.google.com",
  "sub": "1234567890",
  "aud": "my-app-123.apps.googleusercontent.com",
  "exp": 1812345678,
  "iat": 1812342078,
  "name": "Ivan Petrov",
  "email": "ivan@example.com"
}

L'Access Token est un token opaque (chaîne arbitraire) ou JWT que le client transmet dans les requêtes API. Contrairement à l'ID Token, l'access token n'est pas destiné à être lu par le client — son format et son contenu ne sont connus que du serveur de ressources et du serveur d'autorisation. L'Access Token a un scope — une restriction de permission — et une durée de vie courte, généralement de 15 à 60 minutes.

Différences entre OpenID Connect et OAuth 2.0

OAuth 2.0 est un framework d'autorisation qui définit comment une application obtient l'accès aux ressources de l'utilisateur. OpenID Connect est une extension qui ajoute l'authentification à ce processus. La principale différence : OAuth 2.0 ne définit pas de format de token et ne donne pas à l'application un moyen de savoir qui a exactement fait la demande.

ParamètreOAuth 2.0OpenID Connect
ObjectifAutorisation d'accès aux ressourcesAuthentification + autorisation
Token d'identitéNonID Token (JWT)
Scopeapi:read, api:writeopenid, profile, email
UserInfo EndpointOptionnelStandardisé
Déconnexion uniqueNonSpécification OpenID Connect Session Management

Quand choisir OpenID Connect

OpenID Connect est nécessaire lorsque l'application a besoin d'identifier l'utilisateur, pas seulement d'accéder à ses données. Si vous utilisez « Se connecter avec Google » ou « Se connecter avec Apple » — c'est OIDC. Si votre application appelle une API tierce au nom de l'utilisateur sans avoir besoin de connaître son identité — OAuth 2.0 pur suffit. Pour les systèmes d'entreprise avec Single Sign-On (SSO), le choix est clair : seulement OpenID Connect, car il fournit une déconnexion standardisée et une gestion de session.

Implémentation d'OpenID Connect dans les applications mobiles

L'intégration d'OpenID Connect dans une application mobile nécessite le choix de la bonne bibliothèque et la configuration correcte du flux. Pour Android, utilisez le gestionnaire d'identifiants (AndroidX Credentials) ou la bibliothèque AppAuth. Pour iOS, utilisez le framework AuthenticationServices avec ASWebAuthenticationSession.

Exemple de code en Kotlin (Android)

Ci-dessous un exemple de démarrage de l'Authorization Code Flow avec la bibliothèque AppAuth-Android. L'application crée une demande d'autorisation, ouvre un navigateur pour la connexion de l'utilisateur et traite le callback avec les tokens.

kotlin
val authRequest = AuthorizationRequest.Builder(
    serviceConfig,
    clientId,
    "code",
    Uri.parse("com.example.app:/oauth")
)
.setScope("openid profile email")
.build()

val authService = AuthorizationService(this)
val intent = authService.getAuthorizationRequestIntent(authRequest)
startActivityForResult(intent, REQUEST_CODE)

override fun onActivityResult(
    requestCode: Int,
    resultCode: Int,
    data: Intent?
) {
    if (requestCode == REQUEST_CODE) {
        val response = AuthorizationResponse.fromIntent(data)
        if (response?.authorizationCode != null) {
            exchangeCodeForTokens(response.authorizationCode)
        }
    }
}

Exemple de code en Swift (iOS)

L'ASWebAuthenticationSession d'Apple fournit un navigateur intégré pour le flux OIDC avec prise en charge SSO via iCloud Keychain. La session démarre avec l'URL d'autorisation, et le callback est traité via un completion handler.

Lors du choix d'une bibliothèque pour OpenID Connect, considérez la prise en charge intégrée de PKCE : AppAuth-Android et AppAuth-iOS prennent en charge PKCE par défaut. Firebase Authentication utilise OIDC en interne pour Google Sign-In, Sign in with Apple et Microsoft — le développeur n'a pas besoin d'implémenter le flux manuellement. Pour les systèmes d'entreprise avec un IdP personnalisé (par exemple, Keycloak ou Okta), AppAuth reste le choix standard avec un contrôle total sur la configuration et la gestion des erreurs.

swift
let authURL = URL("https://accounts.google.com/o/oauth2/v2/auth")!
let callbackURL = URL("com.example.app://oauth")!

let session = ASWebAuthenticationSession(
    url: authURL,
    callbackURLScheme: callbackURL.scheme!
) { url, error in
    guard let url = url else { return }
    let components = URLComponents(url: url)
    let code = components?.queryItems?.first(where: { $0.name == "code" })?.value
    if let code = code { exchangeCode(code) }
}
session.start()

Foire aux questions

En quoi OpenID Connect diffère-t-il d'OAuth 2.0 ?

OpenID Connect est une extension d'OAuth 2.0 qui ajoute l'authentification. OAuth 2.0 ne gère que l'autorisation d'accès aux ressources. OIDC introduit l'ID Token — un JWT avec les données de l'utilisateur, standardise l'endpoint UserInfo et ajoute des fonctionnalités de Single Sign-On et de déconnexion.

Quel flux OIDC convient aux applications mobiles ?

Pour les applications mobiles, l'Authorization Code Flow avec PKCE est recommandé. Il ne nécessite pas de client secret, protège contre l'interception de l'authorization code et est pris en charge par tous les principaux Identity Providers. L'Implicit Flow est obsolète et ne doit pas être utilisé dans les nouveaux projets.

Comment vérifier un ID Token sur le client ?

L'ID Token est vérifié en trois étapes : validation de la signature via la clé publique de l'endpoint JWKS, vérification des claims (iss, aud, exp) et décodage du payload. La plupart des SDK — AppAuth, MSAL, Google Sign-In — effectuent cette vérification automatiquement à la réception du token.

Qu'est-ce que le scope « openid » dans une requête ?

Le scope openid est un paramètre obligatoire qui distingue une requête OIDC d'une requête OAuth 2.0 ordinaire. Sans lui, le serveur ne retournera pas d'ID Token. Les scopes supplémentaires — profile, email, address — déterminent quels claims spécifiques de l'utilisateur seront inclus dans le token.

Peut-on utiliser OpenID Connect sans navigateur ?

Techniquement oui, via le flux Resource Owner Password Credentials, mais ce n'est pas recommandé. Le flux navigateur assure l'isolation des identifiants — l'application ne voit jamais le mot de passe de l'utilisateur. Apple et Google exigent une authentification basée sur navigateur pour leurs services.

Résumé

  • OpenID Connect — protocole d'authentification sur OAuth 2.0 avec ID Token au format JWT
  • ID Token contient des claims vérifiés de l'utilisateur et est signé par le serveur
  • Authorization Code Flow avec PKCE — le flux standard et sécurisé pour les applications mobiles
  • Identity Provider publie une Discovery URL et JWKS pour la configuration automatique du client
  • OIDC prend en charge le Single Sign-On et la déconnexion standardisée entre applications
  • AppAuth et AuthenticationServices sont les principales bibliothèques pour Android et iOS respectivement
  • OpenID Connect est utilisé dans Google Sign-In, Sign in with Apple et les solutions SSO d'entreprise

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi