Commencer gratuitement
Authentification / Thierry Gagnon / 7 sept. 2023

L'authentification par jeton : des mécanismes d'autorisation sécuritaires

Token Authentication: Secure Authorization Mechanisms

Dans le paysage numérique actuel, des mécanismes d'authentification robustes constituent un élément essentiel d'une bonne cybersécurité organisationnelle. Voyez-les comme la première ligne de défense pour protéger une ressource inestimable : les données sensibles.

Un système d'authentification par jeton robuste offre aux organisations un moyen sûr et fiable d'accorder l'accès aux utilisateurs tout en dressant des barrières contre les menaces, tant internes qu'externes.

Ce guide est une porte d'entrée pour comprendre le rôle central des systèmes d'authentification par jeton et leurs différentes mises en œuvre. Ces jetons ouvrent les portes de domaines numériques sécurisés en allant bien au-delà des noms d'utilisateur et des mots de passe conventionnels, afin de créer un système d'accès plus complet et plus sûr.

Selon une étude du Ponemon Institute, l'authentification par jeton, lorsqu'elle est bien implantée, peut réduire le coût d'une fuite de données de 3,12 millions de dollars en moyenne. Cet incitatif financier considérable explique l'adoption croissante des systèmes fondés sur les jetons par les organisations qui cherchent à renforcer leurs défenses.

Nous commencerons par les fondements, puis nous explorerons les deux grands types de jetons d'authentification, la façon de les mettre en œuvre et les moyens de garder le système de votre organisation sécuritaire et à l'épreuve du temps.

Les fondements de l'authentification par jeton

Nous avons déjà établi que l'authentification par jeton est une façon très sécuritaire, pour une organisation, de donner à ses utilisateurs et à ses employés l'accès à ses services ou à ses réseaux. À l'image de laissez-passer secrets qui représentent l'identité de l'utilisateur, les jetons peuvent rendre inutiles les noms d'utilisateur et les mots de passe. Lorsqu'une personne souhaite se connecter, elle présente son jeton pour prouver qui elle est.

Avant d'aller plus loin, il importe de comprendre la différence entre authentification et autorisation. L'authentification consiste à prouver une prétention d'identité pour obtenir un accès. C'est comme présenter son billet pour entrer dans un match de soccer. L'autorisation, elle, détermine ce que vous pouvez faire une fois à l'intérieur. C'est comme obtenir une mention spéciale sur votre billet qui vous donne accès aux loges.

Et les avantages de l'authentification par jeton pour sécuriser les mécanismes d'autorisation sont nombreux.

D'abord, c'est plus sécuritaire que l'utilisation de mots de passe seuls. Point à la ligne. Les mots de passe risquent d'être volés ou piratés. Les jetons d'authentification peuvent eux aussi être dérobés, mais ils ont généralement une durée de vie limitée, ce qui restreint l'accès à une période prédéfinie. Ils sont également révocables sans intervention de l'utilisateur.

Un système d'authentification par jeton est aussi plus facile à mettre à l'échelle, puisqu'il fonctionne sans heurts même lorsque de nombreuses personnes veulent accéder à un service en même temps. C'est qu'il n'a pas besoin de mémoriser les interactions passées.

Les jetons peuvent également transporter de l'information supplémentaire sur l'utilisateur, comme son rôle ou ce qu'il est autorisé à faire. Les organisations peuvent ainsi établir facilement des règles d'accès précises pour différents utilisateurs et s'assurer que seules les bonnes personnes accèdent à certaines ressources. Repensez à notre guide sur l'authentification adaptative : vous la voyez à l'œuvre.

Enfin, l'authentification par jeton s'harmonise très bien avec le mobile et les API. Comme de plus en plus de travail se fait (et de services sont utilisés) sur appareil mobile, elle trouve parfaitement sa place. Elle s'intègre aisément aux applications modernes et soutient le principe de l'authentification unique (SSO), qui permet d'accéder à plusieurs services avec une seule connexion.

Les deux types de jetons d'authentification

Si tout cela vous semble prometteur et que vous souhaitez rehausser votre posture de cybersécurité pour protéger votre organisation, penchons-nous sur les deux principaux types de jetons d'authentification : les jetons web JSON (JWT) et les jetons OAuth.

Les jetons web JSON :

