SlideShare une entreprise Scribd logo
1  sur  24
Spring Security
Notion de sécurité


  • La sécurité est un aspect crucial dans la plupart des
  applications

  • La sécurité est une préoccupation qui transcende les
    fonctionnalités d'une application

  • Une application ne doit jamais prendre en charge sa propre
    sécurité

  • C’est mieux de distinguer entre l’application et la sécurité
Acegi Security



    • Lancé en 2003

    • Devenu extrêmement populaire

    • Services de sécurité pour le framework Spring

    • Depuis la version 1.1.0, Acegi devient un module de Spring
Spring Security

 “Spring Security is a powerful, flexible security solution
 for enterprise software, with a particular emphasis on
 applications that use Spring.”


 Spring Security
    • offre une sécurité déclarative pour vos applications basées sur Spring

    • gère l'authentification et l'autorisation

    • tire pleinement parti des techniques d'injection de dépendance (DI) et de l’orienté
      aspect sur lesquelles est basé le framework Spring
Spring Security n’est pas …



   • Firewall, proxy server, IDS (Intrusion Detection System)

   • Operating system security

   • JVM (sandbox) security
Qui l’utilise ?
      • Plus de 231 000 téléchargements sur SourceForge

      • Au moins 20 000 téléchargements et 14,000 postes
        dans le forum de la communiqué

      • Utilisé dans de nombreux environnements exigeants
         - Les grandes banques
         - Défense et le gouvernement
         - Universités
         - Les vendeurs de logiciels indépendants
         - OSS comme OpenNMS, OAJ, Roller, AtLeap,....
Il fonctionne bien avec ...


     • Spring Portfolio       • JAAS
     • AspectJ                • Jasypt
     • JA-SIG CAS             • Grails
     • JOSSO                  • Mule
     • NTLM via JCIFS         • DWR
     • OpenID                 • Appfuse
     • SiteMinder             • AndroMDA
     • Atlassian Crowd
     • jCaptcha
Domaines de capacité

    • Authentification

    • Authorisation Web URL

    • L'autorisation d’une invocation de la méthode

    • WS-Security (via Spring Web Services)

    • Authorisation de débit (via Spring Web Flow)

    • Détéction de l’utilisateur (Captcha) …
Concepts clés



    • Filtres (Security Interceptor)

    • Authentification

    • Authorisation
       • Authorisation Web
       • Méthode d’authorisation
Éléments fondamentaux de Spring Security



                                 Security
                               Interceptor




 Authentication   Access Decision            Run-As    After-Invocation
   Manager           Manager                 Manager       Manager
Spring Security




                  Filtres
Security Interceptor
  • Un verrou qui protège les ressources sécurisées, pour permettre à l’utilisateur de
  saisir un username et un mot de passe

                                               SECURITY
                        CALLER                                  SERVICE
                                             INTERCEPTOR

                                   demande

                                                       Contrôle de sécurité
                                 exception
                                                           demande




  • Mise en œuvre dépend de ressources sécuriisées
       •URL - filtre de servlet
       •Méthodes – Aspects

  • Déléguer des responsabilités aux différents managers
Filtres de Spring Security
                                             Demande             Réponse


                                                   Integration Filter

                                         Authentication Processing Filter

                                            Exception Translation Filter

                                             Filter Security Interceptor


                                               Secured Web Resource


 Filter                  What it does
                         responsible for retrieving a previously stored authentication (most
 Integration Filter
                         likely stored in the HTTP session) so that it will be ready for Spring Security’s other filters to Process
 Authentication          determine if the request is an authentication request. If so, the user information (typically a username/
 Processing Filter       password pair) is retrieved from the request and passed on to the authentication manager
 Exception Translation   translates exceptions, for AuthenticationException request will be sent to a login screen, for
 Filter                  AccessDeniedException returns HTTP 403 to the browser
 Filter Security         examine the request and determine whether the user has the necessary privileges to access the
 Interceptor             secured resource. It leans heavily on the authentication manager and the access decision manager
