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) …
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
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
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>
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