Zimbra 8.6 Multiserveurs #7 – Installation de CAS – Babash

par francois · Publié 31 mai 2016 · Mis à jour 23 novembre 2017

Configuration de SSO-CAS sur Zimbra pour votre webmail.

Plusieurs configurations sont possibles, je vais donc détailler dans cet article les différentes possibilités :

  • La plus simple : 1 virtualhost – 1 serveur CAS – 1 domaine Zimbra :
    • Typiquement : webmail.mon-univ.fr interroge votre CAS et vous redirige vers votre domaine unique « @mon-univ.fr ».
  • Un peu plus complexe : plusieurs virtualhosts – 1 serveur CAS – plusieurs domaines Zimbra. Typiquement :
    • webmail.mon-univ.fr interroge votre CAS et vous redirige vers votre domaine « @mon-univ.fr » ( pour le personnel ),
    • webmail-etu.mon-univ.fr interroge votre CAS et vous redirige vers votre domaine « @etu.mon-univ.fr » ( pour les étudiants).
  • Complexe : 1 virtualhost – 1 serveur CAS – plusieurs domaines Zimbra. Typiquement :
    • webmail.mon-univ.fr interroge votre CAS, vous récupérez l’attribut « mail du LDAP et vous redirige vers votre domaine d’appartenance : « @mon-univ.fr » ( pour le personnel ) ou « @etu.mon-univ.fr » ( pour les étudiants).

Précisions à prendre en compte avant de vous lancer  :

  • Lisez l’article en entier avant, cela permettra de savoir quelle technique vous allez utiliser
  • Sachez que la méthode que j’appelle ici « complexe » peut être aussi utilisée à la place des autres. C’est un peu la « méthode universelle ». Je m’explique :
  1. Contrairement aux autres méthodes : pas de XML à modifier dans Zimbra, de jar à rajouter etc… De ce fait, vous serez très certainement moins embêté lors de mise à jour mineure et majeure de zimbra. Vous ne faites que de la modification de configuration Zimbra via l’interface web.
  2. Pour les gens qui ne maitrisent pas le JAVA comme moi, écrire du PHP est plus simple. Même si le système de preauth Zimbra évolue.
  3. Mon script PHP permet, via le switch case, de gérer plusieurs domaines depuis le même virtualhost. De ce fait, par la suite, si vous devez ajouter des domaines, c’est plus simple !
  4. De plus, vous utilisez un NGINX intégré à l’OS et non le NGINX Zimbra. Il ne subira pas les mises à jour de Zimbra et comme c’est du NGINX, vous pourrez gérér plusieurs virtualhosts à moindre frais. Encore une simplicité pour un évolution non anticipée !
Lire plus :   Les interactions dans Jeedom - Babash

Ce tutoriel se base sur l’article suivant : https://wiki.jasig.org/pages/viewpage.action?pageId=28213257

Importer les librairies Java CAS

Modification du fichier XML

Dans le fichier /opt/zimbra/jetty/etc/zimbra.web.xml.in, nous allons ajouter les lignes ci-dessous avant la première section

Pensez à remplacer les valeurs cas.url.com:port et zimbra.url.com:port.

CasSingleSignOutFilter org.jasig.cas.client.session.SingleSignOutFilter CasSingleSignOutFilter /* org.jasig.cas.client.session.SingleSignOutHttpSessionListener CasAuthenticationFilter org.jasig.cas.client.authentication.AuthenticationFilter casServerLoginUrl https://cas.url.com:port/cas/login serverName https://zimbra.url.com:port CasAuthenticationFilter /public/preauth.jsp CasValidationFilter org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter casServerUrlPrefix https://cas.url.com:port/cas serverName https://zimbra.url.com:port redirectAfterValidation true CasValidationFilter /* CasHttpServletRequestWrapperFilter org.jasig.cas.client.util.HttpServletRequestWrapperFilter CasHttpServletRequestWrapperFilter /public/*

    CasSingleSignOutFilter     org.jasig.cas.client.session.SingleSignOutFilter     CasSingleSignOutFilter     /*     org.jasig.cas.client.session.SingleSignOutHttpSessionListener     CasAuthenticationFilter     org.jasig.cas.client.authentication.AuthenticationFilter         casServerLoginUrl         https://cas.url.com:port/cas/login         serverName         https://zimbra.url.com:port     CasAuthenticationFilter     /public/preauth.jsp     CasValidationFilter     org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter         casServerUrlPrefix         https://cas.url.com:port/cas     serverName     https://zimbra.url.com:port         redirectAfterValidation         true     CasValidationFilter     /*     CasHttpServletRequestWrapperFilter     org.jasig.cas.client.util.HttpServletRequestWrapperFilter     CasHttpServletRequestWrapperFilter     /public/*

Création de la clé PreAuth

Lancer la commande suivante sous l’utilisateur zimbra :

zmprov gdpak yourdomain.com

zmprov gdpak yourdomain.com

Cela va générer une clé de ce type : « 359d722926fc3daebd0fee5d8b9dad9bbe1646e68041afa8ab662c6a9152e6b9 ».

Création du fichier preauth.jsp

Enregistrer le fichier preauth.jsp dans /opt/zimbra/jetty/webapps/zimbra/public/preauth.jsp de votre/vos store(s).

  • Remplacer la valeur de DOMAIN_KEY avec la clé générée précédemment,
  • Remplacer yourdomain.com par le domaine créé sous Zimbra que vous souhaitez CASifier.

Sous l’utilisateur root :

chown zimbra:zimbra /opt/zimbra/jetty/webapps/zimbra/public/preauth.jsp

chown zimbra:zimbra /opt/zimbra/jetty/webapps/zimbra/public/preauth.jsp

Changement des pages de login et logout

Sous l’utilisateur zimbra :

zmprov md yourdomain.com zimbraWebClientLoginURL https://zimbra.url.com:port/public/preauth.jsp zmprov md yourdomain.com zimbraWebClientLogoutURL https://cas.url.com:port/cas/logout

zmprov md yourdomain.com zimbraWebClientLoginURL https://zimbra.url.com:port/public/preauth.jsp zmprov md yourdomain.com zimbraWebClientLogoutURL https://cas.url.com:port/cas/logout

Redémarrage de Zimbra

Sous l’utilisateur zimbra :

Étiquettes : 8.6architectureCAScollaborationhttpsJasigmultiserveurnginxphpCASpreauthpreauth.jsppreauth.phpproxySSOterenaubuntuvirtualhostzimbrazimbraPublicServiceHostnamezimbraPublicServicePortzimbraPublicServiceProtocol

A lire également