===== shibboleth et zimbra ===== ==== contexte protocolaire ==== Dans le version 7.x de zimbra , l'implémentation SAML n'étant pas mature, il convient d'utiliser un mécanisme de contournement pour bénéficier d'une authentification fédérée vers le service zimbra. On peux esperer que les choses s'ameliorent nettement avec la v8 sur le support natif SAML/shibboleth de zimbra au regard de : * https://wiki.zimbra.com/wiki/Authentication/SAML * http://blog.zimbra.com/blog/archives/2010/06/using-saml-assertions-to-access-zimbra.html ==== zimbra peauth ==== reference: http://wiki.zimbra.com/wiki/Preauth Il s'agit d'un mécanisme permettant à une application tierce de valider l'indetité d'un utilisateur. Dans notre cas l'application tierce sera ici un fournisseur d'identité de la fédération . Une fois l'utilisateur identitifié via le mecanisme usuel d'un fournisseur de service shibboleth (protection via la module shibboleth d'apache de la page hébergeant le script de preauth), le script de preauth, qui dispose d'une clée predéfinie pour le domaine de mail zimbra visé, calcul un SHA1-HMAC (keyed-hash message authentication code => code d'authentification d'une empreinte cryptographique de message avec clé) composé du username (fournis par l'authentification shibboleth), d'un timestamp (validant que la requête est récente) l'ensemble est signé avec la clé de preauth du domaine. Sur reception de ce SHA1-HMAC correspondant à une session d'un utilisateur, le serveur zimbra le valide grâce à la clée de prauth partagée et génère alors un token applicatif zimbra associé qu'il encapsule dans un cookie de session en retour vers le navigateur client redirigeant ce dernier vers la boite mail de l'utilisateur. ==== mise en ouvre preauth ==== === génération de la clée preauth === zimbra@zmail1:~$ zmprov gd mail-domain.fr | grep -i zimbraPreAuthKey zimbra@zmail1:~$ zmprov gdpak mail-domain.fr preAuthKey: a2054aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXd78abae0c4 zimbra@zmail1:~$ zmprov gd mail-domain.fr | grep -i zimbraPreAuthKey zimbraPreAuthKey: a2054aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXd78abae0c4 - on verifie que la clée de preauth n'existe pas deja, - on la crée pour le domain visé, - on verifie sa prise en compte === script preauth === reprise d'un script de preauth dans le langage souhaité , exemple ici http://wiki.zimbra.com/wiki/Preauth#PHP_Code_For_Redirecting_to_Zimbra_Preauth on va séparer la partie script php visible par le serveur web , des parametres sensibles (clé ! domain a moindre mesure ...) qui doivent rester hors du "documentRoot" apache , d'où l'usage d'un fichier d'inclusion des parametres dans le script php : super@spzimbra1:/var/www/preauthshib$ sudo vim ../../preauth-params/private/params-shib.php super@spzimbra1:/var/www/preauthshib$ sudo vim preauthshib.php === URL de connexion === Il ne reste plus qu'a faire pointer l'acces utilisateurs à zimbra vers ce script, dans notre exemple ci-dessus: preauthshib.php. Le script etant lui meme sous controle d'authentification mod_shib , cf protection d'acces shibboleth a une page/directory * https://services.renater.fr/federation/docs/installation/sp_decembre2012#configuration_d_apache L'URL d'acces fédéré a zimbra sera au final du type: https://zimbra.mail-domain.fr/preauthshib/preauthshib.php