40
Netixia - simplifying IT © Netixia - Copyright 2011 Forum Zimbra 2012 MESSAGERIE & SSO

Forum Zimbra 2012 Zimbra et la SSO

Embed Size (px)

Citation preview

Page 1: Forum Zimbra 2012 Zimbra et la SSO

Forum Zimbra 2012

MESSAGERIE & SSO

Page 2: Forum Zimbra 2012 Zimbra et la SSO

Plan

Introduction

• Problématique• SSO

CAS & Zimbra

• Principe• Mise en œuvre• Avantage /

Inconvénient

KERBEROS & Zimbra

• Principe• Mise en œuvre• Avantage /

Inconvénient

SHIBBOLETH & Zimbra

• Définition• Principe• Etat des lieux• Mise en œuvre

Cas Clients

• Inra• Univ. Tours• HCC• InstitutTelecom

2

Page 3: Forum Zimbra 2012 Zimbra et la SSO

Introduction• Problèmatique :Un SI existant sans gestion centralisée des logins

et des mots de passe1 à n applications 1 application = 1 login + 1 ⇒

mot de passesoit n application = 1 login + x mot de passesoit n application = y login + x mot de passe

Page 4: Forum Zimbra 2012 Zimbra et la SSO

Introduction• Problèmatique:Comment trouver un équilibre entre sécurité et

simplicité ?- Sécurité pour le SI- Simplicité pour la maintenance du SI- Simplicité pour l’utilisateur

Page 5: Forum Zimbra 2012 Zimbra et la SSO

Introduction

• SSO = Single Sign OnUne authentification => Accès à 1 ou plusieurs

ressourcesMise en œuvre : - d’une configuration simple à la plus

compliquée

Page 6: Forum Zimbra 2012 Zimbra et la SSO

Zimbra &

• CAS = Central Authentication Server• Plusieurs implémentations & langages :– Java (Consortium Jasig Open Source)– Ruby– Perl

Page 7: Forum Zimbra 2012 Zimbra et la SSO

Zimbra &Principe

Page 8: Forum Zimbra 2012 Zimbra et la SSO

Zimbra &

• Pré-requis– Disposer d’un référentiel utilisateurs + mots de passe(Active Directory, serveur OpenLDAP, serveur MySQL…)– Un serveur accueillant le service CAS– Un utilisateur ayant les droits de lecture sur le référentiel– Synchronisation avec un serveur de temps commun (NTP)

Mise en œuvre

Page 9: Forum Zimbra 2012 Zimbra et la SSO

Zimbra &

• Installation– Exemple à partir de l’implémentation de JASIG– Un serveur d’application JEE (ex: Tomcat)– Déploiement de l’application (cas.war)

• Paramétrage du serveur d’application :Le serveur doit fournir du https

Mise en œuvre

Page 10: Forum Zimbra 2012 Zimbra et la SSO

Zimbra &

• Paramétrage du service CASConfiguration du service CAS pour le référentiel sélectionné :– AD– Serveur OpenLDAP– MySQL– Autres …Ajout des bibliothèques correspondantes aux modules

Mise en œuvre

Page 11: Forum Zimbra 2012 Zimbra et la SSO

Zimbra &

• CASsification de Zimbra :– Importation du certificat CAS (SSL)– Installation des bibliothèques clientes CAS sur Zimbra– Modification du fichier zimbra.web.xml.in : redirection

d’URL vers l’application CAS

Mise en œuvre

Page 12: Forum Zimbra 2012 Zimbra et la SSO

Zimbra &

• CASsification de Zimbra– Génération de la clef de pré authentification du domaine

de messagerie– Création du fichier preauth.jsp

• Résultats :– Si l’utilisateur n’est pas encore connu : mire de login CAS– Si l’utilisateur est déjà connu via une application déjà

CASsifiée : l’utilisateur arrive directement dans son compte Zimbra

Mise en œuvre

Page 13: Forum Zimbra 2012 Zimbra et la SSO

Zimbra &

• Mise en œuvre simple• Possibilité de CASsifier

plusieurs domaines de messagerie avec un seul cluster Zimbra

• Faire de Zimbra un point d’entrée unique pour les autres applications CASifiées

• La CASsification est uniquement au niveau du web

• Pas possible de CASsifier la synchronisation mobile (SyncML)

• Protocole IMAP non CASsifié

Avantage / Inconvénient

Page 14: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & KerberosUne association pour dépasser les limitations du Web

