Spring Security - TeeJUG 2008

38
TeeJUG - 2008 S i S i Spring Security (Acegi) (Acegi) Par : Hamed KOUBÂA [email protected] Par : Hamed KOUBÂA

Transcript of Spring Security - TeeJUG 2008

Page 1: Spring Security - TeeJUG 2008

TeeJUG - 2008

S i S iSpring Security(Acegi)(Acegi)

Par : Hamed KOUBÂ[email protected]

Par : Hamed KOUBÂA

Page 2: Spring Security - TeeJUG 2008

Q i i jQui suis-jeHamed KOUBAAhamed koubaa@gmail [email protected]

Entreprise actuelle

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

TeeJUG - 2008

Page 3: Spring Security - TeeJUG 2008

PlPlan

IntroductionEtude de casC fComprendre configurationAutres fonctionnalitésAutres fonctionnalitésConclusion

TeeJUG - 2008

Page 4: Spring Security - TeeJUG 2008

TeeJUG - 2008

IntroductionIntroduction

Introduction

Carte d’identitéConcurrentsConcurrentsCaractéristiquesPorté Spring Security

Page 5: Spring Security - TeeJUG 2008

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)

Page 6: Spring Security - 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

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

Page 7: Spring Security - 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

Page 8: Spring Security - 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)

Page 9: Spring Security - TeeJUG 2008

Porté de Spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre

Porté de Spring security

9 TeeJUG - 2008

Page 10: Spring Security - TeeJUG 2008

Porté de Spring securityIntroduction Etude de cas Autres fontions ConclusionComprendre

Porté de Spring security

Taglibs

Filtresservlet

ACLIntercepteursAOP

10 TeeJUG - 2008

Page 11: Spring Security - TeeJUG 2008

TeeJUG - 2008

Etude de cas

IntroductionIntroductionEtude de cas

Besoins et contraintesSolution : spring securityDemoDemoRécapitulatif

Page 12: Spring Security - TeeJUG 2008

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

Page 13: Spring Security - 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

Page 14: Spring Security - 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

Page 15: Spring Security - 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

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

Page 16: Spring Security - 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

Page 17: Spring Security - 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

Page 18: Spring Security - 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

Page 19: Spring Security - 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

Page 20: Spring Security - 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

Page 21: Spring Security - 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

Page 22: Spring Security - TeeJUG 2008

DemoIntroduction Etude de cas Autres fontions ConclusionComprendre

Demo

22 TeeJUG - 2008

Page 23: Spring Security - 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

Page 24: Spring Security - TeeJUG 2008

TeeJUG - 2008

ComprendreComprendre

IntroductionEtude de casEtude de casComprendre

?

Détail de configurationFonctionnement

Page 25: Spring Security - TeeJUG 2008

Comprendre le principeIntroduction ComprendreEtude de cas Autres Fonctions Conclusion

Comprendre le principe

25 TeeJUG - 2008

Page 26: Spring Security - 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

Page 27: Spring Security - TeeJUG 2008

FonctionnementIntroduction ComprendreEtude de cas Autres Fonctions Conclusion

Fonctionnement

Accès à une page sécurisée

utilisateur

27 TeeJUG - 2008

Page 28: Spring Security - TeeJUG 2008

FonctionnementIntroduction ComprendreEtude de cas Autres Fonctions Conclusion

Fonctionnement

Accès à une page sécurisée

utilisateur

28 TeeJUG - 2008

Page 29: Spring Security - TeeJUG 2008

FonctionnementIntroduction ComprendreEtude de cas Autres Fonctions Conclusion

Fonctionnement

Accès à une page sécurisée

utilisateur

29 TeeJUG - 2008

Page 30: Spring Security - TeeJUG 2008

Introduction ComprendreEtude de cas Autres Fonctions Conclusion

Requête

FilterChainProxy

ACEGI

FilterChainProxyd’ACEGI

ACEGI

SecurityInterceptor

30 © GL6 - 200630 © GL6 - 2006

Page 31: Spring Security - TeeJUG 2008

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

Page 32: Spring Security - TeeJUG 2008

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

Page 33: Spring Security - TeeJUG 2008

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

Page 34: Spring Security - TeeJUG 2008

TeeJUG - 2008

Autres Fonctionnalités

IntroductionEtude de casEtude de casComprendreAutres fonctionnalitéAutres fonctionnalité

Autres fonctionnalités

Page 35: Spring Security - TeeJUG 2008

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

Page 36: Spring Security - TeeJUG 2008

TeeJUG - 2008

ConclusionConclusionIntroductionEtude de casComprendreAutres fonctionnalitésConclusionConclusion

Next…

Page 37: Spring Security - TeeJUG 2008

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

Page 38: Spring Security - 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