CAS, un SSO web open source 14h35-15h25 - La Seine A
CAS, un SSO web open source Jérôme LELEU Committer CAS Architecte du CAS chez SFR https://github.com/leleuj @leleuj 27 au 29 mars 2013
Sommaire SSO et CAS Protocole CAS Serveur CAS : fonctionnalités, mise en œuvre, intégration Clients CAS Le CAS chez SFR
Définition d un SSO Single Sign-On = «s authentifier 1 seule fois et accéder à n ressources protégées» Système SSO = authentification unique et centralisée + contrôle d accès
CAS : généralités Central Authentication Service Créé à Yale en 2001 Open source Unicon
CAS : les éléments clés 1 serveur en Java valide les logins/mots de passe session SSO (CASTGC) / accès (ST) n clients : technologies différentes, embarqués dans les applications («cassifiées») 1 protocole public
Protocole CAS : la cinématique NAVIGATEUR 1: /app/protected 2a: vers /cas/login?service=/app/ 5b SITE WEB CLIENT CAS 5a: vers /app/?ticket=st + CASTGC 3 2b 4 : login /pwd 7: SERVEUR CAS
Back office : déclaration des services
Protocole CAS : concepts avancés renew = forcer l authentification gateway = essayer l authentification Proxification CAS : SITE WEB WEB SERVICE TGT ST PT CLIENT CAS PGT+PT CLIENT CAS ST PT SERVEUR CAS
Serveur CAS : authentification LDAP BD Radius Certificats X509 SPNEGO JAAS Votre méthode d authentification
Serveur CAS : stockage des tickets En mémoire BD JBoss Cache Ehcache Memcached
Serveur CAS : logout SLO = Single Log Out Communication serveur CAS application Clustering applicatif SITE WEB? CLIENT CAS SITE WEB 1: /cas/logout 2: /app/ + logoutrequest= SERVEUR CAS <samlp:logoutrequest <samlp:sessionindex>st</samlp:sessionindex> </samlp:logoutrequest> CLIENT CAS
Serveur CAS : autres fonctionnalités API REST Remember-me Audit Monitoring
Serveur CAS : composants techniques 1 webapp + n librairies optionnelles Spring Core, Security, MVC Webflow : login-webflow.xml classe CentralAuthenticationServiceImpl
Serveur CAS : mise en oeuvre Overlay Maven : + + Configuration : Configuration Contexte Spring Réglage des timeouts Stockage des tickets Méthodes d authentification Identifiant et attributs de l utilisateur Définition des différentes propriétés ticketexpirationpolicies.xml ticketregistry.xml deployerconfigcontext.xml cas.properties
Serveur CAS : page de login
Intégration avec OAuth, SAML et OpenID Interopérabilité Les différents supports : Protocole Type Support client Support serveur OAuth Autorisation Facebook, Twitter, Google, LinkedIn SSO, fédération d identités Complet avec OpenID SSO
Les clients CAS Officiels : Java,.Net, PHP, mod_auth_cas, Spring Security, Apache Shiro (développé par moi) Non-officiels : Perl, Python, Ruby https://wiki.jasig.org/display/casc/unofficial+cas+clients Play framework 2.x (Java & Scala) : play-pac4j + pac4j-cas (développé par moi)
Simplicité du client CAS Java <filter> <filter-name>cas Authentication Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.authenticationfilter</filter-class> <init-param> <param-name>casserverloginurl</param-name> <param-value>https://localhost:8443/cas/login</param-value> </init-param> <init-param> <param-name>servername</param-name> <param-value>http://localhost:8080</param-value> </init-param> </filter> <filter> <filter-name>cas Validation Filter</filter-name> <filter-class>org.jasig.cas.client.validation. Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casserverurlprefix</param-name> <param-value>https://localhost:8443/cas</param-value> </init-param> <init-param> <param-name>servername</param-name> <param-value>http://localhost:8080</param-value> </init-param> </filter> protège l application et renvoie sur le serveur CAS valide les tickets reçus du serveur CAS
Les produits «cassifiés» Confluence, JIRA Drupal Liferay uportal Outlook Web Application TikiWiki Tomcat, Apache2::AuthCAS, mod_auth_cas
Plus grosse installation en France? + de 200 sites sfr.fr 11 millions d authentification/jour 600 requêtes/seconde sur 3 serveurs Remember-me, authentification transparente (3G)
Pages de login : sécurité vs marketing Sécurité Adaptations graphiques Publicité
Meilleur stockage des tickets? Avec une très forte volumétrie sur un cluster de 3 serveurs Problèmes de performance Performant mais gourmand Très performant BD Ehcache Memcached
Double identité : SFR et Facebook http://livepass.sfr.fr «Offrir une expérience cliente innovante basée sur Facebook» Rapprochement des comptes SFR et FB Détection Javascript de l authentification FB
Conclusion Projet open source actif Simple Performant Très riche en fonctionnalités S intègre avec de nombreux outils et protocoles
Les urls pour bien commencer http://www.jasig.org/cas https://wiki.jasig.org/display/casum https://wiki.jasig.org/display/casc https://github.com/jasig