SAML 2.0 Vs OAuth : comparaison et différences

Security Assertion Markup Language (SAML) est un processus d’authentification que vous utilisez très certainement sans le savoir quand vous ouvrez une session sur votre ordinateur.

Open Authorization (OAuth) est un processus d’autorisation qui permet de passer d’un service à un autre sans avoir besoin de saisir à chaque fois une paire nom d’utilisateur/mot de passe. Si vous avez ouvert une session avec Google et que vous avez employé ces identifiants pour accéder à Hootsuite, vous avez utilisé OAuth.

OAuth et SAML peuvent tous deux être utilisés pour réaliser des opérations d’authentification unique (SSO) sur le Web, mais SAML tend à être lié à un utilisateur et OAuth à une application. Ils ne sont pas interchangeables. Donc, plutôt que de les comparer, nous allons voir comment ils se complètent.

Comment fonctionne SAML ?

SAML est une norme ouverte définissant un protocole qui vérifie et authentifie les identités. Dans un environnement professionnel classique, un collaborateur doit se connecter pour accéder aux fonctionnalités internes de l’entreprise.

Une fois authentifié avec SAML, l’utilisateur peut accéder à tous les outils de l’entreprise, p. ex. un intranet, un navigateur et les applications Microsoft Office, à l'aide d'une seule signature numérique.

Dans les entreprises ayant mis en place une stratégie de sécurité plus stricte, SAML permet uniquement aux utilisateurs d’ouvrir une porte ou de déverrouiller un écran d’ordinateur. Toutes les autres opérations, notamment l’accès aux fichiers, exigent une autorisation.

Les administrateurs réseau peuvent utiliser SAML pour gérer les utilisateurs depuis un emplacement centralisé. Un seul mot de passe suffit à déverrouiller tous les services dont un utilisateur a besoin, tout en assurant la sécurité de l’entreprise.

SAML diagram

Voici un exemple de workflow SAML type :

  • Demande : un utilisateur appuie sur un bouton de connexion.
  • Validation : le protocole SAML et le fournisseur d’identité se connectent pour assurer l’authentification.
  • Connexion : un écran demandant un nom d’utilisateur et un mot de passe s’affiche.
  • Création d’un jeton : si les informations saisies sont correctes, un jeton SAML est envoyé au fournisseur de services, ce qui autorise l’utilisateur à se connecter au serveur.

Avec ce workflow, un fournisseur de services, un navigateur et un fournisseur d’identité peuvent échanger des informations de façon fluide. Comme tout se passe en quelques secondes, l’utilisateur ne se rend généralement pas compte du léger décalage entre le début et la fin du processus.

Comment fonctionne OAuth ?

Si, en anglais, « auth » peut vouloir dire à la fois « authentication » (authentification) ou « authorization » (autorisation), le protocole OAuth fait spécifiquement référence à l’autorisation. Ce protocole sert donc à transférer une autorisation d’un service à un autre, tout en protégeant les identifiants.

OAuth est un outil indispensable pour gagner du temps dans les environnements professionnels où les collaborateurs peuvent passer d’une application critique à une autre près de 1 100 fois par jour, et cherchent un moyen de le faire sans devoir se reconnecter. Avec OAuth, c’est possible.

Imaginons qu’un collaborateur possède un compte Google actif et utilise les mêmes identifiants pour accéder à :

  • Hootsuite
  • SurveyMonkey
  • Hotjar
  • Microsoft 365
  • Salesforce
  • Marketo
  • Box

Ce collaborateur a besoin de toutes ces applications web pour effectuer son travail, mais il lui sera pénible de devoir créer et se rappeler cinq jeux différents de noms d’utilisateur et de mots de passe.

Utiliser les mêmes identifiants pour toutes les applications est un pari risqué, car si l’une d’elles est piratée, les données sensibles de l’utilisateur seront exposées et vulnérables sur toutes les plateformes. Mais passer d’une application à une autre en sachant que l’accès initial à la première est validé, c’est tout autre chose.

Certains consommateurs s’inquiètent de l’exploration des données (datamining) et pensent que l’utilisation d’un tel outil donne trop de pouvoir à des entreprises comme Facebook. En effet, à chaque fois qu’un utilisateur se connecte à une application ou à un site à l’aide de son profil Facebook, ce réseau social collecte des informations à son sujet. Si les données de Facebook sont compromises, il y a de fortes chances que les autres connexions de cette personne échouent aussi.

Reste que la plupart des collaborateurs seraient reconnaissants de pouvoir gagner un temps précieux, particulièrement en période d’activité intense.

OAuth option

