| Sommaire |
|---|
Problématique
Le portail doit pouvoir proposer un canal permettant d'apporter des informations sur la messagerie de l'utilisateur (nombre de mails non lus, ...).
Il est probable que ce canal doive lancer un webmail externe (IMP ?) lorsque l'utilisateur désire utiliser sa messagerie d'une manière plus intensive.
...
Il faut activer le pam_cas pour le service imap.
Voir : Documentation 01 - Installation et paramétrage de pam_cas.
Coté cyrus
- Compiler cyrus-sasl avec l'option --with-saslauthd.
- Dans le fichier /etc/imapd.conf, mettre sasl_pwcheck_method: saslauthd
- Pour que saslauthd utilise pam, il faut le lancer avecl'option -a pam
- pour optimiser le fonctionnement, saslauthd peut gérer un cache. C'est très utilise pour l'utilisation avec pam, engénéral.
Pour activer le cache, il faut ajouter l'option -c
D'autres options de gestion du cache (taille, ttl, ...) sont disponibles. Faire man saslauthd pour plus d'information.
...
Personnalisation du script
| Bloc de code |
|---|
$cas_hostname="auth.univ.fr"; // c'est l'url du serveur CAS
$cas_port=443; // le port d'accès https au serveur CA
$cas_uri=''; // l'uri de base du serveur CAS
$imap_server="mail.univ.fr"; // le serveur imap à tester
$imap_port=143; // le port imap
$imap_box="INBOX"; // le préfixe des boites IMAP
$imap_service="imap://$imap_server"; // le service passé pour la récupération du PT. Doit être identique
// au service paramétré dans pam-cas
|
Le 'service' passé au serveur CAS sera ici implicitement imap://mail.univ.fr. Si cela ne convient pas , écraser la variable $imap_service avec l'URL de service désiré.
Installation du script
Il faut bien sûr en préalable l'installation de phpCAS, avec ses pré-requis.
...
Le fichier pam_cas sera paramétré comme indiqué dans la doc pam_cas.
- paramètre de service (option -s) : doit contenir l'URL du service indiqué ci-dessus. Dans notre exemple :
-simap://mail.univ.fr - paramètres de proxy (option -p) : doit contenir l'url du (ou des) proxies CAS qui vont utiliser le service imap CAS-ifié. A priori, il y aura au moins le socle ENT, et le webmail. Pour le test, il faut rajouter notre script. Donc, pour suivre l'exemple :
-phttps://test.univ-nancy2.fr/casimap.php
...
Si un PT est obtenu, mais que la connexion imap de fonctionne pas, redemander un nouveau PT.
En dessous du bouton "Ouvrir une connexion imap avec le PT courant", s'affiche une url du genre :
| Bloc de code |
|---|
https://auth.univ.fr:443/proxyValidate?ticket=PT-168270-aG...&service=imap://mail.univ.fr
|
Tenter de valider 'à la main' ce PT :
Depuis un serveur ayant un acces https vers le serveur CAS (le serveur imap est un bon candidat), lancer :
| Bloc de code |
|---|
wget --ca-certificate=/Cert/ac-racine.pem -O /tmp/cas.log "https://auth.univ.fr:443/proxyValidate?ticket=PT-168270-aG...&service=imap://mail.univ.fr"
|
...
Vous devez obtenir quelque chose comme celà dans le fichier /tmp/cas.log :
| Bloc de code |
|---|
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationSuccess>
<cas:user>vmathieu</cas:user>
<cas:proxies>
<cas:proxy>https://infocri.univ-nancy2.fr/~vmathieu/CAS/casimap.php</cas:proxy>
</cas:proxies>
</cas:authenticationSuccess>
</cas:serviceResponse>
|
Rem : il est possible de remplacer l'option --ca-certificate=/Cert/ac-racine.pem par --no-check-certificate lors du wget ; dans ce cas, un warning sera affiché.
Difficultés coté client imap
...
Ca semble relativement aisé au niveau du portail. Il est probable que ce ne soit pas aussi simple au niveau IMP à la fois pour cet aspect, et pour le promouvoir en proxy CAS.
...
Optimisation poussée
La mise en oeuvre précédente s'est faite sans aucune modification de code à tous niveaux.
On pourrait envisager une optimisation spécifique à notre projet, en Un patch modifiant le fonctionnement du cache de saslauthd.
Actuellement, il associe un 'mot de passe' (éventuellement donc, un PT) à un utilisateur.
On pourrait envisager qu'il associe 3 mots de passe à une personne :
- le mot de passe habituel (dans notre cas, le mot de passe LDAP)
- le PT venant du portail
- le PT venant du webmail
Ca peut s'implémenter avec cyrus-imap, sans modification du source :
il est possible d'avoir 3 'instances' IMAP en attente sur 3 ports différents, et avec 3 caches différents (3 instances de saslauthd).
du démon saslauthd est proposé, permettant d'associer plusieurs 'mots de passe' à un utilisateur.
| Avertissement |
|---|
Plutôt que de patcher saslauthd, il est maintenant plus simple d'utiliser la fonctionnalité "cacheDirectory" de la dernière version de esup-pam-cas. |
Donc, une instance sur les ports POP et IMAP traditionnels, pour les clients de messagerie standards, une instance dédié au webmail et une instance dédiée au portail.
Annexe : cinématique
Les schémas joints montrent la cinématique de l'authentification imap, dans différents cas.
...