Filtres de Spring Security
Filter                                     Purpose
HttpRequestIntegrationFilter               Populates the security context using information from the user principal
CaptchaValidationProcessingFilter          Helps to identify a user as a human using Captcha techniques
ConcurrentSessionFilter                    Ensures that a user is not simultaneously logged in more than a set number of times
HttpSessionContextIntegrationFilter        Populates the security context using information obtained from the http session
FilterSecurityInterceptor                  Decides whether or not to allow access to a secured resource
AnonymousProcessingFilter                  Used to identify an unauthenticated user as an anonymous user
ChannelProcessingFilter                    Ensures that a request is being sent over HTTP or HTTPS
BasicProcessingFilter                      Attempts to authenticate a user by processing an HTTP Basic authentication
CasProcessingFilter                        Authenticates a user by processing a CAS (Central Authentication Service) ticket
DigestProcessingFilter                     Attempts to authenticate a user by processing an HTTP Digest authentication
ExceptionTranslationFilter                 Handles any AccessDeniedException or AuthenticationException
LogoutFilter                               Used to log a user out of the application
RememberMeProcessingFilter                 Automatically authenticates a user who has asked to be “remembered” by the application
SwitchUserProcessingFilter                 Used to switch out a user. Provides functionality similar to Unix’s su
AuthenticationProcessingFilter             Accepts the user’s principal and credentials and attempts to authenticate the user
SiteminderAuthenticationProcessingFilter   Authenticates a users by processing CA/Netegrity SiteMinder headers.
X509ProcessingFilter                       Authenticates a user by processing an X.509 certificate submitted by a client web Browser
SecurityContextHolderAwareRequestFilter    Populates the servlet request with a request wrapper.
Flux d‘exécution d’une requête à travers les filtres de Spring Security



                                             Servlet Container

   Web
   User                   Security Interceptor                  Filter X    Servlet




                                             Filter Chain

                     Filter 1     Filter 2        Filter 3      Filter 4   Filter 5


                                             Spring Container
Spring Security




          Authentification
Gestion d’authentification

• verifier le principal (souvent un username et un password)

• Spring Security est livré avec des gestionnaires d'authentification flexibles qui
couvrent les stratégies d'authentification les plus courantes

                                        Authentication
                                          Manager



                                          Provider
                                          Manager




                DAO                          CAS                         X.509
           Authentication               Authentication               Authentication
              Provider                     Provider                     Provider

                            JAAS                             LDAP
                       Authentication                    Authentication
                          Provider                          Provider
Spring Security




            Authorisation
Gestion de décision d’accès
• Chargé de décider si l'utilisateur a l'accès approprié aux ressources

• Spring Security est livré avec trois implémentations du gestionnaire de la décision d'accès




  Access decision manager       How it decides to grant/deny access
  Affirmative Based             Allows access if at least one voter votes to grant access
  Consensus Based               Allows access if a consensus of voters vote to grant access
  Unanimous Based               Allows access if all voters vote to grant access
Authorisation Web

  <authz:authorize ifAllGranted="ROLE_MOTORIST,ROLE_VIP">
     Welcome VIP Motorist!<br/> <a href="j_acegi_logout">Logoff</a>
  </authz:authorize>

  <authz:authorize ifAnyGranted="ROLE_MOTORIST,ROLE_VIP">
     Welcome Motorist!<br/> <a href="j_acegi_logout">Logoff</a>
  </authz:authorize>

  <authz:authorize ifNotGranted="ROLE_ANONYMOUS">
     <p>This is super-secret content that anonymous users aren't allowed to see.</p>
  </authz:authorize>

  <authz:authorize ifAllGranted="ROLE_MOTORIST“
                   ifAnyGranted="ROLE_VIP,ROLE_FAST_LANE“
                   ifNotGranted="ROLE_ADMIN">
     <p>Only special users see this content.</p>
  </authz:authorize>
Méthode d’authorisation

@Secured(“ROLE_ADMIN”)
@Secured(“ROLE_REGISTRAR”)
public void enrollStudentInCourse(Course course, Student student)
throws CourseException {
   ……
}
Démo
Bibliographie

            Spring in ACTION by Craig Walls
            Chapter 7 – Securing Spring
            http://www.manning.com/walls3/



            Spring in ACTION by Craig Walls
            Chapter 7 – Securing Spring
            http://www.manning.com/walls3/




            http://static.springsource.org/spring-security/site/articles.html

            http://www.infoq.com/presentations/Spring-Security-3

Contenu connexe

Tendances

Prise en main de Jhipster
Prise en main de JhipsterPrise en main de Jhipster
Prise en main de JhipsterKokou Gaglo
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications AndroidLilia Sfaxi
 
Spring Security
Spring SecuritySpring Security
Spring SecuritySumit Gole
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentationYassine Badri
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring BatchAntoine Rey
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework springAntoine Rey
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring FrameworkHùng Nguyễn Huy
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework tola99
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introductionJonathan Holloway
 

Tendances (20)