Voici à quoi ressemble un workflow OAuth :

  • Demande : un utilisateur clique sur un bouton de connexion sur une page web.
  • Choix : il choisit les identifiants d’autorisation tierce à utiliser.
  • Authentification : le serveur d’autorisation crée un jeton d’accès qui est envoyé au serveur des ressources.
  • Connexion : une fois le jeton vérifié, le serveur de ressources accorde l’accès.

Tout au long de ce processus, les deux serveurs s’échangent mutuellement des informations. En règle générale, OAuth utilise JWT pour les jetons, mais il peut aussi faire appel à JavaScript Object Notation.

Quelle que soit la façon dont ils sont créés, les jetons sont toujours codés, souvent signés, mais rarement chiffrés, lorsqu’ils passent d’un serveur à un autre.

OAuth et SAML : similarités et différences

OAuth et SAML encouragent et normalisent tous deux l’interopérabilité.

Pour les utilisateurs, ces outils permettent d’éviter les listes sans fin de noms d’utilisateur et de mots de passe, qui compliquent l’accès aux ressources critiques. Pour les propriétaires d’application, OAuth et SAML simplifient l’onboarding et offrent la possibilité de déléguer la gestion des utilisateurs. Pour les administrateurs, ils sont synonymes d’intégration rapide, ainsi que d’authentification et d’autorisation centralisées.

En revanche, les deux services prennent en charge des fonctions différentes :

  • Authentification. Ce processus implique l’identité d’un utilisateur. SAML est comme la clé d’une maison : il donne accès à l’infrastructure.
  • Autorisation. Ce processus implique les privilèges d’un utilisateur. OAuth est un peu comme un règlement d’ordre intérieur, qui établit ce qui est autorisé ou non.

Pour mieux comprendre ce processus, voyons la routine quotidienne d’un collaborateur. En arrivant le matin, il se connecte une fois via SAML. Cette connexion lui donne accès à la suite entière d’applications basées sur SAML. Il n’a plus rien à faire et peut passer d’une application à l’autre.

Quand utiliser SAML ou OAuth ?

SAML et OAuth offrent tous les deux des possibilités d’authentification unique (Single Sign-On/SSO), et ils sont critiques pour la productivité des collaborateurs. Les deux technologies ne constituent pas exactement une alternative l’une à l’autre, mais sont compatibles entre elles.

Dans l’environnement Microsoft, par exemple, OAuth traite le processus d’autorisation et SAML le processus d’authentification. Vous pouvez les utiliser en même temps pour octroyer (via SAML) et autoriser (via OAuth) l’accès à une ressource protégée.

Vous pouvez aussi décider de n’en utiliser aucun. Par exemple, certaines pages web n’exigent pas forcément les deux.

Mais la plupart des entreprises dotées de systèmes numériques ont besoin d’un processus d’authentification et d’autorisation efficace pour permettre aux utilisateurs de se connecter et de naviguer entre ces systèmes afin d’accomplir leurs tâches quotidiennes.

Qu’en est-il d’OpenID Connect (OIDC) ?

Vous aurez très probablement besoin d’OAuth si vous développez un outil secondaire destiné aux consommateurs, comme une application ou un portail, et il y a de fortes chances que les clients apprécient de pouvoir accéder à vos outils sans devoir créer de nouveaux identifiants. OAuth peut également s’avérer utile pour les collaborateurs qui utilisent des outils non SAML.

Pour obtenir une vraie comparaison avec SAML, découvrez la différence entre SAML, OAuth et OpenID Connect.

Fonctionnement avec Okta

Okta propose des services SSO qui permettent aux utilisateurs de s’authentifier de façon fluide auprès des applications dont ils ont besoin au quotidien. Un processus d’authentification unique sécurisé utilise souvent SAML comme protocole, mais Okta fournit également d’autres options, notamment un widget de connexion, un kit SDK d’authentification (qui est une bibliothèque basée sur JavaScript), l’authentification sociale et une API d’authentification, disponibles pour tous les clients.

Découvrez les solutions de gestion des identités préintégrées d’Okta ici.

Références

A Survey on Single Sign-On Techniques. (2012). Procedia Technology. 

Employees switch apps more than 1,100 times a day, decreasing productivity. (Décembre 2018). TechRepublic. 

Stop syncing your contacts with Facebook. (Août 2019). Mashable. 

Authentication vs Authorization. (Septembre 2018). Medium.

Authentification ou autorisation. (Mai 2020). Microsoft. 

Why SAML? (Security Assertion Markup Language). (Juillet 2018). Medium.

Understanding Authentication, Authorization, and Encryption. Boston University.