Qu'est-ce que le endpoint Userinfo d'OpenID Connect ?

Emmanuel Gautier Emmanuel Gautier ·
OpenID Connect

Le endpoint Userinfo est une fonctionnalité standard du protocole OpenID Connect (OIDC), conçue pour fournir des claims supplémentaires (des informations relatives à l’utilisateur) sur un utilisateur authentifié. Ce endpoint est généralement appelé via une requête HTTP GET, authentifiée à l’aide d’un access token valide délivré par le provider OIDC.

Le rôle principal du endpoint Userinfo est de compléter les informations contenues dans l’ID token. Alors que l’ID token sert de preuve d’authentification et ne contient qu’un ensemble minimal de claims (comme l’identifiant de l’utilisateur et des métadonnées), le endpoint Userinfo permet à une application cliente de récupérer des données de profil plus riches ou plus à jour, telles que :

  • Nom complet
  • Adresse email
  • Numéro de téléphone
  • Langue (locale) ou fuseau horaire
  • Claims personnalisés fournis par le provider OIDC

Quand utiliser le endpoint Userinfo plutôt que l’ID token ?

Informations dynamiques ou à jour

Le endpoint Userinfo est particulièrement utile lorsque l’application cliente a besoin d’informations dynamiques ou à jour sur l’utilisateur. Alors que l’ID token fournit un instantané de l’identité de l’utilisateur au moment de l’authentification, le endpoint Userinfo peut fournir des informations en temps réel ou plus détaillées.

Ce comportement peut dépendre de l’implémentation du provider OpenID Connect. Certains providers renvoient les mêmes informations dans l’ID token et dans le endpoint Userinfo, tandis que d’autres fournissent des informations supplémentaires ou plus à jour dans la réponse Userinfo.

ID token minimal

Pour garder l’ID token léger et éviter de l’alourdir avec des claims superflus, les providers OIDC n’y placent souvent que les informations essentielles sur l’utilisateur. Les informations complémentaires ou moins critiques peuvent être récupérées auprès du endpoint Userinfo en cas de besoin.

Cette séparation des responsabilités permet à l’ID token de rester léger et efficace tout en fournissant les informations nécessaires aux applications clientes pour authentifier et autoriser les utilisateurs.

Elle contribue aussi à réduire le risque d’exposer des informations sensibles dans l’ID token, puisque seuls les claims essentiels y figurent. Il arrive que l’ID token ne puisse pas être stocké de façon sécurisée : mieux vaut donc le garder aussi petit que possible.

Claims personnalisés

Le endpoint Userinfo est également un moyen pratique pour les providers OIDC d’exposer des claims personnalisés ou des attributs utilisateur qui ne font pas partie des claims OIDC standards. En interrogeant le endpoint Userinfo, les applications clientes peuvent accéder à ces claims supplémentaires et adapter leur comportement ou l’expérience utilisateur en conséquence.

Comment accéder au endpoint Userinfo ?

Pour accéder au endpoint Userinfo, une application cliente doit inclure un access token valide dans le header Authorization d’une requête HTTP GET. L’access token est généralement obtenu lors du flow d’authentification OIDC, soit dans la réponse contenant l’ID token, soit en échangeant un authorization code contre un access token.

Voici un exemple d’appel au endpoint Userinfo par une application cliente à l’aide d’un access token :

GET /userinfo HTTP/1.1
Host: oidc-provider.com
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Bonnes pratiques : ID token ou endpoint Userinfo ?

Pour choisir entre l’ID token et le endpoint Userinfo, gardez à l’esprit les bonnes pratiques suivantes :

  • Utilisez l’ID token pour une authentification légère : si l’application doit simplement authentifier l’utilisateur et accéder à quelques claims essentiels (par exemple l’identifiant et l’email), l’ID token suffit.
  • Utilisez le endpoint Userinfo pour des données utilisateur riches : lorsque l’application a besoin d’informations supplémentaires ou dynamiques (nom complet, numéro de téléphone, claims personnalisés, etc.), le endpoint Userinfo est le choix approprié.
  • Combinez les deux si nécessaire : utilisez l’ID token pour l’authentification immédiate, puis appelez le endpoint Userinfo pour récupérer des informations supplémentaires ou mises à jour selon les besoins.

Références