Forum Zimbra 2012 Zimbra et la SSO
Upcoming SlideShare
Loading in...5
×
 

Forum Zimbra 2012 Zimbra et la SSO

on

  • 4,867 views

 

Statistics

Views

Total Views
4,867
Views on SlideShare
1,831
Embed Views
3,036

Actions

Likes
0
Downloads
66
Comments
0

3 Embeds 3,036

http://www.zimbrablog.fr 2999
http://feeds.feedburner.com 30
http://translate.googleusercontent.com 7

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Forum Zimbra 2012 Zimbra et la SSO Forum Zimbra 2012 Zimbra et la SSO Presentation Transcript

  • Forum Zimbra 2012 MESSAGERIE & SSO
  • Plan KERBEROS & SHIBBOLETH & Introduction CAS & Zimbra Cas Clients Zimbra Zimbra• Problématique • Principe • Principe • Définition • Inra• SSO • Mise en œuvre • Mise en œuvre • Principe • Univ. Tours • Avantage / • Avantage / • Etat des lieux • HCC Inconvénient Inconvénient • Mise en œuvre • InstitutTelecom 2
  • 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 3
  • 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 4
  • Introduction• SSO = Single Sign OnUne authentification => Accès à 1 ou plusieurs ressourcesMise en œuvre : - d’une configuration simple à la plus compliquée 5
  • Zimbra &• CAS = Central Authentication Server• Plusieurs implémentations & langages : – Java (Consortium Jasig Open Source) – Ruby – Perl 6
  • Zimbra & Principe 7
  • Zimbra & Mise en œuvre• 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) 8
  • Zimbra & Mise en œuvre• 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 9
  • Zimbra & Mise en œuvre• Paramétrage du service CAS Configuration du service CAS pour le référentiel sélectionné : – AD – Serveur OpenLDAP – MySQL – Autres … Ajout des bibliothèques correspondantes aux modules 10
  • Zimbra & Mise en œuvre• 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 11
  • Zimbra & Mise en œuvre• 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 12
  • Zimbra & Avantage / Inconvénient• Mise en œuvre simple • La CASsification est• Possibilité de CASsifier uniquement au niveau du plusieurs domaines de web messagerie avec un seul • Pas possible de CASsifier la cluster Zimbra synchronisation mobile• Faire de Zimbra un point (SyncML) d’entrée unique pour les • Protocole IMAP non autres applications CASsifié CASifiées 13
  • 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 14
  • Zimbra & Kerberos Principe• 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 LOGINUne solution Simple dans la forme mais compliquée dans le fond 15
  • Zimbra & Kerberos Mise en œuvre• 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 16
  • Zimbra & Kerberos Mise 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 17
  • Zimbra & Kerberos Mise en œuvre• Paramétrage IE : – outils -> avancé -> sécurité cocher Activer lauthentification Windows intégrée. – onglet général -> intranet local -> site -> avancé -> et ajouter ladresse https://cas-server – Redémarrage IE• Paramétrage FireFox : – dans la barre dadresse taper about:config – Modification de l’attribut network.automatic-ntlm-auth.trusted-uris : https://cas-server – Redémarrage Firefox 18
  • Zimbra & Kerberos Mise en œuvre• CASsification de Zimbra (vu précédemment) 19
  • Zimbra & KerberosUne authentification forte au service de l’utilisateur • 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 20
  • Zimbra & Shibboleth Définition• La shibbolethisation permet dutiliser un mécanisme de SSO afin daccé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. 21
  • Zimbra & ShibbolethPrincipe : repose sur 2 briques + 1 optionnelle• IDP : Identity Provider. Correspond à un fournisseur didentité (nom dutilisateur et mot de passe).• SP : Service Provider. Cest lui qui présente le service shibbolitisé et fourni la ressource à lutilisateur.• WAYF : Where Are You From ? Permet de sélectionner le fournisseur didentité auquel appartient lutilisateur. 22
  • Zimbra & Shibboleth Zimbra 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 ? 23
  • Zimbra & Shibboleth Mise en oeuvre• 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 24
  • Zimbra & Shibboleth Mise en oeuvre• 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 25
  • Zimbra & Shibboleth Mise en oeuvre• 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 26
  • Zimbra & Shibboleth Mise en oeuvre• Création de la pré authentification – Déporté au niveau du serveur proxy – Codée en PHP• Schéma du proxy 27
  • Zimbra & Shibboleth• 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 28
  • Zimbra & Shibboleth & 29
  • Zimbra & SSO Conclusion• 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 30
  • 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 31
  • 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 32
  • Des questions ? 33
  • Annexes
  • 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/ 35
  • Bibliographie• Single Sign-On open-source avec CAS (Central Authentication Service) : Pascal Aubry, Vincent Mathieu, Julien Marchal 36
  • <!-- 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> 37
  • <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 --> 38
  • 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 39
  • • 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 40