Pages enfant
  • 02 - Interfaçage Cyrus-imap avec CAS

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

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.

...

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

...

Première connexion imap depuis portail

Image Added
 

  1. L'utilisateur provoque un évênement qui demande au 'canal' dédié à la messagerie d'accéder au serveur imap.
  2. Le portail dispose d'un PGT pour l'utilisateur. Il demande donc au serveur CAS un PT pour le service imap (appelons-le PT-A1).
  3. Il tente une connexion imap. Pour la phase de login imap, il va transmettre le login de l'utilisateur et le PT-A1.
  4. cyrus-imap fait appel au démon saslauthd pour authentifier ; il passe donc le login et le PT-A1.
  5. saslauthd n'a pas encore l'utilisateur dans son cache. Il passe donc ces 2 informations à l'interface pam. Celle-ci utilise pam_cas, et génère une requête https vers le serveur CAS avec ce PT. Le serveur CAS valide le PT, pam valide donc l'authentification pour saslauthd.
  6. saslauthd met en cache l'information user + password (ici, PT-A1).
  7. saslauthd valide l'authentification à cyrus-imap.
    La phase de login s'est donc bien déroulée.

Nouvelles connexions imap depuis le portail

Image Added
 

  1. rafraichissement du 'canal imap'
  2. login imap avec le login, et le même PT qu'auparavant (PT-A1)
  3. cyrus-imap fait appel à saslauthd pour authentifier
  4. saslauthd consulte son cache. il trouve une entrée pour l'utilisateur. Le mot de passe (PT-A1) est valide. Il n'a pas besoin de faire appel à pam-cas
  5. L'authentification imap est effectuée

...

On suppose maintenant que l'utilisateur vient de lancer le webmail IMP (depuis le portail, ou directement). IMP doit donc générer une connexion IMAP. Image Added
 
Le fonctionnement est identique au premier cas, sauf que saslauthd trouve une entrée pour l'utilisateur dans le cache ave PT-A1 comme mot de passe, alors que le mot de passe qui est proposé est un nouveau PT (appelé PT-B1).
saslauthd fait donc à nouveau appel à pam, qui valide. saslauthd met à jour son cache avec PT-B1, et authentifie la personne.

...

On suppose que le portail doit à nouveau requêter IMAP.
Le 'canal' imap ne sait pas que le cache du serveur imap a changé. Le login IMAP va donc échouer :

IL Il faut donc que le canal sache analyser cette erreur, et puisse redemander à nouveau un PT pour l'utilisateur et redérouler tout le mécanisme. Image Added
 
Il faut aussi qu'il ne recommence pas cette procédure indéfiniment en cas de problème d'authentification.

...