| Sommaire |
|---|
Généralités
pam_cas est un module qui permet à un 'service' UNIX sachant authentifier via pam d'utiliser le mécanisme de SSO du CAS.
...
- Il reçoit de pam deux informations : le nom d'utilisateur et le PT (Proxy Ticket) passé comme mot de passe.
- Il génère ensuite une connexion http(s) directe vers le serveur CAS, à l'url de validation de PT (en standard, /proxyValidate).
- Il analyse le retour de cette requête, reçue en xml : validation du PT, identité de l'utilisateur, hiérarchie de proxies par lesquels le PT a été obtenu.
- Il fait un controle du nom de proxy pour des raisons de sécurité, et s'assure que l'identité de l'utilisateur retournée par le serveur CAS correspond à celle passée par pam.
- Il retourne à pam le code PAM_SUCCESS en cas de réussite, PAM_AUTH_ERR dans le cas contraire.
Modifications esup
Les modifications apportées par rapport à la version de yale sont les suivantes :
Fichier de configuration
Il n'y a plus de paramètres 'en dur' dans les programmes.
La distribution proposée utilise un fichier de paramètres (par défaut, /etc/pam_cas.conf).
Gestion des connexions http(s)
La partie de code consacrée à la connexion http ou https a été entièrement ré-écrite. Elle s'appuie toujours sur l'API openssl, mais en utilisant des fonctions de plus haut niveau qu'auparavant (objet BIO).
Possibilités de debug
Il est possible maintenant de débuguer le module sans avoir à retoucher le code, par simple modification d'un paramètre du fichier de configuration.
...
Enfin, le binaire castest a été complétement ré écrit afin de pouvoir tester hors module pam la partie communication avec le serveur CAS.
Comportements optionnels
- L'administrateur peut maintenant choisir entre http ou https pour la validation des proxy ticket.
- Il est possible de ne plus contrôler le proxy qui a généré le Proxy Ticket.
Divers
- Le Makefile a été entièrement ré écrit
- Corrige un bug identifié avec certaines versions de redhat
Compilation du module
En pré-requis, openssl doit être installé.
...
| Bloc de code |
|---|
unable to open config file "/etc/pam_cas.conf" Error while reading config file. Error 1 cannot open it |
Fichier de configuration
Par défaut, le fichier de configuration est /etc/pam_cas.conf.
...
Voici un exemple de fichier de configuration : pam_cas.conf.
Utilisation du module
On va prendre pour exemple l'intégration pour le serveur imap
- Recopier le module pam_cas.so dans /lib/security/.
ajuster le propriétaire et les droits - Adapter le fichier /etc/pam.d/imap (voir exemple ci-après)
- Arrêter - Relancer le démon utilisateur (dans le cas de cyrus-imap, c'est le démon saslauthd).
En fait, cette dernière étape n'est à priori pas nécessaire.
Paramètres du module
- -s : paramètre obligatoire. Contient l'URL du service tier. Cette URL doit être identique à celle que le proxy CAS a passé au serveur CAS lors de la demande du PT.
- -f : paramètre facultatif. C'est le nom du fichier de paramètres (par défaut, /etc/pam_cas.conf).
Exemple de fichier /etc/pam.d/imap
Ce fichier suppose que imap tente l'authentification CAS, puis LDAP, puis UNIX
...
A remarquer qu'on peut mettre pam_cas sans craintes de surcharge du serveur imap : il ne fait de requêtes auprès du serveur CAS que si le mot de passe reçu ressemble à un PT ou un ST.
En cas de problème
Logs 'normaux'
Des logs sont produits en cas d'erreur, aux niveaux LOG_NOTICE et LOG_ERR
Des logs de debug sont générés si debug=on dans le fichier de configuration. Ils sont alors produits au niveau LOG_DEBUG.
castest
C'est un utilitaire fourni dans le 'package' pam_cas. Il permet de générer des requêtes de validation de ticket auprès du serveur CAS. Il utilise les mêmes librairies que le module pam_cas, et utilise également le fichier de config.
...
Rem : si on ne veut pas valider le certificat du serveur https lors du wget, il suffit de remplacer --ca-certificate=/Cert/ac-racine.pem par --no-check-certificate ; un warning sera néammoins affiché lors du wget.
testImap.php
Cet utilitaire permet de tester le fonctionnement d'un serveur IMAP CAS-ifié.
Cache des tickets
pam_cas permet de valider un ticket (PT ou ST) présenté comme un simple mot de passe.
...
Deux mécanismes de cache coté serveur sont connus, cyrus-saslauthd et pam_ccreds ; il existe aussi la solution imapproxy.
cyrus - saslauthd
C'est un démon qui est livré avec la distribution cyrus-imap.
...
Un intérêt essentiel de saslauthd est le fait qu'il est capable de conserver en cache plusieurs mots de passe pour un utilisateur ; ceci permet d'optimiser le mécanisme lorsque des sources différentes (ent, webmail, client lourd) génèrent en parralèle des requêtes IMAP, avec chacune un mot de pase différent.
pam_ccreds
C'est un module pam qui permet de cacher les mots de passe.
...
Pour les personnes qui ne sont pas abonnées à cette liste, ce mail est également disponible, ainsi que le document attaché (patchs).
imapproxy
C'est une solution utilisée par certains établissements, qui semble donner satisfaction.
...