Authentification unique : quelques logiciels libres disponibles

📌 Contexte
Cette note propose une introduction au concept d'authentification unique et propose quelques logiciels libres disponibles pour mettre en place un tel système. Elle s'inscrit dans la série de notes Rêver En commun 2030 - un logiciel libre dans un écosystème ouvert, réalisée par FACiL.

Authentification (unique) ?

Il y a beaucoup de jargon en informatique. Une partie de ce jargon est malheureusement faite de buzzwords flous et parfois trompeurs disséminés dans l'infosphère par les départements de marketing des entreprises technos. L'autre partie et constituée de termes techniques difficiles d'accès pour les non inités. «Authentification» est un de ces termes. Pour expliquer son sens, il est fréquent de passer par la distinction entre l'«identification», l'«authentification» et l'«autorisation». Je vais donc faire exactement ça... désolé pour ceux et celles qui espéraient une grande innovation ici ! 😜

  • L'identification est l'action qui consiste à reconnaître un utilisateur. Si un utilisateur cherche à se connecter au système Z en tant que «jacques44», ce nom doit exister pour le système Z, autrement il retournera un message du type «Identifiant incorrect». Pour exister du point de vue du système Z, un identifiant doit se trouver dans sa base d'utilisateurs, qui peut être interne ou externe.
  • L'authentification est l'action qui consiste à vérifier l'authenticité d'une identité (ou autre objet nécessitant vérification). «jacques44» est bien l'identifiant d'un utilisateur existant pour le système Z, mais comment s'assurer que la tentative de connexion provient bien du propriétaire légitime du compte associé à «jacques44» ? C'est ici qu'intervient le «mot de passe», que tout le monde connaît (pour le meilleur et pour le pire). Nettement plus intelligent que le mot de passe quand on transige sur Internet (qui est insécure dans ses fondements) est le défi cryptographique via paire de clés publique et privée. C'est encore mieux si on peut multiplier les facteurs d'authentification (deux ou plus).
  • L'autorisation est l'action de permettre ou non l'accès à certaines ressources du système Z par l'utilisateur «jacques44» une fois qu'il a été correctement identifié et authentifié.

Voilà qui pose les bases.

Qu'est-ce donc que l'authentification «unique» alors ?

💡 L'authentification unique (en anglais Single Sign-On) est une méthode permettant de réaliser l'authentification une seule fois sur un seul système (disons K) afin d'avoir accès à un ensemble d'autres systèmes (disons notre ami Z et ses compagnons Y et X).

Quelques exemples concrets que beaucoup de gens connaissent :

  • Je me connecte une fois avec mon Apple ID et j'ai accès à toute une panoplies d'applications en ligne d'Apple ; c'est la même histoire avec un compte Google ou Microsoft
  • Je me connecte une fois avec mon compte de l'UQAM et j'accède à l'ensemble des services aux étudiant.e.s de l'UQAM ; idem pour les autres universités.

Critères

Pour être considéré dans la comparaison qui suit, un logiciel d'authentification unique doit bien sûr d'abord être un logiciel libre. Viennent ensuite d'autres critères, qui sont en partie spécifiques à l'évaluation des logiciels libres :

  • le projet et sa communauté : la licence, la communauté, ses participants, ses règles, son niveau d'activité et de maturité, le niveau d'adoption (qui sont les utilisateurs), l'état de la traduction française, etc.,
  • les technologies : les langages de programmation, les cadriciels (frameworks) et tout ce qui fait partie de l'environnement et des méthodes de développement,
  • les fonctionnalités : le focus porte sur le support des divers facteurs d'authentification et des serveurs mandataires (proxy),
  • les protocoles : uniquement ceux relatifs à l'authentification unique (OpenID, OAuth, SAML, etc.),
  • les modes de déploiement : comment le logiciel peut-il être déployer en production.

Il est possible bien sûr de multiplier les critères de comparaison, notamment au niveau des fonctionnalités recherchées, de l'expérience d'utilisation, de la performance, etc. Pour aller plus loin, il n'y a pas 36 chemins : il faudra passer par l'étape nécessairement énergivore de déployer et de tester concrètement !

Ce qui suit est le résultat d'une évaluation sommaire qui permet justement de sélectionner trois ou quatre logiciels à tester parmi ceux qui existent.

Exemples de logiciels

Keycloak

