LemonLDAP::NG CAS la baraque
CAS que c'est ?
CAS (Central Authentication Service) est un système de SSO alternatif à LemonLDAP::NG, basé sur le principe de la délégation : chaque service fait appel au serveur central SSO pour obtenir l'identité de l'utilisateur. Le protocole CAS utilise des tickets transmis via des redirections HTTP, puis validés par l'application elle-même en interrogeant directement le serveur central (ce qui est appelé lien dorsal, ou backlink en anglais).
L'avantage de CAS est donc de cloisonner les services, c'est-à-dire qu'un ticket de service ne permettra pas d'accéder à un autre service. Reste que le cookie SSO principal (celui du portail d'authentification) permet lui d'obtenir tous les tickets pour tous les services.
CAS est un protocole, passé successivement aux versions 1.0 et 2.0. Par amalgame CAS désigne aussi souvent l'implémentation serveur de référence fournie par JASIG. Toutefois il est possible d'utiliser d'autres produits en tant que serveur CAS, comme c'est le cas désormais de LemonLDAP::NG.
Fidèle CAS trop
En effet, comme mentionné dans des billets précédents, les développements sur LemonLDAP::NG sont très actifs ces derniers temps. La plupart des efforts ont été concentrés sur l'implémentation de SAML 2.0, mais la nouvelle mouture de LemonLDAP::NG proposera également le support d'OpenID et de CAS (à la fois en tant que client -consumer- et serveur -provider-).
CAS a mia
Intéressons-nous tout d'abord à la partie cliente. Elle existe depuis quelques années dans LemonLDAP::NG, permettant de "CASsifier" le portail d'authentification. Concrètement, cela permet d'utiliser un serveur CAS externe comme authentification primaire sur LemonLDAP::NG.
La nouvelle version de ce module apporte une nouveauté : le mode mandataire (proxy).
Ce mode permet de déclarer des applications protégées par LemonLDAP::NG comme mandatées. Dans ce cas des tickets proxy CAS sont obtenus pour chacune des applications et ensuite disponibles dans la session de l'utilisateur. Ils peuvent donc être ensuite transmis à l'application qui pourra les valider directement avec le serveur CAS. Cela est très utile par exemple pour protéger un webmail CASsifié, qui utilise en sous-main pam_cas pour valider l'identité de l'utilisateur.
Mare à CAS
La partie serveur elle est toute neuve. Basé sur l'interface de fournisseur d'identité créée pour l'intégration SAML, le fournisseur CAS implémente tout le protocole CAS 1.0 et CAS 2.0.
LemonLDAP::NG devient donc le premier serveur CAS écrit en Perl !
Vodka Lemon ou Gin CAS ?
Désormais, CAS n'est plus une alternative à LemonLDAP::NG, mais l'un de ces protocoles d'authentification. Il est donc possible de passer à LemonLDAP::NG en conservant les applications CASsifiées. Avantage supplémentaire : en protégeant l'application CASsifiées, l'authentification est laissée en protocole CAS, mais LemonLDAP::NG peut désormais gérer les autorisations d'accès à l'application, et cela toujours de manière non-intrusive.
Toutefois, l'implémentation de référence de CAS poursuit sa route, et implémente certaines fonctionnalités qui n'apparaissent pas dans la description du protocole. C'est le cas de certains services web utilisés pour obtenir des informations sur l'utilisateur, ou la gestion de la déconnexion des applications.
Et bien entendu, reste le choix technologique de Java par rapport à Perl, matière à beaucoup de discussions qui ne font pas l'objet de cet article !
CAS qu'on attend ?
Ces nouvelles fonctionnalités peuvent être testées en utilisant la version de développement. Une archive est construite toutes les nuits et disponible ici.
Il faudra attendre encore un peu avant la sortie de la version 1.0, qui contiendra des nombreuses autres fonctionnalités, dont certaines feront peut-être l'objet de nouveaux articles sur ce blog.
N'hésitez pas à contacter la communauté (sur la liste lemonldap-ng-user AT ow2.org ou sur IRC #lemonldap-ng@freenode) pour obtenir de nouvelles informations !