URL: https://linuxfr.org/news/sortie-de-lemonldap-ng-2-0 Title: Sortie de LemonLDAP::NG 2.0 Authors: KPTN yadd, ZeroHeure, bubarđŠ„, Xavier Teyssier, paucur, Davy Defaud et M5oul Date: 2018ćčŽ12æ03æ„T08:55:35+01:00 License: CC By-SA Tags: sso, lemonldap et sortie_version Score: 35 LemonLDAP::NG est un logiciel libre dâauthentification unique pour applications Web (WebSSO), de contrĂŽle dâaccĂšs et de fĂ©dĂ©ration dâidentitĂ©s, Ă©crit en Perl et publiĂ© sous licence GPL. Cette nouvelle version majeure apporte de grands changements au logiciel comme le prise en charge de Node.js, des seconds facteurs dâauthentification (OTP, U2F, Yubikey...), un mĂ©canisme de greffons, la protection de microâservices et bien dâautres qui seront dĂ©veloppĂ©s dans la suite de cet article.  ---- [DĂ©pĂȘche sur la sortie de la version 1.9](https://linuxfr.org/news/sortie-de-lemonldap-ng-1-9) [Annonce officielle sur le site OW2](https://projects.ow2.org/view/lemonldap-ng/lemonldap-ng-2-0-0-is-out/) [TĂ©lĂ©chargement](https://lemonldap-ng.org/download) [Documentation](https://lemonldap-ng.org/documentation/latest/start) [SSOaaS : notre concept du SSO en tant que service](https://lemonldap-ng.org/documentation/2.0/ssoaas) ---- Le projet LemonLDAP::NG a Ă©tĂ© publiĂ© pour la premiĂšre fois en 2005 par la Gendarmerie nationale. Il est aujourdâhui trĂšs largement dĂ©ployĂ© en France, notamment dans les administrations et collectivitĂ©s territoriales. Ses grands principes sont : - le SSO doit ĂȘtre faiblement intrusif dans les applications : pas dâobligation dâutiliser une bibliothĂšque ou un langage spĂ©cifique, prise en charge dâun maximum de protocoles, etc. ; - le SSO ne doit pas pĂ©naliser les performances des applications (architecture extensible, faible surcharge...) ; - pont protocolaire : LemonLDAP::NG permet de connecter une application utilisant le protocole standard X sur une infrastructure basĂ©e sur le protocole Y ; - et, bien sĂ»r, la sĂ©curitĂ© et le confort des utilisateurs.  # Principales nouveautĂ©s de la version 2.0 # Voici les principales nouveautĂ©s de cette nouvelle version majeure : - meilleur fonctionnement du pont protocolaire : de nombreux tests unitaires valident le fonctionnement du SSO lors du passage dâun protocole Ă un autre ; par exemple, une application qui sâauthentifie en SAML sur le portail WebSSO, qui luiâmĂȘme redirige en OpenID Connect sur un fournisseur dâidentitĂ© externe (France Connect, Google, etc.) ; - authentification multiâfacteur ; - SSOaaS (_SSO as a Service_) ; - un moteur de greffons permettant de crĂ©er des composants dâauthentification ou toutes sortes dâapplications sâintĂ©grant au portail sans avoir Ă modifier le code source et ainsi mieux gĂ©rer les montĂ©es de version. Vous pouvez consulter la [liste complĂšte des nouveautĂ©s](https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/milestones/51). ## Handler Node.js ## Node.js est une plateâforme trĂšs populaire pour le dĂ©veloppement dâapplications Web. La version 2.0 inclut un [_handler_ node.js](https://lemonldap-ng.org/documentation/2.0/nodehandler) en version bĂȘta, qui permet de protĂ©ger une application Node.js par LemonLDAP, directement dans le code de lâapplication. Cela permet Ă©galement de rendre facilement une application compatible avec des protocoles de SSO comme SAML ou OpenID Connect. Ce _handler_ ne gĂšre pas encore toutes les fonctionnalitĂ©s de LL::NG. Le _handler_ Node.js fournit Ă©galement un moteur alternatif pour le SSO en tant que service. ## Seconds facteurs dâauthentification ## LemonLDAP::NG gĂšre dĂ©sormais directement les seconds facteurs dâauthentification (2FA), en particulier : * les pĂ©riphĂ©riques U2F ; * TOTP (FreeOTP, Authy, GoogleAuthenticator...) ; * les clefs Yubikey ; * les appels [REST](https://lemonldap-ng.org/documentation/2.0/rest2f) Ă un service Web externe ; * nâimporte quelle autre commande via le module [External 2F](https://lemonldap-ng.org/documentation/2.0/external2f). ## Greffons ## LemonLDAP::NG est dĂ©sormais capable de gĂ©rer des dĂ©veloppements spĂ©cifiques sans pour autant risquer de les casser en cas de mise Ă jour, via un [systĂšme de greffons](https://lemonldap-ng.org/documentation/2.0/start#plugins). Quelques exemples dĂ©jĂ disponibles : * [_Auto Signin_](https://lemonldap-ng.org/documentation/2.0/autosignin) : permet de sâauthentifier automatiquement en fonction dâune rĂšgle, par exemple une adresse IP ; * [_Brute Force Protection_](https://lemonldap-ng.org/documentation/2.0/bruteforceprotection) : permet de gĂ©rer la protection contre les attaques en force brute directement dans LemonLDAP::NG ; * [_Check State_](https://lemonldap-ng.org/documentation/2.0/checkstate) : permet de gĂ©nĂ©rer une page de statut pour une meilleure intĂ©gration avec des outils de supervision ; * etc. ## SSO as a Service (SSOaaS) ## Le contrĂŽle dâaccĂšs SSO fournit trois services : * authentification globale ; * gestion des autorisations : authentifier nâest pas suffisant, les droits dâaccĂšs doivent ĂȘtre examinĂ©s ; * traçabilitĂ© : * traces dâaccĂšs issues du SSO, * traces des actions de lâutilisateur. LemonLDAP::NG fournit tous ces services (Ă lâexception des traces des actions des utilisateurs qui doivent ĂȘtre gĂ©nĂ©rĂ©es par lâapplication, mais LemonLDAP::NG fournit les identifiants Ă enregistrer via les enâtĂȘtes HTTP). Les acronymes « \*aaS » signifient que lâapplication peut piloter la couche sousâjacente (IaaS, pour lâinfrastructure ; PaaS, pour la plateâforme...). Pour nous, le SSOaaS doit fournir la possibilitĂ© pour une application de gĂ©rer ses droits et choisir les attributs Ă transmettre : un fichier [JSON](https://fr.wikipedia.org/wiki/JavaScript_Object_Notation "JavaScript Object Notation") est prĂ©sent Ă la racine de lâapplication et permet de dĂ©finir ces paramĂštres, sans avoir Ă manipuler la configuration centrale du WebSSO. Lâauthentification SSO ne peut ĂȘtre rĂ©ellement « \*aaS » : lâapplication lâutilise sans la gĂ©rer, bien sĂ»r. LemonLDAP::NG fournit donc les fonctionnalitĂ©s permettant de mettre en Ćuvre le SSOaaS dans ces conditions. Encore un peu rustique, cette prise en charge sera amĂ©liorĂ©e dans les prochaines mises Ă jour de la branche 2.0. ## Serveur Ă Serveur ## Les applications modernes utilisent des microâservices Web. LemonLDAP::NG fournit un dispositif permettant de donner Ă une application un ticket quâelle peut utiliser sur dâautres microâservices protĂ©gĂ©s par le WebSSO pour : - propager lâidentitĂ© de lâutilisateur final ; - permettre aux microâservices de vĂ©rifier les droits de lâutilisateur final ; - limiter lâaccĂšs de cette application aux seuls microâservices autorisĂ©s dans la console dâadministration LemonLDAP::NG ; - limiter lâusage dans le temps de ce ticket (30 secondes). Lâalternative consistant Ă donner Ă lâapplication le ticket SSO de lâutilisateur est nettement moins sĂ©curisĂ©e : lâapplication obtiendrait ainsi tous les droits de lâutilisateur pendant tout le temps de sa session. La solution apportĂ©e par LemonLDAP::NG est une alternative Ă OAuth2, moins intrusive : le microâservice nâa pas besoin de valider le jeton dâaccĂšs, ce jeton est consommĂ© directement par un _handler_ qui retransmet ensuite lâidentitĂ© de lâutilisateur via des enâtĂȘtes HTTP. ## FĂ©dĂ©ration Renater ## LemonLDAP::NG est dĂ©sormais compatible nativement avec le systĂšme de [fĂ©dĂ©ration de Renater](https://lemonldap-ng.org/documentation/2.0/renater), permettant de rendre son dĂ©ploiement plus facile dans lâĂ©ducation, les universitĂ©s, les laboratoires et le secteur public utilisant la fĂ©dĂ©ration de Renater. ## Manager ## ### DiffĂ©rentiel des configurations ### Cette nouvelle fonctionnalitĂ© permet dâafficher directement dans le _Manager_ la diffĂ©rence entre deux versions de la configuration et donc dâidentifier plus facilement les paramĂštres qui ont Ă©tĂ© modifiĂ©s. ### Gestion des ACL pour les protocoles CAS, SAML et OpenID Connect ### Il est dĂ©sormais possible de dĂ©finir des listes de contrĂŽle dâaccĂšs (ACL) pour des applications reliĂ©es par CAS, SAML et OpenID Connect. Ces rĂšgles peuvent ĂȘtre Ă©galement utilisĂ©es pour afficher ou non lâicĂŽne des applications dans le menu. ### Autres - explorateur de sessions : possibilitĂ© de trier les sessions par date de crĂ©ation et de modification ; - journaux : possibilitĂ© de gĂ©rer les journaux sĂ©parĂ©ment (traces techniques et traces des utilisateurs) : - journaux du serveur (Apache uniquement) ; - journal systĂšme (syslog) ; - Log4Perl (compatible Log4J) ; - [Sentry](https://sentry.io/welcome/) (Ă utiliser de prĂ©fĂ©rence avec Dispatch) ; - Dispatch : permet de tracer sĂ©parĂ©ment en fonction du niveau dâalerte. ## Portail ## ### RafraĂźchissement de la session Il est Ă prĂ©sent possible pour lâutilisateur de rafraĂźchir sa session sans avoir besoin de se dĂ©connecter, utile dans le cas de lâajout Ă un nouveau groupe apportant de nouvelles applications sur le portail. ### Autres * sĂ©lection de la langue avant la connexion ; * nouvelles langues : vietnamien, arabe et italien, en plus de lâanglais et du français ; * gestion du changement de logo du portail sans modifier le thĂšme ; * passage du portail sur Bootstrap 4. # Contributeurs Les contributeurs suivants ont participĂ© Ă cette nouvelle version : * dĂ©veloppeurs principaux : Xavier Guimard, Christophe Maudoux et ClĂ©ment Oudot ; * organisations (sponsors et bĂȘtaâtesteurs) : la Gendarmerie nationale, Worteks, Orange, Huma Num, Campus Condorcet, AgircâArrco et Urgences SantĂ© QuĂ©bec ; * communautĂ© (ouvertures de tickets, tests et correctifs) : ValĂ©rie Bauche, David Coutadeur, FrĂ©dĂ©ric Massot, Mathieu LecompteâMelançon, Nicolas Chauvet, Mathieu Parent, Rick Jongbloed, JĂ©rĂ©my Kespite, Philippe Baye, Pasi Karkkainen, Julian Layen, Quentin JabĆuf, StĂ©phane Liabat, Emmanuel Lesouef, FrançoisâXavier Deltombe, Iheb Khemissi, JeanâCharles Rogez, Nicolas Dutertre, Maxime de Roucy, _pit pit_, Carl R., Dave Conroy, Paul Curie, Dejan Sanader, JeanâFrançois Vincent, Anthony Roussel, Xavier Bachelot, _Lulandco_, CĂ©dric Liard, FrĂ©dĂ©ric PĂ©gĂ©, Jonathan Swaelens et Michael Goldfinger.