JA-SIG CAS - RMLL 2008

3,269 views
3,108 views

Published on

JA-SIG CAS Presentation made by Arnaud Lesueur & Romain Bourgue at the Rencontres Mondiales du Logiciel Libre 2008

http://2008.rmll.info/CAS.html

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,269
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
Downloads
51
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

JA-SIG CAS - RMLL 2008

  1. 1. <ul><ul><li>Romain Bourgue & Arnaud Lesueur </li></ul></ul><ul><ul><li>Rencontres Mondiales du Logiciel Libre </li></ul></ul><ul><ul><li>4 Juillet 2008 Mont de Marsan </li></ul></ul>
  2. 2. Sommaire <ul><li>Introduction </li></ul><ul><li>Projet CAS </li></ul><ul><li>Cinématiques de fonctionnement </li></ul><ul><li>Sous le capot... </li></ul><ul><li>Retour sur expérience : CAS au MAP </li></ul><ul><li>Pour en savoir plus </li></ul>
  3. 3. Agenda <ul><li>Introduction </li></ul><ul><ul><li>Qui sommes-nous ? </li></ul></ul><ul><ul><li>Qu'est-ce qu'un SSO...? </li></ul></ul><ul><li>Projet CAS </li></ul><ul><li>Cinématiques de fonctionnement </li></ul><ul><li>Sous le capot... </li></ul><ul><li>Retour sur expérience : CAS au MAP </li></ul><ul><li>Pour en savoir plus </li></ul>
  4. 4. Qui sommes-nous ? <ul><li>Romain Bourgue – Ministère de l'Agriculture et de la Pêche (MAP) </li></ul><ul><ul><li>Expert sécurité, au MAP depuis 6 ans </li></ul></ul><ul><ul><li>Responsable de l'architecture SSO (en place depuis 2 ans) </li></ul></ul><ul><ul><li>Administration des infrastructures de sécurité (PF, Proxies, Reverses Proxies, PKI, etc ). Principalement en LL </li></ul></ul><ul><li>Arnaud Lesueu r – Dictao </li></ul><ul><ul><li>4 ans d'expertise en gestion d'identité. Sujets de prédilection : Authentification, Single Sign-On, Fédération, Provisionning, Public Key Infrastructure </li></ul></ul><ul><ul><li>Développeur CAS depuis 2006 avec notamment : </li></ul></ul><ul><ul><ul><li>Authentication Handler : SPNEGO (Kerberos / NTLM) </li></ul></ul></ul><ul><ul><ul><li>Tests fonctionnels automatisés (Canoo WebTest) </li></ul></ul></ul><ul><ul><ul><li>Haute disponibilité (JBoss Cache) </li></ul></ul></ul>
  5. 5. Qu'est-ce qu'un SSO ? Objectif et enjeux <ul><li>Objectifs : </li></ul><ul><ul><li>Centraliser les authentifications applicatives en une seule authentification sécurisée. </li></ul></ul><ul><ul><li>Une seule authentification, une seule fois ! </li></ul></ul><ul><li>Enjeux : </li></ul><ul><ul><li>Simplifier la gestion des mots de passe utilisateur et des référentiels d'authentification </li></ul></ul><ul><ul><li>Améliorer la sécurité en renforçant l'authentification </li></ul></ul><ul><ul><li>Faciliter la mise en place de politique de sécurité </li></ul></ul>
  6. 6. Agenda <ul><li>Introduction </li></ul><ul><li>Projet CAS </li></ul><ul><ul><li>Présentation </li></ul></ul><ul><ul><li>Acteurs et historique du projet </li></ul></ul><ul><ul><li>Actualités et Roadmap </li></ul></ul><ul><ul><li>Points forts de la solution </li></ul></ul><ul><li>Cinématiques de fonctionnement </li></ul><ul><li>Sous le capot... </li></ul><ul><li>Retour sur expérience : CAS au MAP </li></ul><ul><li>Pour en savoir plus </li></ul>
  7. 7. Projet CAS : Présentation <ul><li>CAS est un serveur d'authentification unique pour client Web </li></ul><ul><li>Il fonctionne selon un système de tickets, échangés selon un protocole précis et souple supportant les architectures n-tiers Ce protocole d'échange est inspiré de Kerberos </li></ul><ul><li>La richesse de ses modules permet d'intégrer CAS dans des environnements hétérogènes </li></ul>
  8. 8. Projet CAS : Acteurs & Historique <ul><li>CAS 1.0 (2001) </li></ul><ul><ul><li>Développée par l'Université Yale </li></ul></ul><ul><ul><li>Objectif étant d'offrir un SSO pour le Web </li></ul></ul><ul><ul><li>Quelques pages JSP et des servlets </li></ul></ul><ul><li>CAS 2.0.x (Mai 2002 – Mai 2004) </li></ul><ul><ul><li>Toujours développé par Yale </li></ul></ul><ul><ul><li>Introduction du CAS Proxy Ticket </li></ul></ul><ul><ul><li>10 pages JSP et 6 servlets </li></ul></ul><ul><ul><li>Implémentation très populaire avec une large communauté </li></ul></ul><ul><ul><li>Souche utilisée à l'origine par ESUP </li></ul></ul><ul><li>CAS 3.x (Décembre 2004) </li></ul><ul><ul><li>Projet intégré au consortium Ja-Sig </li></ul></ul><ul><ul><li>Compatibilité avec le protocole et clients CAS 2.x </li></ul></ul><ul><ul><li>Architecture complètement repensée et bien plus modulaire </li></ul></ul>
  9. 9. Projet CAS : Actualités & Roadmap <ul><li>Versions courantes : CAS 3.2.1 (stable) – CAS 3.2.2 RC1 (Dev) </li></ul><ul><li>« Nouveautés » </li></ul><ul><ul><li>Console d'administration « Service Management » </li></ul></ul><ul><ul><li>Single Log Out </li></ul></ul><ul><ul><li>API Restful </li></ul></ul><ul><ul><li>Fournisseur d'attributs </li></ul></ul><ul><ul><li>OpenID Provider </li></ul></ul><ul><ul><li>Remember Me </li></ul></ul><ul><li>Roadmap </li></ul><ul><ul><li>CardSpace / Infocard Authentication Handler </li></ul></ul><ul><ul><li>Terracotta Support </li></ul></ul><ul><ul><li>Support SAML 2.0 / Fédération </li></ul></ul><ul><ul><li>http://www.ja-sig.org/wiki/display/CAS/CAS+Vision+and+Roadmap </li></ul></ul>
  10. 10. Projet CAS : Points forts <ul><li>Serveur d'authentification sur le principe de tickets </li></ul><ul><ul><li>Multi-domaine </li></ul></ul><ul><ul><li>Proxy Ticket </li></ul></ul><ul><ul><li>Force de la communauté – avec une reconnaissance de l'implication </li></ul></ul><ul><ul><li>Solution « légère » </li></ul></ul><ul><ul><li>Facilement déployable, intégrable et clusterisable (HA&LB) </li></ul></ul><ul><li>Clients existants : Apache, IIS, Java, PAM, Perl, PHP, Ruby, .Net, etc ! </li></ul><ul><li>Applications nativement CASsifiées: Mantis, uPortal, TikiWiki, JSPWiki, Moodle, Sympa, exo Plateform, Jalios, Liferay, Jtrac, simpleSAMLphp, Shibboleth, etc ! </li></ul>
  11. 11. Agenda <ul><li>Introduction </li></ul><ul><li>Projet CAS </li></ul><ul><li>Cinématiques de fonctionnement </li></ul><ul><ul><li>Primo authentification </li></ul></ul><ul><ul><li>Accès secondaire </li></ul></ul><ul><ul><li>Proxy SSO en architecture n-tiers </li></ul></ul><ul><li>Sous le capot... </li></ul><ul><li>Retour sur expérience : CAS au MAP </li></ul><ul><li>Pour en savoir plus </li></ul>
  12. 12. LDAP Application aft545rd8erzqa4 http://monappli/ https://cas../?service=http://monappli/ PKI aft545rd8erzqa4 http://monappli/ ?ticket= aft545rd8erzqa4 aft545rd8erzqa4 Cinématique de fonctionnement Primo authentification CAS
  13. 13. Cinématique de fonctionnement Accès Secondaire LDAP Application2 aft545rd8erzqa4 http://monappli2/ https:/cas../?service=http://monappli2/ PKI aft545rd8erzqa4 http://monappli2/?ticket= aft545rd8erzqa4 aft545rd8erzqa4 Application CAS
  14. 14. Cinématique de fonctionnement ProxyTicket : Architecture N-tiers LDAP WebMail aft545rd8erzqa4 https://webmail/ https:/cas../?service=https://webmail/ PKI Aft545rd8erzqa4 https://webmail/?ticket= aft545rd8erzqa4 aft545rd8erzqa4 Serveur Mail PAM abf8eyydvzlo abf8eyydvzlo Pwd : abf8eyydvzlo abf8eyydvzlo CAS
  15. 15. Agenda <ul><li>Introduction </li></ul><ul><li>Projet CAS </li></ul><ul><li>Cinématiques de fonctionnement </li></ul><ul><li>Sous le capot ... </li></ul><ul><ul><li>Structure interne </li></ul></ul><ul><ul><li>Modules </li></ul></ul><ul><ul><li>Un exemple </li></ul></ul><ul><li>Retour sur expérience : CAS au MAP </li></ul><ul><li>Pour en savoir plus </li></ul>
  16. 16. Sous le capot Structure interne <ul><li>Développement en Java 1.5 pour le « Core » à base de </li></ul><ul><ul><li>Maven 2 </li></ul></ul><ul><ul><li>Spring Framework </li></ul></ul><ul><ul><li>Spring Webflow </li></ul></ul><ul><ul><li>Hibernate </li></ul></ul><ul><ul><li>Log4J </li></ul></ul><ul><ul><li>OpenSAML </li></ul></ul><ul><ul><li>Inspektr </li></ul></ul><ul><li>Pour les tests </li></ul><ul><ul><li>JUnit </li></ul></ul><ul><ul><li>Canoo WebTest </li></ul></ul><ul><li>Sur ce  « Core » on vient y ajouter des modules ... </li></ul>
  17. 17. Sous le capot Une structure modulaire <ul><li>Plusieurs types de modules : </li></ul><ul><ul><li>Les modules de credentials : Chargés de collecter les éléments d'identification de l'utilisateur </li></ul></ul><ul><ul><li>Les modules d'authentifications : chargés de valider les informations d'identifications ( credentials ) </li></ul></ul><ul><ul><li>Les modules d'attributs : chargés de récupérer des informations sur l'utilisateur </li></ul></ul><ul><ul><li>Les modules de stockage des tickets : chargés de garder en mémoire les tickets (ST, TGT, PGT, PT) </li></ul></ul><ul><ul><li>Les modules de validations de tickets : chargés de répondre aux applications </li></ul></ul>
  18. 18. Sous le capot Modules de credentials <ul><li>Lors de l'authentification, des Credentials sont générés à partir des informations fournies par l'utilisateur </li></ul>CAS plain x509 OTP ... SPNEGO
  19. 19. Sous le capot Modules d'authentification <ul><li>Ces credentials sont validés par des AuthenticationHandlers. On obtient un Principal </li></ul>CAS plain x509 OTP ... SPNEGO LDAP PKI Kerb DB ... NTLM
  20. 20. Sous le capot Modules d'attributs utilisateurs <ul><li>Des informations additionnelles sur l'utilisateur et son authentification peuvent préciser le Principal . On obtient un Authentication </li></ul>CAS @ DB LDAP ... plain x509 OTP ... SPNEGO LDAP PKI Kerb DB ... NTLM
  21. 21. Sous le capot Modules de stockage des tickets <ul><li>L' Authentication et les tickets qui y sont liés sont stockés dans un espace éventuellement partagé par d'autres membres d'un cluster HA </li></ul>CAS @ DB JBoss Cache aft545rd8erzqa4 DB LDAP ... plain x509 OTP ... SPNEGO LDAP PKI Kerb DB ... NTML
  22. 22. Sous le capot Modules de validation de ticket <ul><li>Les tickets sont ensuite validés par les applications à travers modules implémentant des protocoles différents </li></ul>CAS @ DB JBoss Cache aft545rd8erzqa4 /validate /serviceValidate /SAMLValidate API Cas Partenaire SAML DB LDAP ... ... ... SAML Cas2 Cas1 Mod_CAS plain x509 OTP ... SPNEGO LDAP PKI Kerb DB ... NTLM
  23. 23. Sous le capot Déclaration d'un module d'authentification <ul><li>Exemple pour déclarer une authentification LDAP. Editer le fichier deployerConfigContext.xml pour ajouter : </li></ul>
  24. 24. Agenda <ul><li>Introduction </li></ul><ul><li>Projet CAS </li></ul><ul><li>Cinématiques de fonctionnement </li></ul><ul><li>Sous le capot ... </li></ul><ul><li>Retour sur expérience : CAS au MAP </li></ul><ul><ul><li>Environnement et problématiques </li></ul></ul><ul><ul><li>Particularités d'implémentation </li></ul></ul><ul><ul><li>Quelques chiffres </li></ul></ul><ul><li>Pour en savoir plus </li></ul>
  25. 25. Retour sur expérience : CAS au MAP Environnement et problématiques <ul><li>3 types de populations : agents, partenaires et usagers. </li></ul><ul><li>Différents référentiels d’authentification (DB, LDAP, PKIs) </li></ul><ul><li>Différents vecteurs d’authentification : </li></ul><ul><ul><li>Identifiant/Mot de passe </li></ul></ul><ul><ul><li>Certificats issues de différentes AC </li></ul></ul><ul><ul><li>SSO Partenaire </li></ul></ul><ul><li>Différents types de clients CAS : </li></ul><ul><ul><li>Télé-procédures Orion (framework Java du MAP) </li></ul></ul><ul><ul><li>Applications PHP, Java, .NET, … </li></ul></ul><ul><ul><li>Applications Web tierces (par mod_cas) </li></ul></ul>
  26. 26. Retour sur expérience : CAS au MAP Architecture déployée
  27. 27. Retour sur expérience : CAS au MAP Particularité d'implémentation <ul><li>Architecture HA&LB sur 2 serveurs dédiés s'appuyant sur JBoss Cache pour le partage des tickets </li></ul><ul><li>Clusteur extensible à N noeuds </li></ul><ul><li>Web Service de validation de ticket pour les attributs utilisateurs </li></ul><ul><li>Support de référentiels d'authentification : on lie des AuthenticationHandler à des applications </li></ul><ul><li>Configuration XML gérée par Puppet à terme supportée en BDD et JPA </li></ul><ul><li>Infrastructure auditée sur l'aspect sécurité et performance </li></ul><ul><li>Support de délégation d'authentification SSO partenaire </li></ul>
  28. 28. Retour sur expérience : CAS au MAP Interaction avec un SSO partenaire
  29. 29. Retour sur expérience : CAS au MAP Quelques chiffres <ul><li>80 JH de développement et d'intégration </li></ul><ul><li>0,5 ETP d'exploitation et maintenance évolutive </li></ul><ul><li>Une vingt aine de services Web </li></ul><ul><li>2500 authentifications effectuées par jour </li></ul><ul><li>2800 tickets générés par jours :- </li></ul>
  30. 30. Agenda <ul><li>Introduction </li></ul><ul><li>Projet CAS </li></ul><ul><li>Cinématiques de fonctionnement </li></ul><ul><li>Sous le capot ... </li></ul><ul><li>Retour sur expérience : CAS au MAP </li></ul><ul><li>Pour en savoir plus </li></ul><ul><ul><li>Liens & ressources </li></ul></ul><ul><ul><li>Questions </li></ul></ul>
  31. 31. Liens & Ressources <ul><li>JA-SIG </li></ul><ul><ul><li>Homepage http://www.ja-sig.org/products/cas/ </li></ul></ul><ul><ul><li>CAS User Manual http://www.ja-sig.org/wiki/display/CASUM/ </li></ul></ul><ul><ul><li>CAS Client http://www.ja-sig.org/wiki/display/CASC/ </li></ul></ul><ul><ul><li>Issue Tracker http://www.ja-sig.org/issues/browse/CAS/ </li></ul></ul><ul><ul><li>Mailing lists [email_address] & [email_address] </li></ul></ul><ul><ul><li>Code http://developer.ja-sig.org/source/ </li></ul></ul><ul><li>ESUP </li></ul><ul><ul><li>Homepage http://www.esup-portail.org/ </li></ul></ul><ul><ul><li>Mailing list [email_address] </li></ul></ul><ul><li>D'autres serveurs CAS </li></ul><ul><ul><li>Ruby http://code.google.com/p/rubycas-server/ </li></ul></ul><ul><ul><li>Python http://eole.orion.education.fr/wiki/index.php/EoleSSO </li></ul></ul><ul><ul><li>Perl http://www.onlamp.com/pub/a/onlamp/2007/05/31/cas-single-sign-on-with-jifty.html </li></ul></ul>
  32. 32. Questions ? ? ? ? Arnaud LESUEUR Dictao [email_address] Romain BOURGUE Ministère de l'Agriculture et de la Pêche [email_address]

×