• CAS + Référentiel utilisateurs : limité au web• CAS + module Kerberos/SPNEGO : une authentification

unique de l’OS aux applications Web

Page 15: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & KerberosPrincipe

• 1 ère phase : l’utilisateur se connecte à sa session applicative de son OS => première et unique authentification

• 2 ième phase : l’utilisateur lance son navigateur pour aller dans sa messagerie Zimbra => pas d’authentification

AUTO LOGIN

Une solution Simple dans la forme mais compliquée dans le fond

Page 16: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Kerberos

• Pré-requis– OS doit être kerbérisé– Un utilisateur ayant des droits administrateur sur l’AD– le serveur CAS doit être intégré au royaume Kerberos– Un compte utilisateur dédié pour la création de la keytab

• Installation :– Reprise de l’ensemble des opérations d’un CAS classique– Ajout d’un module supplémentaire à CAS : SPNEGO

Simple and Protected GSSAPI Negotiation Mechanism– Ajout des bibliothèques supplémentaires :

– jcifs-1.2.15.jar– jcifs-ext-0.9.4.jar

– Bibliothèques clientes Kerberos

Mise en œuvre

Page 17: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & KerberosMise en œuvre

• Paramétrage :– Fichier krb5.conf– fichier smb.conf– Net join –U <user-admin> -S <IP_AD>– Module SPNEGO :

• pom.xml• cas.properties• login-webflow.xml• cas-servlet.xml• deployerConfigContext.xml• login.conf (à créer)

– AD : création d’un keytab avec service principal– Migration du fichier keytab sur le server CAS

Page 18: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Kerberos

• Paramétrage IE :– outils -> avancé -> sécurité cocher Activer l'authentification Windows

intégrée.– onglet général -> intranet local -> site -> avancé -> et ajouter l'adresse

https://cas-server– Redémarrage IE

• Paramétrage FireFox :– dans la barre d'adresse taper about:config– Modification de l’attribut network.automatic-ntlm-auth.trusted-uris :

https://cas-server– Redémarrage Firefox

Mise en œuvre

Page 19: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Kerberos

• CASsification de Zimbra (vu précédemment)

Mise en œuvre

Page 20: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Kerberos

• 1 mot de passe + 1 login = accès à tout• Basé sur des standards (RFC 4120, RFC 4537, RFC

5021, RFC 5896, RFC 6111, RFC 6112, RFC 6113 )• 1 serveur CAS => auto login sur aplications CASsifiées• Très contraignant dans l’implémentation :

– Nécessité d’avoir des accès administrateurs– Nécessité de modifier tous les postes clients– Sans AD nécessité d’installer un KDC– Maintenance

Une authentification forte au service de l’utilisateur

Page 21: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & ShibbolethDéfinition

• La shibbolethisation permet d'utiliser un mécanisme de SSO afin d'accéder à des ressources dont les propriétaires ne gèrent pas les utilisateurs.

• Implémentation SAMLv2 (Security Assertion Markup Language version 2), standard soutenu par OASIS.

Page 22: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Shibboleth

• IDP : Identity Provider. Correspond à un fournisseur d'identité (nom d'utilisateur et mot de passe).

• SP : Service Provider. C'est lui qui présente le service shibbolitisé et fourni la ressource à l'utilisateur.

• WAYF : Where Are You From ? Permet de sélectionner le fournisseur d'identité auquel appartient l'utilisateur.

Principe : repose sur 2 briques + 1 optionnelle

Page 23: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & ShibbolethZimbra et Shibboleth : état des lieux

• Implémentation SAMLv2 dans Zimbra = incomplète• Classe Java existantes• Assertions SAML nécessaires au niveau de Zimbra =

inconnues

Un mariage impossible ?

Page 24: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Shibboleth

• Déplacement de la problématique• Utilisation d’un reverse proxy Apache HTTP• Pré authentification déléguée => accès au compte de

messagerie Zimbra

Mise en oeuvre

Page 25: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Shibboleth

• Pré-requis :– Un serveur http dédié– Synchronisation (NTP)

• Installation : apache http • Paramétrage Apache HTTP:

– Activation mod_shib– Activation de l’interpréteur PHP (php-xml-util)– Activation SSL– vhost

Mise en oeuvre

Page 26: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Shibboleth

• Installation du service shibboleth• Paramétrage du démon shibd

– Génération clef privée + certificat– Récupération du certificat de la fédération d’identidé– shibboleth2.xml :

• Hostname du SP• URL de l’IDP• URL du WAYF• Les attributs SAML à récupérer• URL des META DATA• Certificats …

