Date: Thu, 28 Mar 2024 23:50:35 +0100 (CET) Message-ID: <632739559.201.1711666235532@confluence-esup.uphf.fr> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_200_1822263736.1711666235532" ------=_Part_200_1822263736.1711666235532 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
pam_cas est un module qui permet =C3=A0 un 'service' UNIX sachant authen= tifier via pam d'utiliser le m=C3=A9canisme de SSO du CAS.
La version originale a =C3=A9t=C3=A9 d=C3=A9velop=C3=A9e par l'Universit= =C3=A9 de Yale. Elle est disponible ici.
Des modifications esup-portail ont =C3=A9t=C3=A9 apport=C3=A9es afin de = le rendre param=C3=A9trable.
Le fonctionnement global du module est le suivant :
Les modifications apport=C3=A9es par rapport =C3=A0 la version de yale s= ont les suivantes :
Il n'y a plus de param=C3=A8tres 'en dur' dans les programmes.
La distribution propos=C3=A9e utilise un fichier de param=C3=A8tres (par= d=C3=A9faut, /etc/pam_cas.conf).
La partie de code consacr=C3=A9e =C3=A0 la connexion http ou https a =C3= =A9t=C3=A9 enti=C3=A8rement r=C3=A9-=C3=A9crite. Elle s'appuie toujours sur= l'API openssl, mais en utilisant des fonctions de plus haut niveau qu'aupa= ravant (objet BIO).
Il est possible maintenant de d=C3=A9buguer le module sans avoir =C3=A0 = retoucher le code, par simple modification d'un param=C3=A8tre du fichier d= e configuration.
De nombreuses informations de d=C3=A9bugging ont =C3=A9t=C3=A9 rajout=C3= =A9es. Les messages dans la log d'erreurs sont maitenant explicites.
Enfin, le binaire castest a =C3=A9t=C3=A9 compl=C3=A9tement r=C3=A9 =C3= =A9crit afin de pouvoir tester hors module pam la partie communication avec= le serveur CAS.
En pr=C3=A9-requis, openssl doit =C3=AAtre install=C3=A9.
Sur redhat, le package pam-devel doit =C3=A9galement =C3=AAtre install= =C3=A9.
Faire un contr=C3=B4le du binaire g=C3=A9n=C3=A9r=C3=A9 : ldd pam_cas.so=
.
Si des fichiers d'include ou des librairies manquent, adapter l'ent=C3=AAt=
e du Makefile.
Tenter un ./castest sans param=C3=A8tre : il doit afficher un message d'= erreur du genre :
unable = to open config file "/etc/pam_cas.conf" Error while reading config file. Error 1 cannot open it
Par d=C3=A9faut, le fichier de configuration est /etc/pam_cas.conf.
Les directives doivent commencer en d=C3=A9but de ligne.
Les lignes vides sont autoris=C3=A9es.
Une ligne 'active' se compose d'une directive, suivie d'espaces et/ou ta= bulation, puis d'une valeur.
Les directives ne sont pas sensibles =C3=A0 la casse.
Les directives de type bool=C3=A9en acceptent les valeurs "on" ou "off".=
Les directives sont les suivantes :
Voici un exemple de fichier de configuration : pam_cas.conf.
On va prendre pour exemple l'int=C3=A9gration pour le serveur imap
Ce fichier suppose que imap tente l'authentification CAS, puis LDAP, pui= s UNIX
auth su= fficient /lib/security/pam_cas.so \-simap://imap.univ.fr \-f/etc/pam_cas.co= nf auth sufficient /lib/security/pam_ldap.so auth required /lib/security/pam_pwdb.so shadow nullok account required /lib/security/pam_pwdb.so shadow nullok
A remarquer qu'on peut mettre pam_cas sans craintes de surcharge du serv= eur imap : il ne fait de requ=C3=AAtes aupr=C3=A8s du serveur CAS que si le= mot de passe re=C3=A7u ressemble =C3=A0 un PT ou un ST.
Des logs sont produits en cas d'erreur, aux niveaux LOG_NOTICE et LOG_ER= R
Des logs de debug sont g=C3=A9n=C3=A9r=C3=A9s si debug=3Don dans le fich= ier de configuration. Ils sont alors produits au niveau LOG_DEBUG.
C'est un utilitaire fourni dans le 'package' pam_cas. Il permet de g=C3= =A9n=C3=A9rer des requ=C3=AAtes de validation de ticket aupr=C3=A8s du serv= eur CAS. Il utilise les m=C3=AAmes librairies que le module pam_cas, et uti= lise =C3=A9galement le fichier de config.
Il est vivement conseill=C3=A9 de l'utiliser avant la mise en service du= module pam_cas ; cela permet de debuguer la configuration.
Il affiche sa configuration, puis tente de valider le ticket. Il affiche= alors les messages que sort pam_cas en mode debug, plus d'autres informati= ons.
Il supporte les arguments suivants (tous facultatifs) :
exemple d'utilisation :
$PAM_CA= S_SOURCES/castest <service> <ticket> <fichier_de_configurati= on>
Il est possible de le lancer sans param=C3=A8tres. Avec un fichier de co= nfiguration correctement param=C3=A9tr=C3=A9, la sortie est la suivante := p>
-------= -------------------------------------------------------\- Parameters from test : host =3D auth.univ-nancy2.fr port =3D 443 uri =3D /proxyValidate ssl =3D on trusted_ca =3D /Cert/ac-racine.pem debug =3D localtest proxy =3D [https://imp.univ.fr/cas/casProxy.php] proxy =3D [https://ent.univ.fr/CasProxyServlet] service =3D [https://foo.fr] ticket =3D PT-1-xxx \--------------------------------------------------------------\- authentication failure <cas:serviceResponse xmlns:cas=3D'http://www.yale.edu/tp/cas'> <cas:authenticationFailure code=3D'INVALID_TICKET'> ticket 'PT-1-xxx' not recognized </cas:authenticationFailure> </cas:serviceResponse> \--------------------------------------------------------------\- invalid ticket : bad CAS ticket
On a donc valid=C3=A9 les param=C3=A8tres de communication avec le serve= ur CAS tr=C3=A8s simplement.
Si probl=C3=A8me, s'assurer avec wget que la machine qui supporte pam_ca= s arrive bien =C3=A0 communiquer avec le serveur CAS. Par exemple :
wget \-= -ca-certificate=3D/Cert/ac-racine.pem \-O /tmp/cas.log "https://auth.univ.f= r:443/proxyValidate?ticket=3DPT-1-xxx&service=3D[https://foo.fr]"
Le contenu du fichier /tmp/cas.log contient la r=C3=A9ponse du serveur C= AS ; il devrait =C3=AAtre :
<cas= :serviceResponse xmlns:cas=3D'http://www.yale.edu/tp/cas'> <cas:authenticationFailure code=3D'INVALID_TICKET'> ticket 'PT-1-xxx' not recognized </cas:authenticationFailure> </cas:serviceResponse>
Rem : si on ne veut pas valider le certificat du serveur https lors du w= get, il suffit de remplacer --ca-certificate=3D/Cert/ac-racine.pem par --no= -check-certificate ; un warning sera n=C3=A9ammoins affich=C3=A9 lors du wg= et.
Cet utilitaire permet de tester le fonctionnement d'un serveur IMAP CAS-= ifi=C3=A9.
pam_cas permet de valider un ticket (PT ou ST) pr=C3=A9sent=C3=A9 comme = un simple mot de passe.
Pour des raisons de performance, il est souvent n=C3=A9cessaire de "cach= er" ce ticket afin de pouvoir le rejouer plusieurs fois.
Ce document d=C3=A9crit l'exemple d'imap. Imap est utilis=C3=A9 par les = webmail (cassifi=C3=A9s), l'ent (cassifi=C3=A9) et les clients de messageri= e (non cassifi=C3=A9).
Les Webmails ont la particularit=C3=A9 de g=C3=A9n=C3=A9rer de nombreuse= s connexions imap, au moins une par chargement de page.
Il serait tr=C3=A8s couteux que le webmail redemande un nouveau ticket p= our chaque ouverture de connexion IMAP ; un cache doit donc =C3=AAtre insta= ll=C3=A9 c=C3=B4t=C3=A9 serveur, et le code du client webmail doit =C3=AAtr= e modifi=C3=A9 afin de g=C3=A9rer au mieux ce m=C3=A9canisme de cache.
Plusieurs m=C3=A9canismes de cache cot=C3=A9 serveur sont connus. Nous c= onseillons l'utilisation de cacheDirectory dans esup-= pam-cas (fonctionnalit=C3=A9 ajout=C3=A9e dans la version 2.0.11-esup-2.0.6= )
Avant l'activation :
Puis activer l'option cacheDirectory dans pam_cas.conf
C'est un d=C3=A9mon qui est livr=C3=A9 avec la distribution cyrus-imap.<= /p>
cyrus-imap peut =C3=AAtre param=C3=A9tr=C3=A9 pour authentifier les conn= exions (imap, pop, ...) =C3=A0 l'aide de ce d=C3=A9mon, via une socket unix= .
saslauthd peut =C3=AAtre param=C3=A9tr=C3=A9 pour authentifier =C3=A0 l'= aide de pam. Il est alors possible d'utiliser pam_cas pour cassifier saslau= thd, donc cyrus-imap.
Et il est possible de param=C3=A9trer saslauthd pour qu'il impl=C3=A9men= te un cache de mot de passe (donc, =C3=A9ventuellement, de tickets).
Un patch p= ermet de le rendre capable de conserver en cache plusieurs mots de passe po= ur un utilisateur ; ceci permet d'optimiser le m=C3=A9canisme lorsque des s= ources diff=C3=A9rentes (ent, webmail, client lourd) g=C3=A9n=C3=A8rent en = parall=C3=A8le des requ=C3=AAtes IMAP, avec chacune un mot de passe diff=C3= =A9rent.
C'est un module pam qui permet de cacher les mots de passe.
Il est d=C3=A9velopp=C3=A9 par PADL Software.
Des patchs ont =C3=A9t=C3=A9 propos=C3=A9s par Nicolas Bouillis fin de l= 'adapter au cache de ticket, et =C3=A0 apporter des fonctionnalit=C3=A9s su= ppl=C3=A9mentaires.
Une documentation de mise en oeuvre = est propos=C3=A9e par Damien Mascr=C3=A9 (IUT Villetaneuse - Paris 13).
Voir =C3=A9galement = un =C3=A9change de mails =C3=A0 ce sujet sur la liste esup-devel.
Pour les personnes qui ne sont pas abonn=C3=A9es =C3=A0 cette liste, ce mail est =C3=A9galement disponible, ainsi que le document attach=C3=A9 (= patchs).
C'est une solution utilis=C3=A9e par certains =C3=A9tablissements, qui s= emble donner satisfaction.
Voir les documents suivants :