Keycloak est possiblement la solution de gestion des identités et des accès la plus connue et déployée en entreprise parmi celles qui sont libres. Elle émerge en 2014 à l'initiative de Bill Burke et Stian Thorgersen. Au départ construite avec le serveur applicatif pour Java nommé Wildfly (commercialisé par Red Hat sous le nom de JBoss EAP), elle est depuis la version 17 (février 2022) distribuée par défaut sur la base du cadriciel Quarkus. Ce changement reflète la volonté des développeurs de positionner Keycloak comme application conçue d'abord pour le déploiement en environnement infonuagique (notamment Kubernetes). Keycloak est d'ailleurs un projet en incubation à la Cloud Native Computing Foundation (Linux Foundation) depuis avril 2023.

Il n'y a pas que dans le secteur privé qu'on déploie Keycloak : depuis décembre 2022, le gouvernement du Québec est en train de remplacer clicSÉQUR (qui a plus de 20 ans déjà !) par le Service d'authentification gouvernementale (SAG), qui repose sur Keycloak. Le déploiement du SAG est le premier volet dans l'implantation du Service québécois d'identité numérique (SQIN).

Django-Allauth

Django est un cadriciel pour le développement d'applications Web très populaire auprès des développeurs qui aiment le langage Python. Les plateformes En commun sont par exemple développés sur la base de Django. En octobre 2010, un dénommé Raymond Penners a entrepris de développer un ensemble d'applications pour Django capable de répondre aux besoins d'authentification et de contrôle d'accès des développeurs Web qui travaillent avec Django. L'ensemble, qui s'appelle Django-Allauth, est en mesure de gérer divers types de comptes, mécanismes et facteurs d'authentification et s'intègre harmonieusement à vos applications Web existantes.

Django-Allauth peut s'avérer un excellent choix dans le contexte bien précis du développement Web avec Python et Django.

authentik

Jens Langhammer (Allemagne) lance authentic en novembre en 2018 et une première version stable du logiciel est publiée en août 2020. L'enteprise Authentik démarre ses activités en novembre 2022 et fonctionne suivant le modèle très répandu de l'open core : un logiciel libre, offert sans support autre que communautaire, qui est la base d'une solution «entreprise», qui vient avec du support commercial et des fonctionnalités ou services supplémentaires.

Le logiciel, écrit en Python, est conçu pour répondre aux besoins de petites comme des grandes organisations. La documentation officielle couvre le cas d'un déploiement simple via Docker Compose et d'un déploiement plus ambitieux via un chart Helm (Kubernetes). Simple à mettre en place, facile d'apprentissage grâce à une interface intuitive, authentik mérite au minimum d'être essayé !

LemonLDAP::NG

La Gendarmerie nationale française est pionnière dans l'adoption du logiciel libre du côté des serveurs comme des postes clients. Elle est aussi à l'origine du développement d'un logiciel d'authentification unique nommé LemonLDAP::NG. Le projet, qui remonte à environ 2004-2005, exploite le langage Perl. Malgré son nom, il ne nécessite pas forcément de serveur LDAP pour fournir les données sur les utilisateurs : il est possible d'utiliser un serveur SQL, de simples fichiers et d'autres méthodes encore.

Depuis la version 2.0, qui remonte à 2018, le logiciel dépend par défaut de Nginx, mais il est toujours possible d'utiliser Apache (ou un autre serveur compatible FastCGI). L'installation est possible via des paquets officiels (pour Debian/Ubuntu et RHEL/CentOS), des images Docker (Docker Compose ou Kubernetes). S'il est simple à installer, LemonLDAP::NG est un peu complexe à configurer, malgré son interface Web d'administration.

Le logiciel est mis à disposition sous licence GPLv2. Il n'y a pas d'édition «entreprise» avec des fonctionnalités supplémentaires.

Autres logiciels

Pour rédiger cette note nous avons rassemblé des informations éparpillées sur Internet dans des tableaux comparatifs disponibles en ligne sur Wiki FACiLe. Nous vous invitons à consulter ces tableaux pour retrouver toutes les notes et références concernant tous les logiciels évalués (8 au total).

note Note(s) liée(s)

diversity_3Organisation(s) reliée(s)

bookmark Terme(s) relié(s)

padding Carnet(s) relié(s)

file_copy 27 notes
Analyse de soutenabilité des plateformes En commun
file_copy 27 notes
person
Intégré par Joël Nadeau, le 16 septembre 2024 11:34

Auteur·trice(s) de note

forumContacter l’auteur·trice

forumDiscuter de la note

Publication

16 septembre 2024

Modification

25 septembre 2024 12:38

Historique des modifications

Visibilité

lock_open public

Pour citer cette note

Mathieu Gauthier-pilote. (2024). Authentification unique : quelques logiciels libres disponibles. Praxis (consulté le 5 octobre 2024), https://praxis.encommun.io/n/ef6ouqcKw4nK9gFgpIXZH_KErvw/.

shareCopier