– attribute-map.xml

Mise en oeuvre

Page 27: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Shibboleth

• Création de la pré authentification– Déporté au niveau du serveur proxy– Codée en PHP

• Schéma du proxy

Mise en oeuvre

Page 28: Forum Zimbra 2012 Zimbra et la SSO

• Possibilité de transmettre des attributs• Un SSO sur des ressources tierces• Beaucoup d’interaction entre les différents acteurs• Maîtrise des chaînes de certification• Technologie faiblement déployée

Zimbra & Shibboleth

Page 29: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & Shibboleth &

Page 30: Forum Zimbra 2012 Zimbra et la SSO

Zimbra & SSOConclusion

• Portail d’accès unique• Différentes techniques : CAS, Kerberos, Shibboleth, …• Un mix des différentes techniques• Souplesse de Zimbra• Une communauté Open Source innovante et réactive

Page 31: Forum Zimbra 2012 Zimbra et la SSO

Quelques exemples chez nos clients :• INRA : Yaziba.net

– 10 000 collaborateurs– 93 sites distants sur toute la France– Inscription auto avec LDAP et CAS

• Université de Tours : Zimbra sur site– 33 000 collaborateurs– Plusieurs sites sur Tours et ses environs– Intégration CAS

Page 32: Forum Zimbra 2012 Zimbra et la SSO

Quelques exemples chez nos clients :

• Hôpitaux Civils de Colmar : Zimbra sur site– 1 500 collaborateurs– CAS/Kerberos auto-login

• Institut Télécom : Zimbra sur site– 8 000 collaborateurs– 3 sites répartis sur toute la France– Service Provider Shibboleth

Page 33: Forum Zimbra 2012 Zimbra et la SSO

Des questions ?

Page 34: Forum Zimbra 2012 Zimbra et la SSO

Annexes

Page 35: Forum Zimbra 2012 Zimbra et la SSO

Ressources Web• http://www.jasig.org/cas• http://code.google.com/p/rubycas-server/• http://lemonldap-ng.org/documentation/1.1/authcas• https://wiki.jasig.org/display/CAS/CASifying+Zimbra+6.0• http://wefunction.com/2008/07/function-free-icon-set/• http://shibboleth.internet2.edu/

Page 36: Forum Zimbra 2012 Zimbra et la SSO

Bibliographie• Single Sign-On open-source avec CAS (Central Authentication Service) :

Pascal Aubry, Vincent Mathieu, Julien Marchal

Page 37: Forum Zimbra 2012 Zimbra et la SSO

<!-- CAS filter configuration begin --> <filter> <filter-name>CasSingleSignOutFilter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CasSingleSignOutFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <filter> <filter-name>CasAuthenticationFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://cas-server:8443/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://zimbra-server:80</param-value> </init-param> </filter>

Page 38: Forum Zimbra 2012 Zimbra et la SSO

<filter-mapping> <filter-name>CasAuthenticationFilter</filter-name> <url-pattern>/public/preauth.jsp</url-pattern> </filter-mapping> <filter> <filter-name>CasValidationFilter</filter-name> <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://cas-server:8443/</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://zimbra-server:80</param-value></init-param> <init-param> <param-name>redirectAfterValidation</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CasValidationFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>CasHttpServletRequestWrapperFilter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <filter-mapping> <filter-name>CasHttpServletRequestWrapperFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- CAS filter configuration end -->

Page 39: Forum Zimbra 2012 Zimbra et la SSO

Krb5.conf[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log

[libdefaults] ticket_lifetime = 24000 default_realm = DOMAIN.TLD default_keytab_name =

/var/lib/tomcat6/webapps/cas-server/spnegoaccount.keytab dns_lookup_realm = false dns_lookup_kdc = true default_tkt_enctypes = rc4-hmac des-cbc-md5 default_tgs_enctypes = rc4-hmac des-cbc-md5

[realms] DOMAIN.TLD = { kdc = srvad.domain.tld:88 admin_server = srvad.domain.tld:749 default_domain = domain.tld }

[domain_realm] .domain.tld = DOMAIN.TLD domain.tld = DOMAIN.TLD

Page 40: Forum Zimbra 2012 Zimbra et la SSO

• Net join –U <user-admin> -S <IP_AD>• ktpass.exe /out spnegocas.keytab /princ HTTP/cas-

server@REALM /pass * /mapuser spnegocas@REALM /ptype krb5_nt_principal /crypto DES-CBC-MD5