Nous arrivons au bout de la chaîne, maintenant que le serveur imap est capable de vérifier un ticket du CAS, il faut CASsifier roundcube pour quelle connecté l'utilisateur via le CAS, par l'intermédiaire de ce ticket.
Le fonctionnement même de rouncube n'est pas adapté a une identification en plusieurs étapes, ce qui est le cas d'une identification via le CAS. Car roundcube détruit la SESSION (php) initié par le CAS, lorsque l'utilisateur reviens du CAS, ceci résultant en un échec de l'identification et des redirections infinie entre CAS et roundcube.
Pour régler ce problème il suffit d'appliquer ce patch sur le script index.php (à la racine de roundcube).
patch -p0 < roundcube_keep_session_before_authenticate_hook.patch.diff
J'ai trouvé sur internet le plugin cas_authentication mais je n'ai pas réussi à le faire fonctionner. Du coup j'ai fait mon propre plugin cas_authentication.
Ce plugin serait grandement à améliorer , car il n'utilise pas le fichier de configuration config.inc.php et gère certainement très mal les erreurs, il a le mérite de fonctionner c'est l’essentiel.
Décompressez l'archive du plugin : cas_authentication dans le dossier plugins de roundcube. Vous devez ensuite mettre la librairie phpCas modifiée dans le dossier plugins/cas_authentication.
Vous devriez ensuite avoir un dossier plugins/cas_authentication/CAS et un fichier plugins/cas_authentication/CAS.php.
Enfin il faut dire à roundcube d'utiliser le plugin en modifiant config/main.inc.php :
$rcmail_config['plugins'] = array('managesieve','contextmenu','emoticons', 'cas_authentication'); //Ajouter 'cas_authentication'
Ligne 27 de cas_authentication.php adaptez à votre config :
$creds=$this->CAS_getCredentials("cas.mdl29.net", 443, '', "imap://mail.mdl29.net"); //Ou si le CAS n'est pas à la racine $creds=$this->CAS_getCredentials("cas.mdl29.net", 443, '/cas/', "imap://mail.mdl29.net");
Voilà normalement c'est bon ;)
Prêts a poursuivre ? … Bah c'est finis. retour au plan
Rédigé par Benjamin Bernard
Source : #1487975 (Option to keep session before authentication hook) – Roundcube Webmail --> Patch roundcube