Quelles sont les différences entre SAML et OIDC ?
Dans cet article, nous offrons un aperçu des protocoles SAML et OIDC, ainsi que de leurs flux d'authentification typiques. Nous comparons les différences distinctes, les avantages et les inconvénients de chaque protocole. De plus, en fonction de scénarios utilisateur potentiels, nous offrons des conseils sur le choix entre ces deux protocoles.
OpenID Connect (OIDC) et Security Assertion Markup Language (SAML) sont des protocoles d'authentification qui permettent aux fournisseurs d'identité (IdPs) de mettre en œuvre l'authentification des utilisateurs et le contrôle d'accès. Chaque protocole définit son propre mécanisme pour maintenir l'identité des utilisateurs authentifiés, qui est ensuite utilisée pour accorder ou refuser l'accès aux applications protégées.
Qu'est-ce que SAML et OIDC ?
Les IdPs maintiennent des bases de données d'informations d'identité utilisateur. Les fournisseurs de services (SPs) s'appuient sur ces informations pour authentifier les utilisateurs, permettant parfois qu'une seule authentification soit utilisée dans plusieurs applications (authentification unique). OIDC et SAML sont des normes qui définissent comment ces informations relatives à l'identité utilisateur circulent entre ces deux parties. Leur objectif ultime est le même : l'authentification de l'utilisateur. Cependant, les approches fondamentales qu'ils adoptent pour atteindre cet objectif diffèrent.
SAML
SAML 2.0, depuis 2005, est la version actuelle de la norme. Il utilise XML pour formater les informations d'identité, les requêtes et les réponses. XML est une norme mature pour formater des documents d'une manière compréhensible à la fois par les humains et les ordinateurs. Pour transmettre ou recevoir des informations encodées en XML, il utilise des requêtes SOAP ou HTTP de base. Défini par le protocole SAML, le service demandant des informations d'identité est le fournisseur de services (SP).
Avant d'introduire le processus d'authentification SAML typique, nous devons comprendre les éléments sur lesquels repose l'authentification SAML. Avant que l'IdP et le SP ne puissent se reconnaître mutuellement et compléter le processus d'authentification, ils doivent "échanger" les informations nécessaires, généralement accompli via des métadonnées formatées en XML. Les informations échangées incluent :
- Clés publiques, l'IdP et le SP générant leurs propres paires de clés privées et publiques et les échangeant pour signer ou crypter les communications. Avec les avancées de la sécurité des communications réseau, la plupart des scénarios requièrent maintenant uniquement la signature des requêtes, omettant l'étape de cryptage.
- Points finaux, utilisés pour que le SP envoie des requêtes d'authentification SAML à l'IdP et pour que le SP reçoive des assertions SAML en réponse aux requêtes d'authentification de l'IdP.
- Formats d'attributs XML pris en charge, utilisés pour que l'IdP transmette les informations utilisateur requises au SP après avoir complété l'authentification.
Une fois que l'IdP et le SP sont au courant des informations susmentionnées, ils peuvent procéder au processus d'autorisation (un flux d'authentification typique initié par le SP) :
OIDC
OIDC est un protocole contemporain qui améliore le cadre OAuth 2.0. Il utilise des jetons Web basés sur JSON (JWT) pour construire des charges utiles de données. Les JWT, une norme industrielle établie, définissent des lignes directrices pour l'échange et la représentation sécurisés des allégations entre les entités. Ces allégations, essentiellement des données utilisateur cryptées, sont cruciales pour la vérification et la gestion des identités. OIDC utilise principalement le HTTPS omniprésent pour la transmission de données.
Comme il est largement reconnu, le protocole OIDC prend en charge une variété de flux différents, y compris le flux de code d'autorisation, le flux implicite, et le flux hybride. Dans l'exemple suivant, nous passerons par le plus sécurisé et le plus typique de ceux-ci : le flux de code d'autorisation. C'est également le flux utilisé par Logto.
Aspects distinctifs de OIDC et SAML
- Étant donné son développement plus récent, OIDC convient mieux à l'authentification des applications modernes comparé à l'ancienne norme SAML.
- Historiquement, SAML précède OIDC et a été intégré à de nombreux systèmes d'entreprise établis.
- Contrairement aux documents XML plus volumineux de SAML, les JWTs de OIDC sont compacts et plus conviviaux à traiter.
- La configuration de OIDC est généralement plus simple que celle de SAML.
- Une caractéristique clé de OIDC est sa définition des "scopes", permettant aux IdPs de gérer une variété d'autorisations. Les applications peuvent demander des autorisations spécifiques aux IdPs, qui sont accordées avec l'approbation de l'utilisateur. Cet attribut de OIDC offre aux IdPs un contrôle granulaire sur les autorisations.
Comment choisir entre OIDC et SAML ?
Les deux OIDC et SAML sont des systèmes d'authentification robustes, chacun avec ses forces uniques. Le choix dépend des besoins spécifiques de votre organisation.
- Pour un déploiement rapide et efficace de la plateforme d'identité, OIDC est préférable à SAML. La mise en œuvre de OIDC est plus simple, évitant la gestion complexe du XML que SAML nécessite pour l'analyse des métadonnées, le traitement des requêtes d'authentification et l'analyse des assertions SAML.
- OIDC est idéal pour les environnements avec des interactions API étendues et des mécanismes d'autorisation sophistiqués, offrant un contrôle plus adaptable et efficace sur les autorisations et une expérience développeur supérieure.
- Lors de l'intégration avec des systèmes établis qui sont basés sur SAML, choisir SAML assure une meilleure interopérabilité du système et réduit l'effort nécessaire pour relier différents protocoles.
Existe-t-il de bonnes solutions disponibles sur le marché ?
Logto, une solution d'identité populaire parmi les développeurs, a récemment introduit la fonctionnalité SSO d'entreprise. Elle offre un support pour les protocoles SAML et OIDC, ainsi que des intégrations prêtes à l'emploi pour les principaux IdPs comme Google Workspace et Microsoft Entra ID (anciennement Azure AD). Avec Logto, tu peux contourner les complexités de la mise en œuvre du SSO par toi-même. Quelques étapes de configuration simples activent le support du SSO dans ton système d'identité, te permettant de sélectionner le protocole approprié pour répondre aux besoins de ton entreprise.