Spring Security 5
Spring Security 5Spring Security 5
Spring Security 5
 
Prise en main de Jhipster
Prise en main de JhipsterPrise en main de Jhipster
Prise en main de Jhipster
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
cours j2ee -présentation
cours  j2ee -présentationcours  j2ee -présentation
cours j2ee -présentation
 
Spring boot
Spring bootSpring boot
Spring boot
 
Apache Maven 3
Apache Maven 3Apache Maven 3
Apache Maven 3
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring Batch
 
Les dessous du framework spring
Les dessous du framework springLes dessous du framework spring
Les dessous du framework spring
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Vue, vue router, vuex
Vue, vue router, vuexVue, vue router, vuex
Vue, vue router, vuex
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Jenkins
JenkinsJenkins
Jenkins
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Hibernate jpa
Hibernate jpaHibernate jpa
Hibernate jpa
 

En vedette

Fun With Spring Security
Fun With Spring SecurityFun With Spring Security
Fun With Spring SecurityBurt Beckwith
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring SecurityDzmitry Naskou
 
Spring Security
Spring SecuritySpring Security
Spring SecurityBoy Tech
 
What's New in spring-security-core 2.0
What's New in spring-security-core 2.0What's New in spring-security-core 2.0
What's New in spring-security-core 2.0Burt Beckwith
 
Hacking the Grails Spring Security 2.0 Plugin
Hacking the Grails Spring Security 2.0 PluginHacking the Grails Spring Security 2.0 Plugin
Hacking the Grails Spring Security 2.0 PluginBurt Beckwith
 
Spring Framework - Web Flow
Spring Framework - Web FlowSpring Framework - Web Flow
Spring Framework - Web FlowDzmitry Naskou
 
Дикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургДикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургКирилл Толкачёв
 
Angular2 - getting-ready
Angular2 - getting-ready Angular2 - getting-ready
Angular2 - getting-ready Nir Kaufman
 
OAuth2 and Spring Security
OAuth2 and Spring SecurityOAuth2 and Spring Security
OAuth2 and Spring SecurityOrest Ivasiv
 
Stormpath 101: Spring Boot + Spring Security
Stormpath 101: Spring Boot + Spring SecurityStormpath 101: Spring Boot + Spring Security
Stormpath 101: Spring Boot + Spring SecurityStormpath
 
Workshop Guide: RESTful Java Web Application with Spring Boot
Workshop Guide: RESTful Java Web Application with Spring BootWorkshop Guide: RESTful Java Web Application with Spring Boot
Workshop Guide: RESTful Java Web Application with Spring BootFabricio Epaminondas
 
Microservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMicroservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMakoto Kakuta
 

En vedette (16)

Fun With Spring Security
Fun With Spring SecurityFun With Spring Security
Fun With Spring Security
 
Spring Security 3
Spring Security 3Spring Security 3
Spring Security 3
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
 
Spring Security Introduction
Spring Security IntroductionSpring Security Introduction
Spring Security Introduction
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Spring security
Spring securitySpring security
Spring security
 
What's New in spring-security-core 2.0
What's New in spring-security-core 2.0What's New in spring-security-core 2.0
What's New in spring-security-core 2.0
 
Hacking the Grails Spring Security 2.0 Plugin
Hacking the Grails Spring Security 2.0 PluginHacking the Grails Spring Security 2.0 Plugin
Hacking the Grails Spring Security 2.0 Plugin
 
Spring Framework - Web Flow
Spring Framework - Web FlowSpring Framework - Web Flow
Spring Framework - Web Flow
 
Дикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG ЕкатеринбургДикие микросервисы на JUG Екатеринбург
Дикие микросервисы на JUG Екатеринбург
 
Angular2 - getting-ready
Angular2 - getting-ready Angular2 - getting-ready
Angular2 - getting-ready
 
OAuth2 and Spring Security
OAuth2 and Spring SecurityOAuth2 and Spring Security
OAuth2 and Spring Security
 
Stormpath 101: Spring Boot + Spring Security
Stormpath 101: Spring Boot + Spring SecurityStormpath 101: Spring Boot + Spring Security
Stormpath 101: Spring Boot + Spring Security
 
Workshop Guide: RESTful Java Web Application with Spring Boot
Workshop Guide: RESTful Java Web Application with Spring BootWorkshop Guide: RESTful Java Web Application with Spring Boot
Workshop Guide: RESTful Java Web Application with Spring Boot
 
Microservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMicroservices /w Spring Security OAuth
Microservices /w Spring Security OAuth
 

Similaire à Spring security

Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Sylvain Maret
 
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...Microsoft
 
Introduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreMSDEVMTL
 
CIEM, tiens une nouvelle catégorie de produits identité?
CIEM, tiens une nouvelle catégorie de produits identité?CIEM, tiens une nouvelle catégorie de produits identité?
CIEM, tiens une nouvelle catégorie de produits identité?Identity Days
 
Modèle de sécurité AWS
Modèle de sécurité AWSModèle de sécurité AWS
Modèle de sécurité AWSJulien SIMON
 
Tour de France Azure PaaS 4/7 Sécuriser la solution
Tour de France Azure PaaS 4/7 Sécuriser la solutionTour de France Azure PaaS 4/7 Sécuriser la solution
Tour de France Azure PaaS 4/7 Sécuriser la solutionAlex Danvy
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Philippe Beraud
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Microsoft Décideurs IT
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Microsoft Technet France
 
Swsa formation-securiser-le-web-avec-cisco-web-security-appliance
Swsa formation-securiser-le-web-avec-cisco-web-security-applianceSwsa formation-securiser-le-web-avec-cisco-web-security-appliance
Swsa formation-securiser-le-web-avec-cisco-web-security-applianceCERTyou Formation
 
Chp5 - Sécurité des Services
Chp5 - Sécurité des ServicesChp5 - Sécurité des Services
Chp5 - Sécurité des ServicesLilia Sfaxi
 
Alphorm.com Formation Architecture Microservices - Sécurité
Alphorm.com Formation Architecture Microservices - SécuritéAlphorm.com Formation Architecture Microservices - Sécurité
Alphorm.com Formation Architecture Microservices - SécuritéAlphorm
 
chap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdfchap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdfdepinfo
 
Bonnes pratiques pour la gestion des opérations de sécurité AWS
Bonnes pratiques pour la gestion des opérations de sécurité AWSBonnes pratiques pour la gestion des opérations de sécurité AWS
Bonnes pratiques pour la gestion des opérations de sécurité AWSJulien SIMON
 
Acegi Security
Acegi SecurityAcegi Security
Acegi Securitytarkaus
 

Similaire à Spring security (20)

Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2Introduction à La Sécurité Informatique 2/2
Introduction à La Sécurité Informatique 2/2
 
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
 
OpenSSO Aquarium Paris
OpenSSO Aquarium ParisOpenSSO Aquarium Paris
OpenSSO Aquarium Paris
 
Introduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET Core
 
CIEM, tiens une nouvelle catégorie de produits identité?
CIEM, tiens une nouvelle catégorie de produits identité?CIEM, tiens une nouvelle catégorie de produits identité?
CIEM, tiens une nouvelle catégorie de produits identité?
 
OWASP TOP 10 Proactive
OWASP TOP 10 ProactiveOWASP TOP 10 Proactive
OWASP TOP 10 Proactive
 
Systemes authentification
Systemes authentificationSystemes authentification
Systemes authentification
 
Modèle de sécurité AWS
Modèle de sécurité AWSModèle de sécurité AWS
Modèle de sécurité AWS
 
Java pour le Web
Java pour le WebJava pour le Web
Java pour le Web
 
Tour de France Azure PaaS 4/7 Sécuriser la solution
Tour de France Azure PaaS 4/7 Sécuriser la solutionTour de France Azure PaaS 4/7 Sécuriser la solution
Tour de France Azure PaaS 4/7 Sécuriser la solution
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
Azure IaaS : concevoir en architecture sécurisée en tirant bénéfice des nouve...
 
Swsa formation-securiser-le-web-avec-cisco-web-security-appliance
Swsa formation-securiser-le-web-avec-cisco-web-security-applianceSwsa formation-securiser-le-web-avec-cisco-web-security-appliance
Swsa formation-securiser-le-web-avec-cisco-web-security-appliance
 
Chp5 - Sécurité des Services
Chp5 - Sécurité des ServicesChp5 - Sécurité des Services
Chp5 - Sécurité des Services
 
Alphorm.com Formation Architecture Microservices - Sécurité
Alphorm.com Formation Architecture Microservices - SécuritéAlphorm.com Formation Architecture Microservices - Sécurité
Alphorm.com Formation Architecture Microservices - Sécurité
 
chap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdfchap 4 Sécurité des accès.pdf
chap 4 Sécurité des accès.pdf
 