Les jetons web JSON (JWT) sont un type de jeton très répandu en authentification. Un JWT s'apparente à un passeport numérique qui contient de l'information essentielle sur un utilisateur et sert à vérifier son identité. Il comporte généralement trois parties : un en-tête (le type de jeton et l'algorithme utilisé pour le signer), une charge utile (qui contient les renseignements sur l'utilisateur) et une signature (une clé chiffrée qui garantit l'authenticité du jeton).

L'authentification fondée sur les JWT est largement adoptée parce qu'elle offre plusieurs avantages majeurs. Elle convient parfaitement à l'authentification unique (SSO), où les utilisateurs accèdent à plusieurs services avec une seule connexion. Elle est aussi excellente pour sécuriser les API et les microservices, en garantissant que seuls les utilisateurs autorisés accèdent aux données sensibles.

La nature compacte et autoportante des JWT les rend faciles à utiliser dans les applications web et mobiles, simples comme complexes. Sans compter qu'ils sont inviolables lorsqu'ils sont bien mis en œuvre et que le format JSON est très répandu en développement web, mobile et logiciel.

Bien que les JWT puissent être fluides et sécuritaires, ils exigent une manipulation rigoureuse pour préserver leur intégrité. Les organisations qui déploient un tel système doivent stocker les clés secrètes de façon sécuritaire afin d'empêcher tout accès non autorisé à leur réseau. Si le dépôt de clés est compromis, votre entreprise s'expose à de gros ennuis. C'est pourquoi la mise à jour régulière de ces clés est cruciale pour éviter les brèches.

Pour protéger au mieux ces clés, il est essentiel de ne stocker que l'information nécessaire. Cela garde le jeton léger, favorise l'utilisation de canaux de communication sécurisés pour la transmission des jetons et permet de fixer des délais d'expiration raisonnables, ce qui réduit la fenêtre d'occasion pour les attaquants.

Les jetons OAuth :

OAuth est un autre cadre puissant servant à authentifier les utilisateurs et à leur accorder un accès sécuritaire à des ressources sans qu'ils aient à partager leur mot de passe. Plutôt que de fournir directement leurs identifiants à divers services, les utilisateurs s'authentifient auprès d'un fournisseur d'authentification et accordent des permissions précises à une application, à un site web ou à un service tiers pour qu'il accède en leur nom à certaines ressources. Cette permission est représentée par un jeton OAuth. Autrement dit, OAuth simplifie l'interconnexion de différents services tout en gardant les données des utilisateurs protégées.

Pour y arriver, OAuth s'appuie sur deux grands types de jetons : les jetons d'accès et les jetons de rafraîchissement. Les jetons d'accès sont comme des clés temporaires à durée de vie limitée, ce qui ajoute une couche de sécurité. Une fois le jeton d'accès expiré, l'application utilise un jeton de rafraîchissement pour en obtenir un nouveau sans demander à l'utilisateur de se reconnecter. Contrairement aux jetons d'accès, les jetons de rafraîchissement ont une longue durée de vie, ce qui réduit la fréquence des connexions et améliore l'expérience utilisateur.

L'utilisation de jetons OAuth comporte tout de même de nombreuses considérations de sécurité. Comme les JWT, ils doivent être stockés de façon sécuritaire et leur accès doit être très strictement encadré pour éviter qu'ils ne tombent entre de mauvaises mains.

Une solution consiste à mettre en place des mécanismes de révocation de jetons, qui permettent aux utilisateurs de retirer l'accès à leurs ressources s'ils soupçonnent un usage abusif. Surveiller régulièrement l'utilisation des jetons et repérer les activités suspectes contribue grandement à détecter et à prévenir les attaques, tandis que le chiffrement et la signature des jetons garantissent leur intégrité pendant la transmission et le stockage.

Mettre en place l'authentification par jeton

Maintenant que les fondements sont posés, passons à la mise en œuvre. Abordons les trois grands volets : la génération et l'émission des jetons, le flux d'autorisation, ainsi que la révocation et l'expiration des jetons. Sans un plan solide pour ces trois phases, un système d'authentification par jeton ne pourra pas réussir.

La création des jetons :

Commençons par l'émission : les jetons sont généralement générés et émis par un serveur d'authentification (fournisseur d'authentification) ou un fournisseur d'identité (IdP). Lorsqu'un utilisateur se connecte avec succès ou obtient une autorisation, le serveur crée un jeton unique pour cet utilisateur, ce qui lui donne accès aux ressources ou aux services demandés.

Cela dit, il est crucial d'assurer l'unicité et le caractère aléatoire de ces jetons pour empêcher un acteur malveillant de percer le code. Il est toujours préférable de générer les jetons au moyen d'algorithmes cryptographiquement sûrs afin de garantir ces propriétés. De plus, les jetons devraient toujours avoir une durée de vie ou un délai d'expiration limité afin de réduire les risques associés.

Enfin, les jetons doivent être stockés de façon sécuritaire pour empêcher tout accès non autorisé. Si un système bien conçu est extrêmement bénéfique pour la sécurité d'une organisation, cela met beaucoup d'œufs dans le même panier. Si les jetons se retrouvent entre de mauvaises mains, à quoi bon ?

À cette fin, dans les applications côté serveur, les jetons sont habituellement conservés dans des bases de données assorties de contrôles d'accès stricts. Du côté client, les jetons devraient être stockés dans des témoins sécurisés HTTP-only ou dans le stockage local. En faisant tourner régulièrement les clés de chiffrement servant à signer les jetons, le système limite les conséquences d'une compromission.

Le flux d'autorisation :

Lorsqu'un utilisateur souhaite accéder à une ressource protégée, il présente simplement son jeton comme preuve d'authentification. Le serveur vérifie ensuite l'authenticité du jeton en contrôlant la signature et en s'assurant qu'il n'est pas expiré. S'il est valide, l'utilisateur entre.

Cela semble simple, mais le système accomplit des prouesses en coulisses. La vérification consiste à contrôler l'intégrité du jeton, notamment sa signature, son expiration et toute mesure de sécurité additionnelle. L'objectif : s'assurer que le jeton est authentique et n'a pas été altéré.

Une fois la vérification faite, le serveur valide les permissions de l'utilisateur à partir de l'information contenue dans le jeton et détermine les ressources auxquelles il peut accéder. Repensez à l'exemple du billet d'événement et de la loge.

Pour les personnes qui conçoivent l'interface destinée aux utilisateurs ou aux employés, il est extrêmement utile de fournir des messages d'erreur clairs et conviviaux qui guident le dépannage. Les erreurs courantes comprennent l'expiration du jeton, une signature non valide ou un jeton révoqué.

Aussi frustrants soient-ils, les messages d'erreur sont nécessaires : les jetons non valides doivent évidemment être rejetés et les utilisateurs doivent être invités à se réauthentifier ou à rafraîchir leur jeton au besoin. Cela signifie simplement que le système fonctionne.

Révocation et expiration :

En ce qui concerne la fin du cycle de vie d'un jeton, il y a deux grands cas de figure : la révocation immédiate (par exemple lors d'une simple déconnexion ou du départ d'un employé) et l'expiration naturelle, conforme aux exigences de sécurité du système.

Les mécanismes de révocation peuvent reposer sur des listes de blocage de jetons, des indicateurs en base de données ou une mise en cache distribuée. L'invalidation des jetons devrait aussi être prévue pour les actions initiées par l'utilisateur, comme un changement de mot de passe, afin que les anciens jetons cessent d'être valides.

Au-delà de la révocation, l'application de politiques d'expiration appropriées est tout aussi importante pour la sécurité du système. Des durées de vie plus courtes renforcent la sécurité en réduisant la fenêtre d'occasion pour les attaques, mais des réauthentifications plus fréquentes peuvent nuire à l'expérience utilisateur.

Dans les scénarios exigeant des jetons de longue durée, les stratégies de rafraîchissement, comme l'émission de jetons d'accès de courte durée accompagnés de jetons de rafraîchissement de plus longue durée, permettent aux utilisateurs d'obtenir de nouveaux jetons d'accès sans ressaisir leurs identifiants.

La gestion de la durée de vie des jetons exige de trouver l'équilibre entre des mesures de sécurité strictes et une expérience utilisateur fluide, et dépend au bout du compte des besoins de l'organisation. Dans des secteurs comme la santé ou la finance, les exigences seront vraisemblablement plus strictes et plus robustes. Il suffit de tenir compte de facteurs comme l'activité de l'utilisateur et la sensibilité des ressources pour atteindre efficacement cet équilibre.

Sécuriser l'authentification par jeton

Assurer une transmission sécuritaire des jetons

Pour protéger les jetons lorsqu'ils circulent sur les réseaux, le protocole TLS (Transport Layer Security) joue un rôle central. TLS chiffre les données en transit, ce qui préserve la confidentialité et l'intégrité des jetons. Ne pas assurer leur confidentialité peut entraîner de vastes répercussions sur la sécurité.

Renforcer le stockage des jetons par le chiffrement

Une pratique courante chez les organisations qui utilisent des systèmes d'authentification par jeton consiste à appliquer des techniques de chiffrement robustes pour le stockage sécuritaire des jetons. Le chiffrement ajoute une couche de défense supplémentaire, peu importe où les jetons sont conservés. En matière de sécurité, l'adage « dans le doute, chiffrez davantage » est souvent la meilleure ligne de conduite.

Se prémunir contre le vol grâce aux modules matériels de sécurité (HSM)

Pour contrer le risque de vol de jetons, il est impératif de conserver le matériel cryptographique dans des dispositifs hautement sécurisés.

Les modules matériels de sécurité (HSM) sont souvent considérés comme la référence en la matière. Ces appareils spécialisés offrent différents niveaux de sécurité, mais surpassent systématiquement les solutions logicielles.

Les HSM protègent non seulement les clés de chiffrement ou de signature, mais aussi d'autres actifs cryptographiques sensibles, tout en respectant de saines règles d'accès et en réalisant des opérations cryptographiques de pointe adossées au matériel.

Mettre en place des mesures de sécurité additionnelles

En plus du chiffrement et des HSM, les organisations peuvent renforcer la sécurité des jetons au moyen des mesures suivantes :

Protection contre la falsification de requête intersites (CSRF) : La mise en place de mécanismes de protection CSRF est essentielle pour n'accepter que les requêtes légitimes. Ces mesures vont plus loin en signant cryptographiquement les jetons CSRF afin d'empêcher toute altération.

Audit et surveillance exhaustifs : Une supervision attentive des activités liées aux jetons est cruciale. Un bon mécanisme de journalisation suivra l'utilisation des jetons, y compris les événements de création, de validation et de révocation. Cette surveillance minutieuse permet aux organisations de repérer rapidement les activités anormales et suspectes.

Réponse proactive : En cas d'utilisation suspecte d'un jeton, et pourvu qu'une surveillance vigilante soit en place, les organisations peuvent réagir sans délai. Les actions possibles comprennent la révocation des jetons compromis ou le déclenchement d'alertes de sécurité, ce qui permet de déjouer efficacement d'éventuelles brèches.

En appliquant ces pratiques de sécurité à volets multiples, les organisations peuvent ériger un bouclier résilient autour de leurs systèmes d'authentification par jeton et renforcer considérablement leurs défenses face à un paysage de menaces numériques en constante évolution.

Pratiques exemplaires et considérations

Maintenant que les fondements sont couverts, quelques facteurs supplémentaires méritent d'être pris en compte au moment de concevoir et de déployer le système d'authentification par jeton qui répond le mieux aux besoins de votre organisation.

Portée et granularité des jetons :

Rien de tout cela n'est possible sans un contrôle des privilèges d'accès et une protection des ressources. La conception de portées de jetons permet aux organisations de définir les actions précises qu'un jeton peut accomplir, afin que l'utilisateur final n'accède qu'à ce dont il a besoin.

La granularité est un autre moyen d'assurer la sécurité. Il est essentiel d'adapter les permissions aux besoins exacts de vos utilisateurs, sans rien de plus. En accordant à chacun l'accès minimal nécessaire, vous réduisez le risque d'accès non autorisé et renforcez la posture de sécurité globale de votre système.

Stratégies de rafraîchissement et de rotation des jetons :

La mise en place de mécanismes de rafraîchissement des jetons est également essentielle. Nous avons évoqué la nécessité d'émettre des jetons d'accès de courte durée et des jetons de rafraîchissement de plus longue durée, ce qui permet aux utilisateurs d'obtenir de nouveaux jetons d'accès sans ressaisir leurs identifiants, tout en réduisant la durée d'exposition des jetons d'accès.

Mais cela ne va pas sans les techniques de rotation des jetons, tout aussi importantes, qui consistent à changer régulièrement les clés de chiffrement servant à signer les jetons. En appliquant ces stratégies, vous atténuez les risques liés aux jetons de longue durée et ajoutez une couche de sécurité au système d'authentification par jeton.

L'authentification multifacteur avec jetons :

Renforcer l'authentification par jeton au moyen de l'authentification multifacteur (MFA) améliore aussi considérablement la posture de sécurité. Lorsque vous exigez des utilisateurs des facteurs d'authentification supplémentaires, comme un mot de passe à usage unique ou une vérification biométrique, les risques d'accès non autorisé ou de compromission diminuent nettement.

L'intégration de l'authentification par jeton à d'autres méthodes, comme les jetons matériels, ne fera que consolider davantage l'ensemble du processus d'authentification et rendre votre système pratiquement étanche.

Nous sommes là pour vous aider

Chez KZero Passwordless, nous avons à cœur de donner aux entreprises les connaissances et les outils dont elles ont besoin pour renforcer leurs défenses en cybersécurité. L'authentification par jeton est au premier plan de cette mission, car elle offre une solution complète aux organisations qui souhaitent protéger leurs renseignements sensibles et leurs utilisateurs dans un paysage de menaces en constante évolution.

En adoptant l'authentification par jeton, les organisations gagnent en tranquillité d'esprit et bâtissent un avenir numérique plus sûr pour elles-mêmes et pour leurs utilisateurs.

La cybersécurité n'est pas un événement ponctuel, mais un parcours continu. Planifiez un appel avec nous dès aujourd'hui pour découvrir comment faire passer la sécurité de votre organisation au niveau supérieur grâce à des solutions de MFA nouvelle génération.

Thierry Gagnon



Thierry est cofondateur et chef de la technologie de KZero Passwordless, et l'un des plus grands experts mondiaux des réseaux de partage sécurisé de l'information. Fort d'une expertise en développement de systèmes automatisés, en bases de connaissances cyber, en analyse de maliciels et rétro-ingénierie ainsi qu'en renseignement sur les cybermenaces, nous lui sommes reconnaissants de...