2022-08-19 18:34 Temps de lecture : 14 min

Guide du développeur sur l'authentification SAML [3 Online Tools]

Dans l'environnement numérique actuel, la simplification de la gestion des identifiants est devenue indispensable. L'essor de la numérisation au sein des entreprises a entraîné une dépendance accrue des outils collaboratifs, de messagerie instantanée et de stockage de données par les employés.

Cette transformation présente un défi majeur pour les développeurs : comment garantir un accès sécurisé aux applications internes et aux données stockées dans le cloud ? Pour répondre à cette problématique, l'authentification SAML s'impose comme une solution de premier plan.

Qu'est-ce que SAML ?

Le Security Assertion Markup Language, ou SAML, est une norme ouverte qui facilite la simplification des procédures d'authentification. Basé sur XML (Extensible Markup Language), il standardise la communication entre les entités nécessitant une authentification et le service ou l'application web. En d'autres termes, SAML permet d'utiliser une seule session pour accéder à diverses applications.

D'un côté, un fournisseur de services (SP) requiert l'authentification d'un fournisseur d'identité (IdP) pour autoriser l'accès à un utilisateur. Par exemple, Salesforce, en tant que fournisseur de services, dépend d'un fournisseur d'identité pour l'authentification de ses utilisateurs.

D'un autre côté, un fournisseur d'identité valide l'identité de l'utilisateur et transmet ces informations au fournisseur de services, ainsi que les droits d'accès de l'utilisateur au service. Auth0, figure parmi les leaders en matière de solutions d'identité, en est un exemple.

Qu'en est-il de l'authentification unique SAML ?

L'un des rôles clés de SAML est de rendre possible l'authentification unique (SSO). Avant SAML, le SSO était limité par l'utilisation de cookies, et n'était viable que sur le même domaine.

SAML facilite l'authentification unique (SSO) en offrant aux utilisateurs la possibilité d'accéder à de nombreuses applications avec une unique authentification et un seul jeu d'informations d'identification. Bien que SAML ne soit pas récent, existant depuis 2002, un grand nombre d'applications et d'entreprises SaaS adoptent SAML pour le SSO. Sa dernière version, SAML 2.0, rend possible l'authentification unique inter-domaines basée sur le web et constitue la norme en matière d'autorisation d'accès aux ressources.

Quels sont les avantages de l'authentification SAML ?

SAML apporte une multitude d'avantages en termes de sécurité, d'expérience utilisateur et pour les fournisseurs de services.

Simplicité : Les utilisateurs s'authentifient une seule fois auprès de l'IdP, bénéficiant ensuite d'un accès fluide et sécurisé à toutes les applications.

Sécurité renforcée : De nombreux fournisseurs de services ne disposent ni du temps ni des ressources nécessaires pour mettre en œuvre et maintenir une authentification sécurisée lors de la connexion. Les IdP sont, généralement, mieux armés pour authentifier les identités des utilisateurs. En transférant l'authentification à l'IdP, SAML permet une authentification robuste pouvant intégrer plusieurs niveaux de sécurité, comme l'authentification multi-facteurs (MFA).

Expérience utilisateur améliorée : Avec SAML, les utilisateurs peuvent en finir avec les problèmes liés à la mémorisation de multiples noms d'utilisateur et mots de passe.

Réduction des coûts de gestion : Les fournisseurs de services peuvent améliorer la sécurité de leur plateforme sans stocker de mots de passe. Il n'est plus nécessaire de gérer les problèmes de mots de passe oubliés. Le service d'assistance voit ses coûts diminués, et les équipes techniques peuvent se concentrer sur d'autres tâches prioritaires.

Qu'est-ce que Auth0 et comment est-il lié à l'authentification SAML ?

Auth0 est une plateforme qui fournit un service d'authentification et d'autorisation des utilisateurs. Elle peut fonctionner à la fois comme IdP et SP. Auth0 offre une connexion universelle qui s'intègre avec SAML. Les développeurs utilisent souvent Auth0 avec SAML afin de répartir les risques en ayant plusieurs IdP.

Auth0 est compatible avec la plupart des langages de programmation et API. Il s'intègre également aux fournisseurs sociaux, bases de données et annuaires LDAP.

Fonctionnement du SSO SAML

Le principal objectif de SAML est de rendre possible l'authentification unique (SSO). Avant l'avènement de SAML, le SSO existait, mais reposait sur des cookies et était limité au même domaine.

SAML permet l'authentification unique en donnant la possibilité aux utilisateurs d'accéder à diverses applications avec une seule authentification et un seul ensemble d'identifiants. Bien que SAML ne soit pas une nouveauté, il est en usage depuis 2002, et de nombreuses applications et entreprises SaaS l'adoptent pour le SSO. Sa version la plus récente, SAML 2.0, permet une authentification unique inter-domaines via le web, et constitue la norme en matière d'autorisation d'accès aux ressources.

Concrètement, cela signifie que l'authentification d'un utilisateur n'est requise qu'une seule fois lorsqu'il utilise différentes applications. On peut prendre l'exemple de l'authentification Google, partagée entre Gmail, YouTube, Google Apps et d'autres services.

Dans ce mode de fonctionnement, Google joue le rôle de fournisseur d'identité (IdP) pour ses services. Ces services sont considérés comme des "fournisseurs de services" (SP).

Authentification

Lors de la tentative de connexion à une application externe, celle-ci redirige l'utilisateur non authentifié vers l'IdP de l'entreprise. Cet IdP est un service web accessible via HTTPS, hébergé en interne ou en externe.