Bonnes pratiques pour la gestion des opérations de sécurité AWS
Bonnes pratiques pour la gestion des opérations de sécurité AWSBonnes pratiques pour la gestion des opérations de sécurité AWS
Bonnes pratiques pour la gestion des opérations de sécurité AWS
 
Rapport sécurité
Rapport sécuritéRapport sécurité
Rapport sécurité
 
Acegi Security
Acegi SecurityAcegi Security
Acegi Security
 

Plus de Slimen Belhaj Ali (19)

Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...
 
BPMN,jBPM,BPEL
BPMN,jBPM,BPELBPMN,jBPM,BPEL
BPMN,jBPM,BPEL
 
Websphere
WebsphereWebsphere
Websphere
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
JasperReport
JasperReportJasperReport
JasperReport
 
ERP Universitaire
ERP UniversitaireERP Universitaire
ERP Universitaire
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Tutorial
TutorialTutorial
Tutorial
 
Spring mvc 3.0 web flow
Spring mvc 3.0 web flowSpring mvc 3.0 web flow
Spring mvc 3.0 web flow
 
Share point 2010
Share point 2010Share point 2010
Share point 2010
 
TFS
TFSTFS
TFS
 
objective C
objective Cobjective C
objective C
 
Android
AndroidAndroid
Android
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Administration glassfish 3
Administration glassfish 3Administration glassfish 3
Administration glassfish 3
 

