Vous êtes sur la page 1sur 38

TeeJUG - 2008

Spring
S i S Security
i
(Acegi)

hamed.koubaa@gmail.com
Par : Hamed KOUBÂA
Q i suis-je
Qui i j
„ Hamed KOUBAA
hamed koubaa@gmail com
hamed.koubaa@gmail.com

„ Entreprise actuelle

„ Expérience sécurité
Spring Security (Acegi) depuis 2005

TeeJUG - 2008
Plan
Pl

„ Introduction
„ Etude de cas
„ Comprendre
C configuration
f
„ Autres fonctionnalités
„ Conclusion

TeeJUG - 2008
TeeJUG - 2008

Introduction

„Introduction

… Carte d’identité
… Concurrents
… Caractéristiques
… Porté Spring Security
Introduction Etude de cas Comprendre Autres fontions Conclusion

Carte d
d’identité
identité
… Description:
… Sous-projet de Spring adressant la
sécurité des applications Java/J2EE

… Naissance:
… fin 2003
… Enregistré à sourceforge Mars 2004

… Famille:
… 11 développeurs orchestrés par Ben Alex
et maintenant Luke Taylor

… Version actuelle: Ben Alex


… Acegi 1.0.6
1 0 6 ( décembre 2007)
… Spring security 2 RC1 ( avril 2008)

5 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Concurrents

Enregistrement à
Avril 2004 Novembre 2003 Mars 2004 Août 2004
sourceForge
- Version Stable
Version
e s o actue
actuelle
e 1.0.3
03 1.0
0 1.0.6
06 2.0
0 - License souple
- Plus populaire
Statut 4 bêta 5 stable 5 stable 5 stable
- Plus actif
Licence LGPL GPL Apache v2.0 LGPL - Très Riche API
Nombre de
25 368 1 003 253 296 14 956
téléchargements
Activité (%) 98.31 60.20 99.82 94.86
Développeurs 17 1 11 4

Données récoltées à partir de sourceForge.net et les sites officielles


de ces composants

6 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Concurrents

Enregistrement à
Avril 2004 Novembre 2003 Mars 2004 Août 2004
sourceForge
- Version Stable
Version
e s o actue
actuelle
e 1.0.3
03 1.0
0 1.0.6
06 2.0
0 - License souple
Statut 4 bêta Spring
5 stable 5 stable 5 stable
- Plus populaire
- Plus actif
Licence LGPL security
GPL y Apache v2.0 LGPL - Très Riche API
Nombre de
téléchargements
25 368 (Acegi)
1 003 253 296 14 956

Activité (%) 98.31 60.20 99.82 94.86


Développeurs 17 1 11 4

Données récoltées à partir de sourceForge.net et les sites officielles


de ces composants

7 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Caractéristiques
… API très riche
… Plusieurs implémentations suivant la stratégie de
sécurité choisie (DAO/JDBC, LDAP, CAS…)
… Tout est représenté par des interfaces
… Modèle très extensible

… Solution peu intrusive pour l’application cible


(n’impose de dépendance vis-à-vis de lui)

