Français
  • assertion client
  • type d'assertion client
  • générer une assertion client
  • oidc
  • oauth

Qu'est-ce que l'assertion client dans l'authentification client OAuth 2.0 ?

Présente ce qu'est l'assertion client et fournit un guide détaillé sur la façon de générer une assertion client dans OAuth 2.0. Il compare également brièvement l'assertion client avec la méthode traditionnelle d'identifiant client et de secret client, offrant des perspectives sur la façon de choisir l'approche d'authentification la plus adaptée.

Yijun
Yijun
Developer

Qu'est-ce que l'authentification client ?

Dans OAuth 2.0, un "client" fait référence à une application demandant l'accès à un serveur de ressources. L'authentification client est le processus par lequel le serveur d'autorisation vérifie l'identité du client solliciteur.

Expliquons le comportement de l'authentification client avec deux flux d'authentification OAuth courants :

  • Flux de code d'autorisation : Ici, le client a d'abord besoin de l'autorisation de l'utilisateur (généralement en cliquant sur un bouton de consentement sur une page de consentement utilisateur) pour obtenir un code d'autorisation. Ensuite, le client utilise ce code et des informations d'identification (généralement un client_id et un client_secret) pour l'authentification et demande un jeton d'accès au serveur d'autorisation.
  • Flux de références client : Dans ce flux, le client utilise ses informations d'identification (généralement un client_id et un client_secret) pour demander un jeton d'accès directement au serveur d'autorisation sans étape d'autorisation utilisateur.

Qu'est-ce que l'assertion client ?

Dans OAuth 2.0, l'assertion client est une méthode efficace et sécurisée pour l'authentification client. Comparée à l'identifiant client et au secret traditionnels, l'assertion client utilise des JSON Web Tokens (JWT) pour renforcer la sécurité et la flexibilité, rendant le processus d'authentification plus fiable et informatif.

Les JWT sont compacts et autonomes, transmettant en toute sécurité des informations entre les parties sous forme d'objets JSON. Un JWT contient des revendications sur une entité (généralement l'utilisateur) et d'autres données, y compris :

  • iss (Issuer) : Le déclarant, généralement l'identifiant du client, indiquant qui a créé le JWT.
  • sub (Subject) : Également typiquement l'identifiant du client, indiquant le sujet du JWT.
  • aud (Audience) : Se référant à l'URL du point d'extrémité du jeton du serveur d'autorisation, montrant à qui le JWT est destiné.
  • exp (Expiration Time) : L'heure d'expiration après laquelle le JWT n'est plus accepté.
  • iat (Issued At) : L'heure de l'émission, marquant quand le JWT a été créé.
  • jti (JWT ID) : Un identifiant unique pour le JWT, principalement pour éviter que le JWT ne soit rejoué.

Cette combinaison d'informations fournit une sécurité sans égale par rapport à l'authentification traditionnelle par secret client, ajoutant flexibilité et capacités de contrôle.

Comment générer une assertion client ?

Démontrons comment générer une assertion client pour le flux d'identifiants client OAuth 2.0, l'assertion étant principalement appliquée lorsque le client demande un jeton d'accès pour son propre compte, sans implication directe de l'utilisateur.

Lors de l'authentification avec une assertion client dans OAuth 2.0, le client_assertion_type doit être urn:ietf:params:oauth:client-assertion-type:jwt-bearer, et le paramètre client_assertion transporte l'assertion JWT du client. Voici un exemple de code Node.js pour générer une assertion JWT pour l'authentification client :

Assurez-vous de la sécurité du secret client et prenez les mesures appropriées pour éviter sa divulgation.

Quelle est la différence entre l'assertion client et l'identifiant client avec secret client ?

L'utilisation de l'identifiant client et du secret client est la méthode la plus courante pour l'authentification client.

Pour apprendre la différence entre l'assertion client et l'identifiant client avec secret client, la meilleure façon est de voir les exemples d'utilisation du code.

Lors de l'utilisation de l'identifiant client et du secret client pour l'authentification client, le client envoie une requête POST au point d'extrémité du jeton du serveur d'autorisation avec les informations d'identification client associées :

Comme vous pouvez le voir, l'identifiant client avec secret est plus simple, plus facile à déployer et pris en charge par presque tous les fournisseurs de services OAuth. Cependant, il présente certaines limitations :

  • Le secret client est transmis dans les requêtes, le rendant vulnérable à l'interception sur des réseaux non sécurisés.
  • Le secret peut être facilement accessible par des services non liés au sein d'un réseau interne où les services communiquent entre eux sans TLS.
  • La combinaison fixe de l'identifiant client et du secret est susceptible aux attaques par rejeu.
  • Se fier uniquement à l'identifiant client et au secret pour l'authentification limite la flexibilité du mécanisme et empêche le transport de plus de métadonnées ou d'informations personnalisées sur le client.

Devrais-je utiliser l'assertion client ou l'identifiant client avec secret client ?

Comme discuté, chaque méthode d'authentification a ses avantages et scénarios d'application. Lors de l'intégration de services OAuth 2.0, choisissez l'option la plus appropriée en fonction des besoins spécifiques.

L'assertion client, avec ses technologies de cryptage avancées, offre une protection des données et prend en charge des scénarios d'authentification complexes, permettant une expansion future facile. Cependant, en raison de sa complexité et de la nécessité d'une compréhension approfondie du JWT et de ses mécanismes de cryptage, l'authentification par identifiant client et secret plus simple pourrait être plus appropriée pour des équipes avec des ressources limitées ou celles cherchant un déploiement rapide.

Résumé

Cet article a discuté de l'application des assertions client dans l'authentification client OAuth 2.0, les comparant avec les méthodes d'authentification traditionnelles par identifiant et secret client. L'assertion client offre une sécurité et une flexibilité accrues pour les besoins de sécurité complexes, mais implique également une complexité de mise en œuvre plus élevée. En pratique, choisissez l'option la plus appropriée en fonction des exigences spécifiques et de l'expertise technique pour répondre aux besoins de développement commercial.