Naviguer dans l'authentification d'identité : Du LDAP aux protocoles modernes
March 28, 2024
Lors de la construction du mécanisme d'authentification d'identité pour les applications réseau, les ingénieurs sont confrontés à divers choix. Une approche consiste à concevoir un mécanisme d'authentification personnalisé, qui peut être adapté à certaines applications nouvellement développées. Une autre approche consiste à adopter des normes populaires largement reconnues, ce qui non seulement facilite la compatibilité avec les applications existantes, mais garantit également l'interopérabilité avec d'autres services, simplifiant ainsi le processus d'intégration. Par conséquent, une compréhension approfondie des technologies courantes d'authentification d'identité est cruciale pour construire des services d'authentification d'identité robustes et interopérables.
LDAP / Active Directory
LDAP (Lightweight Directory Access Protocol) est un protocole basé sur IP spécialement conçu pour accéder aux services d'annuaire. Il est à noter que l'Active Directory de Microsoft prend également en charge ce protocole.
Les services d'annuaire sont une forme spéciale de base de données qui organise diverses ressources (telles que les utilisateurs, les organisations, les appareils, etc.) à l'aide d'identifiants uniques. Ce stockage de données structuré permet aux clients d'interroger les ressources nécessaires dans la base de données en utilisant une syntaxe de recherche spécifique. Pour les ressources stockées dans les services d'annuaire, elles peuvent contenir des informations d'attribut riches, telles que le nom, l'e-mail, le numéro de téléphone d'un utilisateur, etc. Pour les serveurs LDAP spécifiques, il existe généralement des modèles intégrés pour spécifier les exigences relatives aux clés et valeurs d'attribut, garantissant ainsi l'exactitude des données.
Dans les environnements d'entreprise, les applications LDAP/Active Directory sont particulièrement répandues. Les entreprises peuvent stocker les informations des employés dans une structure hiérarchique basée sur leurs départements, et chaque ressource "utilisateur" peut stocker les informations de base et les identifiants des employés.
Intégration de LDAP dans les applications
Pour de nombreuses applications existantes, l'intégration du protocole LDAP est devenue une fonctionnalité importante, soit intégrée par défaut, soit implémentée via des mécanismes d'extension. Prenons Apache APISIX comme exemple, il a réussi à implémenter l'intégration LDAP grâce à un mécanisme de plugin flexible. Cette intégration permet aux clients d'envoyer des noms d'utilisateur et des mots de passe au format basic auth, puis d'interroger et de valider les identifiants des utilisateurs sur le serveur LDAP, sécurisant ainsi efficacement les requêtes API.
Dans les applications et services développés par les ingénieurs, le protocole LDAP peut également être utilisé pour implémenter des fonctions de gestion des utilisateurs et d'authentification. En utilisant les bibliothèques clientes LDAP fournies par des langages de programmation spécifiques, il est facile de se connecter aux services LDAP. Une fois la connexion établie, l'API Search peut être utilisée pour interroger les ressources dans l'annuaire et récupérer les attributs utilisateur nécessaires.
Avantages et inconvénients de LDAP
Avantages
-
Stockage centralisé et interrogation efficace : Les données sont stockées de manière centralisée dans les services d'annuaire, et leur structure organisationnelle améliore grandement la vitesse d'interrogation, facilitant ainsi la gestion d'un grand nombre de requêtes de lecture.
-
Structure arborescente intuitive : La structure arborescente des services d'annuaire ressemble étroitement à la structure organisationnelle du monde réel, ce qui permet d'indexer facilement les ressources sur les nœuds feuilles, en accord avec l'intuition des utilisateurs.
-
Intégration largement répandue : En raison de sa maturité et de sa stabilité, le protocole LDAP est intégré par défaut dans de nombreux logiciels.
Inconvénients
-
Protocole obsolète : Le protocole LDAP a été conçu à une époque antérieure, utilisant l'encodage ASN.1, qui diffère considérablement du format JSON dominant aujourd'hui, rendant l'intégration quelque peu difficile.
-
Fonctionnalités limitées et problèmes de compatibilité : Le protocole lui-même offre des fonctionnalités limitées, ce qui conduit certains logiciels de serveur LDAP à étendre leurs fonctionnalités par des moyens non standard, ce qui peut affecter la compatibilité entre différents serveurs LDAP.
-
Configuration complexe et défis de sécurité : La configuration des serveurs LDAP implique de nombreux facteurs de sécurité, tels que TLS et le contrôle d'accès aux données, nécessitant une expérience riche pour garantir une configuration correcte, sans quoi il y a un risque de fuite de données.
-
Difficulté d'implémentation dans les applications : Du point de vue des applications, l'accès aux serveurs LDAP est similaire à l'accès aux bases de données, nécessitant l'utilisation d'API de bas niveau comme Search pour accéder aux données, ce qui pose des exigences élevées aux développeurs d'applications.
La modernisation de LDAP
Bien que le protocole LDAP puisse sembler quelque peu obsolète dans l'environnement technologique actuel, il est toujours largement pris en charge par de nombreux logiciels grand public en tant que norme classique. De nombreuses entreprises continuent de s'appuyer sur LDAP pour gérer diverses ressources au sein de l'organisation, et sa stabilité et sa fiabilité ont été vérifiées dans des applications pratiques.
Pour surmonter certaines limitations du protocole LDAP dans les applications modernes, certains produits middleware ont émergé. Ces middleware encapsulent le protocole LDAP en interne et fournissent des interfaces de protocole plus modernes et conviviales, telles que OpenID Connect :
- Dex : https://dexidp.io
- Keycloak : https://www.keycloak.org
Ils gèrent la conversion et l'adaptation des protocoles, fournissant des protocoles modernes pour réduire la charge de travail d'intégration pour les développeurs d'applications.
Ces produits middleware sont responsables de la conversion et de l'adaptation des protocoles, fournissant aux développeurs d'applications des méthodes d'intégration plus modernes et efficaces, réduisant ainsi efficacement la charge de travail nécessaire pour intégrer LDAP.
Mécanisme d'authentification d'identité basé sur HTTP
Dans le domaine de l'authentification d'identité, les protocoles basés sur HTTP jouent un rôle crucial. OpenID Connect (OIDC), SAML et CAS en sont des représentants.
OpenID Connect
OpenID Connect est une extension d'OAuth 2, fournissant non seulement des capacités d'autorisation, mais également des capacités d'authentification d'identité améliorées. Par rapport aux fonctionnalités limitées d'OAuth 2, OIDC offre des fonctionnalités plus riches, telles que la fonctionnalité de base id_token et les normes de découverte OIDC.
L'avantage d'OIDC réside dans son application largement répandue et son écosystème riche. Des implémentations matures de serveurs et de clients sont disponibles dans divers langages de programmation, facilitant l'intégration et le déploiement. En outre, OIDC peut être combiné avec d'autres technologies, telles que l'utilisation de JSON Web Tokens (JWT) comme jetons, tirant parti de leur nature sans état pour réduire la charge sur les services d'authentification d'identité.
CAS
CAS (Central Authentication Service) est un protocole d'authentification d'identité largement utilisé dans les scénarios web, utilisé pour implémenter la fonctionnalité de single sign-on. Le protocole CAS est relativement simple dans sa conception et facile à intégrer dans diverses applications. De plus, il peut être utilisé en production. Il est à noter que les plateformes de gestion d'authentification d'identité comme Keycloak prennent également en charge le protocole CAS, élargissant ainsi son champ d'application.
SAML
SAML (Security Assertion Markup Language) est un protocole d'authentification d'identité de longue date, la version actuelle SAML 2.0 ayant été publiée en 2005. Le protocole utilise XML comme méthode d'encodage pour la communication entre services et définit des structures de données uniques. Cependant, en raison de la mise en œuvre relativement complexe de SAML et de son utilisation moins intuitive et directe, ses avantages ne sont pas aussi évidents par rapport aux protocoles d'authentification d'identité modernes comme OIDC et CAS.
Néanmoins, des solutions de gestion des identités et des accès comme Keycloak fournissent toujours des implémentations de serveur SAML pour répondre aux besoins d'authentification d'identité dans des scénarios spécifiques.
Synchronisation et gestion des identités utilisateur
Considérons un scénario courant : une entreprise fournit plusieurs systèmes d'applications internes à ses employés et adopte le single sign-on pour améliorer l'expérience utilisateur. Cependant, chaque fois qu'un nouvel employé rejoint ou qu'un ancien employé quitte, les administrateurs IT doivent créer ou supprimer manuellement des comptes dans divers systèmes, un processus non seulement fastidieux mais également accompagné de risques de sécurité potentiels.
Pour résoudre ce problème, les administrateurs IT ont urgemment besoin d'un outil de gestion de comptes utilisateur standardisé et automatisé. C'est dans ce contexte que la norme SCIM (System for Cross-domain Identity Management) émerge.
La norme SCIM définit une série d'API REST spécifiques conçues pour réaliser une interopérabilité transparente entre les IDP (fournisseurs d'identité) et les systèmes d'applications ou services SaaS. Grâce à ces API, les utilisateurs peuvent configurer automatiquement des comptes, simplifiant grandement le processus de création, de mise à jour et de suppression de comptes.
Depuis son introduction, le protocole SCIM a été largement adopté et appliqué. Par exemple, des solutions de gestion des identités bien connues comme Microsoft Entra ID (anciennement Azure Active Directory) et Okta prennent en charge le protocole SCIM. En outre, des plateformes open-source de gestion des identités et des accès comme Keycloak fournissent également des extensions serveur/client SCIM, enrichissant ainsi leurs scénarios d'application.
Conclusion
Cet article présente brièvement les principales technologies largement utilisées dans les scénarios d'authentification d'identité. Dans le processus de construction de services d'authentification d'identité efficaces et sécurisés, ces solutions techniques matures jouent un rôle crucial. Elles simplifient grandement les travaux d'intégration, améliorent l'efficacité du travail et réduisent efficacement les risques de sécurité, garantissant ainsi la sécurité des données de l'entreprise et des informations des utilisateurs. En tirant parti de ces solutions technologiques, nous pouvons mieux répondre aux exigences de l'authentification d'identité moderne, offrant ainsi une expérience plus pratique et sécurisée aux entreprises et aux utilisateurs.