LemonLDAP::NG : une solution SSO qui mérite notre intérêt

SSO Open source LemonLDAP::NG LL::NG OIDC OpenID Connect auto-hébergeable

Premier article d'une série d'articles sur l'installation et la configuration de LemonLDAP::NG logiciel open source qui fournit une solution d'authentification unique distribuée avec gestion centralisée des droits. Il permet de mettre en place une solution SSO (Single Sign-On / Authentification unique) pour les applications Web et donc de faciliter leur usage par les utilisateurs.

Pourquoi LemonLDAP::NG

Depuis quelques mois je teste différents logiciels permettant de mettre en place une solution SSO. Dans le cadre d'une expérimentation, je souhaitais pousser ces différentes solutions dans leur retranchement avec comme critères :

  • La possibilité d'utiliser différents backend d'authentification : LDAP pour les utilisateurs externes à l'entité et Active Directory / Kerberos pour les utilisateurs internes à l'entité.
  • Mettre en place le SSO et les contrôles d'accès avec le protocole OIDC suivant les backend d'authentification et les groupes d'utilisateurs.
  • Permettre aux utilisateurs internes à l'entité de se connecter automatiquement par le biais du protocole SPNEGO (Simple and Protected GSS-API Negotiation Mechanism / Mécanisme de négociation GSS-API simple et protégé)

Voici un court résumé des différentes solutions testées qui se base sur mes connaissances acquises elles-même sur mon expérience personnelle (forcément imparfaite) :

Authelia :

  • Pros :
    • Docker-compose.yml très clair.
    • Configuration "facile".
    • Documentation très bien fourni.
    • Cas d'usage.
  • Cons :
    • Pas de d'authentification Kerberos.
    • Pas de multi-backend d'authentification.
    • Non multi-tenant (plusieurs royaumes possibles).
    • Pas de SAML.
    • Pas de dashboard permettant l'intégration des applications.

La solution est parfaite pour un petit CHATONS (Collectif des Hébergeurs Alternatifs, Transparents, Ouverts, Neutres et Solidaires) ou une structure simple mais avec peu de fonctionnalités. Dans tous les cas, elle ne répond pas à mes critères.

Authentik :

  • Pros :
    • Docker-compose.yml fourni par l'éditeur.
    • Documentation très fournies.
    • Multi-backend d'authentification.
    • Intégration des applications à travers un dashboard.
    • Bcp de cas d'usage.
    • Multi-tenant.
  • Cons :
    • Pas d'auth kerberos. C'est prévu mais il faudra prendre la version entreprise (payante).
    • Me parait un peu lourd à comprendre dans le cadre de la maintenance.

Si l'authentification Kerberos avait été implémentée, j'aurai certainement arrếté mes recherches. Dans sa version gratuite, elle fera tout aussi efficacement son travail qu'Authelia mais avec plus de fonctionnalités.

Keycloak :

  • Pros :
    • Multi-tenant.
    • Multi-backend d'authentification dont Kerberos.
    • Intégration des applications à travers un dashboard.
  • Cons :
    • Documentation très succinctes.
    • Beaucoup de cas d'usage obsolètes ou en version dev notamment avec Docker (bcp de Jboss comme image Docker alors que cette image n'est plus maintenue depuis 2 ans).

J'ai failli retenir cette solution en version bare-metal jusqu'au moment où j'ai voulu gérer les accès aux applications sans pouvoir la mettre en place. La documentation officielle est très pauvre à mon goût. Ce qui m'a alors amené à (re)tester LemonLDAP::NG.

LemonLDAP::NG :

  • Pros :
    • Installation avec les dépôts dans le cas de Debian.
    • C'est français (argument chauvin :p ).
    • Multi-backend d'authentification dont Kerberos.
    • Bonnes intégrations des applications à travers un dashboard très propre.
  • Cons :
    • C'est français mais la doc est entièrement en anglais et un peu bordélique.
    • Très peu de cas d'usage sur le net contrairement aux solutions citées plus haut.
    • Interface web de configuration avec beaucoup de clics.
    • Non multi-tenant.

J'ai d'abord baissé les bras une première fois sur LemonLDAP::NG à cause de la configuration des multiples backend d'authentification qui est documentée mais pas évidente à comprendre dans sa mise en place. Puis à force de fouiller dans la documentation et ayant eu l'info que le multiple backend était possible, j'ai réussi à monter une solution répondant à mes critères. Mais je le redis, c'était une plaie à trouver les informations notamment par le manque de retours sur le net. C'est la raison pour laquelle j'ai décidé de rédiger plusieurs articles sur le sujet.

Article précédent Article suivant