Spring security

  • 2. Notion de sécurité • La sécurité est un aspect crucial dans la plupart des applications • La sécurité est une préoccupation qui transcende les fonctionnalités d'une application • Une application ne doit jamais prendre en charge sa propre sécurité • C’est mieux de distinguer entre l’application et la sécurité
  • 3. Acegi Security • Lancé en 2003 • Devenu extrêmement populaire • Services de sécurité pour le framework Spring • Depuis la version 1.1.0, Acegi devient un module de Spring
  • 4. Spring Security “Spring Security is a powerful, flexible security solution for enterprise software, with a particular emphasis on applications that use Spring.” Spring Security • offre une sécurité déclarative pour vos applications basées sur Spring • gère l'authentification et l'autorisation • tire pleinement parti des techniques d'injection de dépendance (DI) et de l’orienté aspect sur lesquelles est basé le framework Spring
  • 5. Spring Security n’est pas … • Firewall, proxy server, IDS (Intrusion Detection System) • Operating system security • JVM (sandbox) security
  • 6. Qui l’utilise ? • Plus de 231 000 téléchargements sur SourceForge • Au moins 20 000 téléchargements et 14,000 postes dans le forum de la communiqué • Utilisé dans de nombreux environnements exigeants - Les grandes banques - Défense et le gouvernement - Universités - Les vendeurs de logiciels indépendants - OSS comme OpenNMS, OAJ, Roller, AtLeap,....
  • 7. Il fonctionne bien avec ... • Spring Portfolio • JAAS • AspectJ • Jasypt • JA-SIG CAS • Grails • JOSSO • Mule • NTLM via JCIFS • DWR • OpenID • Appfuse • SiteMinder • AndroMDA • Atlassian Crowd • jCaptcha
  • 8. Domaines de capacité • Authentification • Authorisation Web URL • L'autorisation d’une invocation de la méthode • WS-Security (via Spring Web Services) • Authorisation de débit (via Spring Web Flow) • Détéction de l’utilisateur (Captcha) …
  • 9. Concepts clés • Filtres (Security Interceptor) • Authentification • Authorisation • Authorisation Web • Méthode d’authorisation
  • 10.
  • 11. Éléments fondamentaux de Spring Security Security Interceptor Authentication Access Decision Run-As After-Invocation Manager Manager Manager Manager
  • 12. Spring Security Filtres
  • 13. Security Interceptor • Un verrou qui protège les ressources sécurisées, pour permettre à l’utilisateur de saisir un username et un mot de passe SECURITY CALLER SERVICE INTERCEPTOR demande Contrôle de sécurité exception demande • Mise en œuvre dépend de ressources sécuriisées •URL - filtre de servlet •Méthodes – Aspects • Déléguer des responsabilités aux différents managers
  • 14. Filtres de Spring Security Demande Réponse Integration Filter Authentication Processing Filter Exception Translation Filter Filter Security Interceptor Secured Web Resource Filter What it does responsible for retrieving a previously stored authentication (most Integration Filter likely stored in the HTTP session) so that it will be ready for Spring Security’s other filters to Process Authentication determine if the request is an authentication request. If so, the user information (typically a username/ Processing Filter password pair) is retrieved from the request and passed on to the authentication manager Exception Translation translates exceptions, for AuthenticationException request will be sent to a login screen, for Filter AccessDeniedException returns HTTP 403 to the browser Filter Security examine the request and determine whether the user has the necessary privileges to access the Interceptor secured resource. It leans heavily on the authentication manager and the access decision manager
  • 15. Filtres de Spring Security Filter Purpose HttpRequestIntegrationFilter Populates the security context using information from the user principal CaptchaValidationProcessingFilter Helps to identify a user as a human using Captcha techniques ConcurrentSessionFilter Ensures that a user is not simultaneously logged in more than a set number of times HttpSessionContextIntegrationFilter Populates the security context using information obtained from the http session FilterSecurityInterceptor Decides whether or not to allow access to a secured resource AnonymousProcessingFilter Used to identify an unauthenticated user as an anonymous user ChannelProcessingFilter Ensures that a request is being sent over HTTP or HTTPS BasicProcessingFilter Attempts to authenticate a user by processing an HTTP Basic authentication CasProcessingFilter Authenticates a user by processing a CAS (Central Authentication Service) ticket DigestProcessingFilter Attempts to authenticate a user by processing an HTTP Digest authentication ExceptionTranslationFilter Handles any AccessDeniedException or AuthenticationException LogoutFilter Used to log a user out of the application RememberMeProcessingFilter Automatically authenticates a user who has asked to be “remembered” by the application SwitchUserProcessingFilter Used to switch out a user. Provides functionality similar to Unix’s su AuthenticationProcessingFilter Accepts the user’s principal and credentials and attempts to authenticate the user SiteminderAuthenticationProcessingFilter Authenticates a users by processing CA/Netegrity SiteMinder headers. X509ProcessingFilter Authenticates a user by processing an X.509 certificate submitted by a client web Browser SecurityContextHolderAwareRequestFilter Populates the servlet request with a request wrapper.
  • 16. Flux d‘exécution d’une requête à travers les filtres de Spring Security Servlet Container Web User Security Interceptor Filter X Servlet Filter Chain Filter 1 Filter 2 Filter 3 Filter 4 Filter 5 Spring Container
  • 17. Spring Security Authentification
  • 18. Gestion d’authentification • verifier le principal (souvent un username et un password) • Spring Security est livré avec des gestionnaires d'authentification flexibles qui couvrent les stratégies d'authentification les plus courantes Authentication Manager Provider Manager DAO CAS X.509 Authentication Authentication Authentication Provider Provider Provider JAAS LDAP Authentication Authentication Provider Provider
  • 19. Spring Security Authorisation
  • 20. Gestion de décision d’accès • Chargé de décider si l'utilisateur a l'accès approprié aux ressources • Spring Security est livré avec trois implémentations du gestionnaire de la décision d'accès Access decision manager How it decides to grant/deny access Affirmative Based Allows access if at least one voter votes to grant access Consensus Based Allows access if a consensus of voters vote to grant access Unanimous Based Allows access if all voters vote to grant access
  • 21. Authorisation Web <authz:authorize ifAllGranted="ROLE_MOTORIST,ROLE_VIP"> Welcome VIP Motorist!<br/> <a href="j_acegi_logout">Logoff</a> </authz:authorize> <authz:authorize ifAnyGranted="ROLE_MOTORIST,ROLE_VIP"> Welcome Motorist!<br/> <a href="j_acegi_logout">Logoff</a> </authz:authorize> <authz:authorize ifNotGranted="ROLE_ANONYMOUS"> <p>This is super-secret content that anonymous users aren't allowed to see.</p> </authz:authorize> <authz:authorize ifAllGranted="ROLE_MOTORIST“ ifAnyGranted="ROLE_VIP,ROLE_FAST_LANE“ ifNotGranted="ROLE_ADMIN"> <p>Only special users see this content.</p> </authz:authorize>
  • 22. Méthode d’authorisation @Secured(“ROLE_ADMIN”) @Secured(“ROLE_REGISTRAR”) public void enrollStudentInCourse(Course course, Student student) throws CourseException { …… }
  • 23. Démo
  • 24. Bibliographie Spring in ACTION by Craig Walls Chapter 7 – Securing Spring http://www.manning.com/walls3/ Spring in ACTION by Craig Walls Chapter 7 – Securing Spring http://www.manning.com/walls3/ http://static.springsource.org/spring-security/site/articles.html http://www.infoq.com/presentations/Spring-Security-3