… Souple et modulaire
(Basé sur des intercepteurs (filtres servlet et
intercepteurs AOP)
8 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Porté de Spring security

9 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Porté de Spring security


 Taglibs

 Filtres
servlet

 ACL
 Intercepteurs
AOP

10 TeeJUG - 2008
TeeJUG - 2008

Etude de cas

„Introduction
„Etude de cas

… Besoins et contraintes
… Solution : spring security
… Demo
… Récapitulatif
Introduction Etude de cas Comprendre Autres fontions Conclusion

Besoins et contraintes

Votre collègue est malade


C’est à toi de sécuriser
Votre chef l’application

12 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Besoins et contraintes
1-Ajouter un module d’authentification -Implémentation avec minimum de
changement
h d Æ maintenance
d code
de i
- Une page de login
- Module de Vérification du
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pas
2 Ajouter un module d
2- d’autorisations
autorisations de spring
- Définir des ressources sécurisées
- Définir des permissions d’accès
- Définir une page d’erreur -course contre la
(accès interdit) montre
3 Securiser le contenu des pages
3-
- Sécuriser les liens
- Sécuriser des parties des pages

13 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Besoins
Mais… Comment
et contraintes
peut-on faire tout
cela en si peu de
temps?!

14 TeeJUG
© GL6 - -2006
2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Solution : spring security


1-Ajouter un module d’authentification -Implémentation avec minimum de
changement
h d Æ maintenance
d code
de i
- Une page de login
Module
- Module de Vérification du
d’authentification
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pas
2 Ajouter un module d
2- d’autorisations
autorisations de spring
- Définir des ressources sécurisées
- Définir des permissions d’accès
- Définir une page d’erreur
(accès interdit)

3 Securiser le contenu des pages


3-
- Sécuriser les liens
- Sécuriser des parties des pages

15 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Solution : spring security


1-Ajouter un module d’authentification -Implémentation avec minimum de
changement
h d Æ maintenance
d code
de i
- Une page de login
Module
- Module de Vérification du
d’authentification
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pas
2 Ajouter un module d
2- d’autorisations
autorisations de spring
- DéfinirModule
des ressources sécurisées
d’autorisation
- Définir des permissions d’accès
- Définir une page d’erreur
(accès interdit)

3 Securiser le contenu des pages


3-
- Sécuriser les liens
- Sécuriser des parties des pages

16 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Solution : spring security


1-Ajouter un module d’authentification -Implémentation avec minimum de
changement
h d Æ maintenance
d code
de i
- Une page de login
Module
- Module de Vérification du
d’authentification
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pas
2 Ajouter un module d
2- d’autorisations
autorisations de spring
- DéfinirModule
des ressources sécurisées
d’autorisation
- Définir des permissions d’accès
- Définir une page d’erreur
(accès interdit)

3 Securiser le contenu des pages


3-
- Sécuriser les liens
tagLib
- Sécuriser des parties des pages

17 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Solution : spring security


1-Ajouter un module d’authentification -Implémentation avec minimum de
changement
h d Æ maintenance
d code
de i
- Une page de login
Module Spring security : securité declarative
- Module de Vérification du
d’authentification
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pas
2 Ajouter un module d
2- d’autorisations
autorisations de spring
- DéfinirModule
des ressources sécurisées
d’autorisation
- Définir des permissions d’accès
- Définir une page d’erreur
(accès interdit)

3 Securiser le contenu des pages


3-
- Sécuriser les liens
tagLib
- Sécuriser des parties des pages

18 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Solution : spring security


1-Ajouter un module d’authentification -Implémentation avec minimum de
changement
h d Æ maintenance
d code
de i
- Une page de login
Module Spring security : securité declarative
- Module de Vérification du
d’authentification
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pas
2 Ajouter un module d
2- d’autorisations
autorisations de spring
- DéfinirModule
des ressources sécurisées Spring security utilise spring mais ne
t’oblige pas à l’utiliser dans ton
d’autorisation
- Définir des permissions d’accès
application
- Définir une page d’erreur
(accès interdit)

3 Securiser le contenu des pages


3-
- Sécuriser les liens
tagLib
- Sécuriser des parties des pages

19 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Plan de bataille
1. Installation de spring security
1. Ajouter
j les librairies nécessaires
2. Configurer spring security dans web.xml
3. Ajouter
j le fichier applicationContext-
pp
security.xml
2
2. Module d’authentification
d authentification
1. Ajouter la page login
2
2. Configurer les filtres d
d’authentification
authentification

20 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Plan de bataille
3. Module d’autorisation
1. Configurer
g les filtres d’autorisation
2. Configurer les ressources sécurisées dans la
source de définition des objets
4. Filtres pour logout et accessDenied
1
1. Ajouter le filtre logout et le lien qui l’appelle
l appelle
2. Configurer l’accessDenied dans le filtre
d’exception
d exception (exceptionTranslationFilter)
5. Utilisation des tags et sécuriser les
liens dans le men
menu
21 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Demo

22 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres fontions Conclusion

Récapitulatif
1. Installation de spring security

2. Configuration du module d’authentification

3. Configuration du module d’autorisation

4. Configuration des filtres pour logout et


accessDenied

5. Utilisation des tags et securiser les liens


d
dans lle menu
23 TeeJUG - 2008
TeeJUG - 2008

Comprendre
„Introduction
„Etudede cas
?
„Comprendre

… Détail de configuration
… Fonctionnement
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Comprendre le principe

25 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Comprendre le principe

Stocker les informations de


sécurité dans la session HTTP pour ne pas à
avoir à redemander ces informations

Se déconnecter

S’assurer que l’utilisateur est bien celui qu’il


prétend être

Générer des exceptions en cas d’accès interdit

Définir les objets sécuriser et déléguer au


gestionnaire d’authentification et d’autorisation
pour contrôler les accès

26 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Fonctionnement
„ Accès à une page sécurisée

utilisateur

27 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Fonctionnement
„ Accès à une page sécurisée

utilisateur

28 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Fonctionnement
„ Accès à une page sécurisée

utilisateur

29 TeeJUG - 2008
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Requête

FilterChainProxy
d’ACEGI

ACEGI

SecurityInterceptor

30 © GL6 - 2006
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Point
P i t
d’accès

Requête

FilterChainProxy
d’ACEGI

ACEGI

SecurityInterceptor

ContextHolder
ObjectDefinition
Source
S
SecuredObject
dObj t

31 © GL6 - 2006
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Point
P i t
d’accès

Requête

FilterChainProxy
d’ACEGI

ACEGI

DataSource

SecurityInterceptor AuthenticationManager

ContextHolder
ObjectDefinition
Source
S
SecuredObject
dObj t

32 © GL6 - 2006
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Point
P i t
d’accès

Requête

FilterChainProxy
d’ACEGI

ACEGI

DataSource

SecurityInterceptor AuthenticationManager

ContextHolder
ObjectDefinition
Source
S
SecuredObject
dObj t AccessDecisionManager

33 © GL6 - 2006
TeeJUG - 2008

Autres
Fonctionnalités
„Introduction
„Etudede cas
„Comprendre
„ Autres fonctionnalité

… Autres fonctionnalités
Introduction Etude de cas Comprendre Autres Fonctions Conclusion

Autres fonctionnalités
… Securité au niv couche service (AOP)
… Securité au niv d’instance des objets (ACL)
… Connexion en https
… Support de l’autentification via ldap
… cryptage
t d pwd
des d
… Integration avec ehcache
… Integration
I t ti avec CAS : SSO
… Integration avec AndroMDA
… Event
E t logging
l i
… ….et beaucoup plus

35 TeeJUG - 2008
TeeJUG - 2008

Conclusion
„Introduction
„Etudede cas
„Comprendre
„Autres fonctionnalités
„Conclusion

…Next…
Introduction Comment faire? Construction Fonctionnement Conclusion

Next
Next…

Une connaissance ne devient savoir


qu’à travers le filtre de l’expérience

A vous de jouer :-)


:)

37 TeeJUG - 2008
TeeJUG - 2008

M i
Merci
Contact : Hamed.koubaa@gmail.com

Blog :
http://teejug.blogspot.com/
Google group :
http://groups.google.com/group/teejug
p g p g g g p j g

Vous aimerez peut-être aussi