Authentification Interne

L'utilisateur prouve ensuite son identité auprès de l'IdP. Cette authentification peut être réalisée de manière explicite (avec un identifiant et un mot de passe) ou par la transmission d'un jeton préexistant.

Génération de l'assertion

L'IdP génère un "jeton", qui fait office de carte d'identité de l'utilisateur, valide uniquement pour le service requis et pendant une durée déterminée. Ce jeton comprend notamment :

  • L'identité de l'utilisateur : identifiant, adresse e-mail, ou autres informations
  • Des attributs supplémentaires optionnels : nom, prénom, langue, etc.
  • La période de validité du jeton
  • La signature du jeton par l'IdP

Transmission de l'IdP au SP

Dans la pratique, l'assertion ne transite pas directement de l'IdP au SP, mais par l'intermédiaire de l'utilisateur. L'IdP, grâce à un mécanisme de redirection HTTP, fournit au navigateur client le jeton à transmettre au fournisseur de services. On peut l'assimiler à une carte d'identité émise par les autorités à présenter pour justifier son identité.

Consommation du jeton par le SP

Le fournisseur de services reçoit le jeton de l'utilisateur. Le SP a décidé de faire confiance à cet IdP. Il valide également la signature et l'intégrité du jeton, ainsi que sa durée de validité. Si les contrôles sont concluants, le SP ouvre une session pour l'utilisateur.

Source : Wikipédia

Authentification SAML Vs. Autorisation d'un utilisateur

L'authentification SAML est souvent confondue avec l'autorisation. Il est essentiel de faire la distinction entre ces deux concepts.

Authentification : Il s'agit de valider l'identité d'un utilisateur ; en d'autres termes, vérifier qu'il est bien la personne qu'il prétend être. Un exemple courant est l'utilisation d'un email et d'un mot de passe pour accéder à un système, qui peut servir de session unique ou de connexion pour d'autres plateformes.

Autorisation : Elle concerne les permissions accordées par un utilisateur à un outil tiers pour accéder aux ressources de son compte. Avec l'accord de l'utilisateur, le protocole d'autorisation échange des jetons sans avoir besoin d'accéder à ses informations d'identification. On le retrouve généralement lorsque vous autorisez une plateforme (comme Facebook) à accéder à certaines informations de votre compte Google.

Terminologies incontournables de SAML

Assertion SAML

Les assertions SAML sont, généralement, transmises par les fournisseurs d'identité aux fournisseurs de services. Elles contiennent des déclarations que les fournisseurs de services utilisent pour gérer les accès. SAML fournit trois types de déclarations :

  • Les déclarations d'authentification confirment que le fournisseur de services s'est correctement authentifié auprès du fournisseur d'identité à un moment précis et par une méthode d'authentification spécifique.
  • Une déclaration d'attribut indique qu'un sujet est associé à des attributs spécifiques. Un attribut est simplement une paire nom-valeur. Les parties utilisatrices se servent des attributs pour gérer les accès.
  • Une déclaration de décision d'autorisation atteste qu'un sujet a l'autorisation d'agir sur une ressource en présentant les preuves nécessaires. L'expressivité des déclarations de décision d'autorisation dans SAML est volontairement limitée.

Service consommateur d'assertion

Le service consommateur d'assertion, ou ACS, correspond au point où le fournisseur d'identité redirige l'utilisateur après avoir répondu à sa demande d'authentification. Le point vers lequel le fournisseur d'identité redirige l'utilisateur est un point de terminaison HTTPS qui transmet des informations personnelles.

État de relais par défaut

C'est l'URL par défaut vers laquelle l'utilisateur est redirigé une fois le message SAML authentifié. L'état de relais par défaut est utilisé pour coordonner les échanges entre les IdP et les SP.

SAML est un protocole largement adopté, et il est souvent nécessaire de décoder les assertions SAML. Voici quelques-uns des meilleurs outils pour encoder, décoder et formater les messages et assertions SAML :

#1. Outil SAML

SAMltool proposé par OneDesign est un ensemble d'outils et de kits d'outils SAML en ligne. Il inclut divers outils permettant d'encoder et de décoder les messages SAML, de chiffrer et déchiffrer les assertions, ainsi que de signer et valider les messages et assertions SAML. SAMLtool fournit également différents plugins pour intégrer ces outils à plusieurs CMS.

#2. Samtool.io

Proposé par Auth0, samltool.io est un outil en ligne qui permet de décoder, d'inspecter et de vérifier les messages et les assertions SAML en y insérant du XML brut ou des URL contenant des requêtes.

#3. Décodeur SAM

Décodeur SAM est un simple outil en ligne de décodage SAML proposé par PingIdentity. Il permet de décoder, décompresser et formater les messages, les assertions et les métadonnées SAML.

En guise de conclusion

Le standard SAML est un outil très utile pour mettre en œuvre une authentification centrale basée sur un langage de balisage. L'un de ses avantages majeurs est d'offrir une efficacité élevée tout en assurant un niveau de sécurité renforcé.

Le nombre de potentielles fuites de sécurité est minimisé, car les applications individuelles n'ont plus à stocker ou à synchroniser les données des utilisateurs. Cela permet d'atteindre l'objectif principal : allier un niveau élevé de sécurité à une expérience utilisateur optimale.

Vous pouvez également consulter d'autres plateformes d'authentification utilisateur performantes.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.