Spring Security - TeeJUG 2008
-
Upload
teejug -
Category
Technology
-
view
2.551 -
download
4
Transcript of Spring Security - TeeJUG 2008
TeeJUG - 2008
S i S iSpring Security(Acegi)(Acegi)
Par : Hamed KOUBÂ[email protected]
Par : Hamed KOUBÂA
Q i i jQui suis-jeHamed KOUBAAhamed koubaa@gmail [email protected]
Entreprise actuelle
Expérience sécurité Spring Security (Acegi) depuis 2005
TeeJUG - 2008
PlPlan
IntroductionEtude de casC fComprendre configurationAutres fonctionnalitésAutres fonctionnalitésConclusion
TeeJUG - 2008
TeeJUG - 2008
IntroductionIntroduction
Introduction
Carte d’identitéConcurrentsConcurrentsCaractéristiquesPorté Spring Security
Carte d’identitéIntroduction Etude de cas Autres fontions ConclusionComprendre
Carte d identitéDescription:Description:
Sous-projet de Spring adressant la sécurité des applications Java/J2EE
Naissance: fin 2003Enregistré à sourceforge Mars 2004
Famille:Famille: 11 développeurs orchestrés par Ben Alex et maintenant Luke Taylor
Version actuelle: Acegi 1 0 6 ( décembre 2007)
Ben Alex
5 TeeJUG - 2008
Acegi 1.0.6 ( décembre 2007)Spring security 2 RC1 ( avril 2008)
ConcurrentsIntroduction Etude de cas Autres fontions ConclusionComprendre
Concurrents
Enregistrement à sourceForge Avril 2004 Novembre 2003 Mars 2004 Août 2004
Version actuelle 1.0.3 1.0 1.0.6 2.0- Version Stable
License souplee s o actue e 0 3 0 0 6 0
Statut 4 bêta 5 stable 5 stable 5 stable
Licence LGPL GPL Apache v2.0 LGPL
- License souple- Plus populaire - Plus actif- Très Riche API
Nombre de téléchargements 25 368 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 officiellesde ces composants
6 TeeJUG - 2008
ConcurrentsIntroduction Etude de cas Autres fontions ConclusionComprendre
Concurrents
Enregistrement à sourceForge Avril 2004 Novembre 2003 Mars 2004 Août 2004
Version actuelle 1.0.3 1.0 1.0.6 2.0- Version Stable
License souplee s o actue e 0 3 0 0 6 0
Statut 4 bêta 5 stable 5 stable 5 stable
Licence LGPL GPL Apache v2.0 LGPL
- License souple- Plus populaire - Plus actif- Très Riche API
Spring security
Nombre de téléchargements 25 368 1 003 253 296 14 956
Activité (%) 98.31 60.20 99.82 94.86
y(Acegi)
Développeurs 17 1 11 4
Données récoltées à partir de sourceForge.net et les sites officiellesde ces composants
7 TeeJUG - 2008
CaractéristiquesIntroduction Etude de cas Autres fontions ConclusionComprendre
CaractéristiquesAPI très richeAPI très riche
Plusieurs implémentations suivant la stratégie de sécurité choisie (DAO/JDBC, LDAP, CAS…)sécurité choisie (DAO/JDBC, LDAP, CAS…)Tout est représenté par des interfacesModè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
8 TeeJUG - 2008
intercepteurs AOP)
Porté de Spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre
Porté de Spring security
9 TeeJUG - 2008
Porté de Spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre
Porté de Spring security
Taglibs
Filtresservlet
ACLIntercepteursAOP
10 TeeJUG - 2008
TeeJUG - 2008
Etude de cas
IntroductionIntroductionEtude de cas
Besoins et contraintesSolution : spring securityDemoDemoRécapitulatif
Introduction Etude de cas
Besoins et contraintesAutres fontions ConclusionComprendre
Besoins et contraintes
Votre chef
Votre collègue est maladeC’est à toi de sécuriser l’application
12 TeeJUG - 2008
Introduction Etude de cas
Besoins et contraintesAutres fontions ConclusionComprendre
Besoins et contraintes1-Ajouter un module d’authentification -Implémentation avec minimum de
h d d i- Une page de login
- Module de Vérification duprincipal et crédential
changement de code maintenance
2 Ajouter un module d’autorisations
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pasde spring2- Ajouter un module d autorisations
- Définir des ressources sécurisées
- Définir des permissions d’accès
de spring
3 Securiser le contenu des pages
- Définir une page d’erreur(accès interdit)
-course contre lamontre
3- Securiser le contenu des pages
- Sécuriser les liens
- Sécuriser des parties des pages
13 TeeJUG - 2008
Introduction Etude de cas
Besoins et contraintesAutres fontions ConclusionComprendre
Besoins et contraintesMais… Comment peut-on faire tout cela en si peu de
temps?!
14 TeeJUG - 200814 © GL6 - 200614 © GL6 - 2006
Solution : spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre
Solution : spring security1-Ajouter un module d’authentification -Implémentation avec minimum de
h d d i- Une page de login
- Module de Vérification duprincipal et crédential
changement de code maintenanceModule
d’authentification
2 Ajouter un module d’autorisations
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pasde spring2- Ajouter un module d autorisations
- Définir des ressources sécurisées
- Définir des permissions d’accès
de spring
3 Securiser le contenu des pages
- Définir une page d’erreur(accès interdit)
3- Securiser le contenu des pages
- Sécuriser les liens
- Sécuriser des parties des pages
15 TeeJUG - 2008
Solution : spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre
Solution : spring security1-Ajouter un module d’authentification -Implémentation avec minimum de
h d d i- Une page de login
- Module de Vérification duprincipal et crédential
changement de code maintenanceModule
d’authentification
2 Ajouter un module d’autorisations
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pasde spring2- Ajouter un module d autorisations
- Définir des ressources sécurisées
- Définir des permissions d’accès
de spring
Module d’autorisation
3 Securiser le contenu des pages
- Définir une page d’erreur(accès interdit)
3- Securiser le contenu des pages
- Sécuriser les liens
- Sécuriser des parties des pages
16 TeeJUG - 2008
Solution : spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre
Solution : spring security1-Ajouter un module d’authentification -Implémentation avec minimum de
h d d i- Une page de login
- Module de Vérification duprincipal et crédential
changement de code maintenanceModule
d’authentification
2 Ajouter un module d’autorisations
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pasde spring2- Ajouter un module d autorisations
- Définir des ressources sécurisées
- Définir des permissions d’accès
de spring
Module d’autorisation
3 Securiser le contenu des pages
- Définir une page d’erreur(accès interdit)
3- Securiser le contenu des pages
- Sécuriser les liens
- Sécuriser des parties des pagestagLib
17 TeeJUG - 2008
Solution : spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre
Solution : spring security1-Ajouter un module d’authentification -Implémentation avec minimum de
h d d i- Une page de login
- Module de Vérification duprincipal et crédential
changement de code maintenanceModule
d’authentificationSpring security : securité declarative
2 Ajouter un module d’autorisations
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pasde spring2- Ajouter un module d autorisations
- Définir des ressources sécurisées
- Définir des permissions d’accès
de spring
Module d’autorisation
3 Securiser le contenu des pages
- Définir une page d’erreur(accès interdit)
3- Securiser le contenu des pages
- Sécuriser les liens
- Sécuriser des parties des pagestagLib
18 TeeJUG - 2008
Solution : spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre
Solution : spring security1-Ajouter un module d’authentification -Implémentation avec minimum de
h d d i- Une page de login
- Module de Vérification duprincipal et crédential
changement de code maintenanceModule
d’authentificationSpring security : securité declarative
2 Ajouter un module d’autorisations
principal et crédential
- Un lien de déconnexion
-Application ancienne : struts1, pasde spring2- Ajouter un module d autorisations
- Définir des ressources sécurisées
- Définir des permissions d’accès
de spring
Module d’autorisation
Spring security utilise spring mais net’oblige pas à l’utiliser dans tonapplication
3 Securiser le contenu des pages
- Définir une page d’erreur(accès interdit)
application
3- Securiser le contenu des pages
- Sécuriser les liens
- Sécuriser des parties des pagestagLib
19 TeeJUG - 2008
Plan de batailleIntroduction Etude de cas Autres fontions ConclusionComprendre
Plan de bataille
1. Installation de spring security1. Ajouter les librairies nécessairesj2. Configurer spring security dans web.xml3. Ajouter le fichier applicationContext-j pp
security.xml
2 Module d’authentification2. Module d authentification1. Ajouter la page login2 Configurer les filtres d’authentification2. Configurer les filtres d authentification
20 TeeJUG - 2008
Plan de batailleIntroduction Etude de cas Autres fontions ConclusionComprendre
Plan de bataille
3. Module d’autorisation1. Configurer les filtres d’autorisationg2. Configurer les ressources sécurisées dans la
source de définition des objets
4. Filtres pour logout et accessDenied1 Ajouter le filtre logout et le lien qui l’appelle1. Ajouter le filtre logout et le lien qui l appelle2. Configurer l’accessDenied dans le filtre
d’exception (exceptionTranslationFilter)d exception (exceptionTranslationFilter)
5. Utilisation des tags et sécuriser les liens dans le men
21 TeeJUG - 2008
liens dans le menu
DemoIntroduction Etude de cas Autres fontions ConclusionComprendre
Demo
22 TeeJUG - 2008
RécapitulatifIntroduction Etude de cas Autres fontions ConclusionComprendre
Récapitulatif1. 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 l
23 TeeJUG - 2008
dans le menu
TeeJUG - 2008
ComprendreComprendre
IntroductionEtude de casEtude de casComprendre
?
Détail de configurationFonctionnement
Comprendre le principeIntroduction ComprendreEtude de cas Autres Fonctions Conclusion
Comprendre le principe
25 TeeJUG - 2008
Comprendre le principeIntroduction ComprendreEtude de cas Autres Fonctions Conclusion
Comprendre le principe
Stocker les informations desécurité dans la session HTTP pour ne pas àavoir à redemander ces informationsavoir à redemander ces informations
Se déconnecter
S’assurer que l’utilisateur est bien celui qu’ilprétend être
Générer des exceptions en cas d’accès interdit
Définir les objets sécuriser et déléguer augestionnaire d’authentification et d’autorisation
26 TeeJUG - 2008
pour contrôler les accès
FonctionnementIntroduction ComprendreEtude de cas Autres Fonctions Conclusion
Fonctionnement
Accès à une page sécurisée
utilisateur
27 TeeJUG - 2008
FonctionnementIntroduction ComprendreEtude de cas Autres Fonctions Conclusion
Fonctionnement
Accès à une page sécurisée
utilisateur
28 TeeJUG - 2008
FonctionnementIntroduction ComprendreEtude de cas Autres Fonctions Conclusion
Fonctionnement
Accès à une page sécurisée
utilisateur
29 TeeJUG - 2008
Introduction ComprendreEtude de cas Autres Fonctions Conclusion
Requête
FilterChainProxy
ACEGI
FilterChainProxyd’ACEGI
ACEGI
SecurityInterceptor
30 © GL6 - 200630 © GL6 - 2006
Introduction ComprendreEtude de cas Autres Fonctions Conclusion
P i t
Requête
Point d’accès
FilterChainProxy
ACEGI
FilterChainProxyd’ACEGI
ACEGI
SecurityInterceptor
S dObj t
ObjectDefinitionSource
ContextHolder
31 © GL6 - 200631 © GL6 - 2006
SecuredObject
Introduction ComprendreEtude de cas Autres Fonctions Conclusion
P i t
Requête
Point d’accès
FilterChainProxy
ACEGI
FilterChainProxyd’ACEGI
ACEGI
DataSource
SecurityInterceptor AuthenticationManager
S dObj t
ObjectDefinitionSource
ContextHolder
32 © GL6 - 200632 © GL6 - 2006
SecuredObject
Introduction ComprendreEtude de cas Autres Fonctions Conclusion
P i t
Requête
Point d’accès
FilterChainProxy
ACEGI
FilterChainProxyd’ACEGI
ACEGI
DataSource
SecurityInterceptor AuthenticationManager
S dObj t AccessDecisionManager
ObjectDefinitionSource
ContextHolder
33 © GL6 - 200633 © GL6 - 2006
SecuredObject AccessDecisionManager
TeeJUG - 2008
Autres Fonctionnalités
IntroductionEtude de casEtude de casComprendreAutres fonctionnalitéAutres fonctionnalité
Autres fonctionnalités
Autres fonctionnalitésIntroduction ComprendreEtude de cas Autres Fonctions Conclusion
Autres fonctionnalitésSecurité au niv couche service (AOP)Securité au niv couche service (AOP)Securité au niv d’instance des objets (ACL)Connexion en httpsConnexion en httpsSupport de l’autentification via ldap
t d dcryptage des pwdIntegration avec ehcacheI t ti CAS SSOIntegration avec CAS : SSOIntegration avec AndroMDAE t l iEvent logging….et beaucoup plus
35 TeeJUG - 2008
TeeJUG - 2008
ConclusionConclusionIntroductionEtude de casComprendreAutres fonctionnalitésConclusionConclusion
Next…
NextIntroduction ConstructionComment faire? Fonctionnement Conclusion
Next…
Une connaissance ne devient savoir qu’à travers le filtre de l’expérience
A vous de jouer :-)A vous de jouer : )
37 TeeJUG - 2008
TeeJUG - 2008
M iMerciContact : [email protected]
Blog : http://teejug.blogspot.com/
Google group : http://groups.google.com/group/teejugp g p g g g p j g