SAML vs OIDC
SAML et OIDC sont les deux protocoles d'authentification les plus populaires utilisés dans l'industrie du SSO. Cet article compare SAML et OIDC en termes de leur architecture et de leurs cas d'utilisation.
Qu'est-ce que SAML?
SAML (Security Assertion Markup Language) est une norme ouverte basée sur XML pour échanger des données d'authentification et d'autorisation entre différentes parties, en particulier entre un fournisseur d'identité (IdP) et un fournisseur de services (SP). Il permet un SSO (Single Sign-On) basé sur le web, permettant aux utilisateurs de s'authentifier une fois pour accéder à plusieurs applications. SAML est un protocole mature qui existe depuis longtemps et est largement adopté par les entreprises. Certaines des plateformes SaaS les plus populaires comme Salesforce, Workday et Microsoft Azure AD prennent toutes en charge SAML SSO.
Composants SAML
- Fournisseur d'identité (IdP) : L'entité qui authentifie les utilisateurs et fournit des informations d'identité aux fournisseurs de services.
- Fournisseur de services (SP) : L'entité qui fournit des services aux utilisateurs et s'appuie sur le fournisseur d'identité pour authentifier les utilisateurs.
- Assertions SAML : Documents basés sur XML qui transportent les détails d'authentification et d'autorisation de l'utilisateur. Y compris, déclarations d'authentification, déclarations d'attributs et déclarations de décision d'autorisation.
- Protocole SAML : Définit le format de message et les règles pour échanger les assertions SAML entre l'IdP et le SP.
- Liaisons SAML : Définit comment les messages SAML sont transportés sur différents protocoles de communication comme HTTP POST, HTTP Redirect, etc.
- Métadonnées SAML : Documents basés sur XML qui contiennent les informations de configuration de l'IdP et du SP. Il inclut la clé publique, les points de terminaison et les liaisons prises en charge qui sont utilisées pour établir la confiance entre l'IdP et le SP.
- Point de terminaison de single sign-on : Le point de terminaison où le SP redirige l'utilisateur pour s'authentifier auprès de l'IdP.
- URL du service de consommation d'assertions (ACS) : Le point de terminaison où l'IdP envoie l'assertion SAML après une authentification réussie.
Comment fonctionne SAML?
- Flux de SSO initié par SP :
- Flux de SSO initié par IdP :
Avantages de SAML
- Mature et largement adopté : SAML est un protocole mature qui existe depuis longtemps et est largement adopté par les entreprises.
- Standardisé : SAML est une norme ouverte maintenue par OASIS, garantissant l'interopérabilité entre différents fournisseurs.
- SSO : SAML permet un SSO basé sur le web, permettant aux utilisateurs de s'authentifier une fois pour accéder à plusieurs applications.
- Gestion centralisée des utilisateurs : SAML permet aux organisations de gérer les identités utilisateur de manière centralisée et d'appliquer des politiques de sécurité de manière cohérente.
Défis de SAML
- Complexité : SAML est un protocole complexe qui nécessite une compréhension approfondie des concepts XML et de sécurité.
- Performance : Les messages SAML sont basés sur XML et peuvent être volumineux. La livraison et l'analyse XML peuvent être plus lentes par rapport aux formats de jetons comme JSON Web Token (JWT).
- Norme obsolète : SAML est une norme plus ancienne comparée à OIDC et considérée comme moins sécurisée.
- Verrouillage fournisseur : SAML est un protocole spécifique à un fournisseur, et le passage entre les fournisseurs peut être difficile.
Qu'est-ce que OIDC?
OIDC (OpenID Connect) est une couche d'identité construite sur le protocole OAuth 2.0. Similaire à SAML, OIDC est également utilisé pour échanger des données d'authentification et d'autorisation entre IdP et SP.
En comparaison à SAML, OIDC est un protocole plus moderne et léger qui gagne en popularité pour les applications web et mobiles modernes. OIDC utilise JWT pour transmettre des informations d'identité, ce qui est plus compact et plus facile à manipuler par rapport aux assertions basées sur XML de SAML. Il est particulièrement populaire pour les applications grand public et la sécurité des API.
Composants OIDC
- Fournisseur d'identité (IdP) : L'entité qui authentifie les utilisateurs et fournit des informations d'identité aux fournisseurs de services.
- Partie confiante (RP) : L'entité qui fournit des services aux utilisateurs et s'appuie sur le fournisseur d'identité pour authentifier les utilisateurs. Par exemple : applications web, applications mobiles ou API.
- Jetons OIDC : Jetons qui transportent les informations d'identité de l'utilisateur.
- Jeton d'identité: Jeton au format JWT qui contient les informations d'identité de l'utilisateur.
- Jeton d'accès: Jeton au format JWT ou opaque qui accorde l'accès aux ressources protégées.
- Jeton d'actualisation: Jeton utilisé pour obtenir un nouveau jeton d'accès sans exiger que l'utilisateur se réauthentifie. Il donne une autorisation hors ligne de longue durée à la RP.
- Points de terminaison OIDC : Points de terminaison utilisés pour l'authentification et l'échange de jetons. Les points de terminaison les plus importants sont :
- Point de terminaison Discovery : Où la RP peut récupérer les informations de configuration OIDC publiques de l'IdP.
- Point de terminaison d'autorisation : Où la RP envoie la demande d'authentification.
- Point de terminaison de jeton : Où la RP demande des jetons au serveur d'autorisation.
- Point de terminaison Userinfo : Où la RP peut récupérer les informations de profil de l'utilisateur.
- Portées : OIDC définit un ensemble de portées standard qui définissent les droits d'accès accordés à la RP. Comme
openid
,profile
,email
,address
, etc.
Comment fonctionne OIDC?
OIDC propose plusieurs flux conçus explicitement pour différents cas d'utilisation. Voici les deux flux OIDC les plus courants :
- Flux de code d'autorisation :
Le flux de code d'autorisation est le flux le plus courant utilisé dans OIDC pour les applications grand public.
- Flux des informations d'identification du client :
Le flux des informations d'identification du client peut être utilisé pour une authentification sans utilisateur (machine-à-machine).
Avantages de OIDC
- Moderne et léger : OIDC est un protocole contemporain qui utilise des jetons JWT basés sur JSON, qui sont plus compacts et plus faciles à manipuler par rapport aux assertions SAML basées sur XML.
- Applications grand public : OIDC est particulièrement populaire pour les applications grand public et la sécurité des API.
- Interopérabilité : Construit sur la base de OAuth 2.0, OIDC est compatible avec diverses plateformes, appareils et plateformes.
- Sécurité : OIDC offre une méthode plus sécurisée pour l'authentification des utilisateurs et la protection des API. Il intègre diverses fonctionnalités de sécurité modernes telles que l'introspection de jeton, la révocation de jeton, Proof Key for Code Exchange (PKCE) et prend en charge différents flux d'authentification adaptés à divers besoins de sécurité.
- Facilité d'utilisation : OIDC est plus simple à implémenter et travailler avec par rapport à SAML. Il est plus convivial pour les développeurs et dispose de bibliothèques et SDK complets pour plusieurs langages de programmation et plateformes.
Défis de OIDC
- Gestion des jetons : OIDC repose sur des jetons pour l'authentification et l'autorisation. Il nécessite des pratiques de gestion des jetons appropriées pour garantir la sécurité.
- Complexité : Bien que OIDC soit simple pour les configurations de base, en raison de sa flexibilité, il peut ajouter de la complexité lors de la mise en œuvre de personnalisations avancées. Par exemple, revendications personnalisées et contrôle d'accès basé sur les rôles (RBAC), etc.
- Adoption : OIDC est encore relativement nouveau comparé à SAML, en particulier dans le monde de l'entreprise. Certains systèmes hérités peuvent encore s'appuyer sur SAML pour des besoins de SSO.
Comparaison entre SAML et OIDC
Aspect | SAML | OIDC |
---|---|---|
Format de jeton | Assertions SAML basées sur XML | Jetons JWT basés sur JSON |
Cas d'utilisation principal | SSO d'entreprise, intégrations B2B | Applications grand public, sécurité API |
Facilité d'utilisation | Complexe, nécessite une compréhension approfondie de XML | Simple, basé sur JSON, facile à implémenter |
Adoption | Largement adopté par les entreprises | De plus en plus populaire pour les applications modernes |
Sécurité | Mature mais considéré comme moins sûr | Moderne, et plus sûr |
Flexibilité | Limitée, conçue pour les cas d'utilisation SSO | Flexible, prend en charge divers cas d'utilisation |
Avenir de SAML et OIDC
Les deux SAML et OIDC sont largement utilisés à des fins d'authentification et d'autorisation.
SAML reste une pierre angulaire pour le SSO d'entreprise et les intégrations B2B. Son support robuste pour la gestion d'identité fédérée et son bilan prouvé garantissent sa pertinence continue, en particulier pour les systèmes hérités et les grandes organisations.
OIDC, d'autre part, continue d'évoluer, poussé par la demande d'une authentification sécurisée et évolutive dans les applications modernes. Sa nature légère et son alignement avec les API et les microservices en font une pierre angulaire pour les architectures cloud-native et distribuées. Avec l'essor de l'authentification sans mot de passe, des biométriques et de l'authentification multi-facteurs (MFA), OIDC devrait s'intégrer facilement avec les technologies émergentes, garantissant sa pertinence dans les années à venir.