SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
1
Réalisé par: Lhouceine OUHAMZA
Spring Security avec Jwt
Au niveau d’entreprise le risque de perdre les
données sensibles peut produire des
catastrophes en termes économiques ou
légaux, La sécurité est donc un aspect
important de développement d’une application.
2
Spring Security est un module incontournable
d’une application développée en Spring. Il
apporte tout le nécessaire pour sécuriser une
application et il a l’avantage d’être vraiment
personnalisable.
3
Quand on parle sécurité applicative, nous avons
deux notions essentielles : l’authentification et
les autorisations. Spring Security essaye
d’apporter une solution à ces deux
problématiques.
4
• Spring Security a pour objectif de proposer un
système complet de gestion de la sécurité.
• Ne dépendant pas d’un serveur d’applications
particulier (Tomcat, Jboss,,,)
• Permet de rendre la sécurité complètement
transversale et déclarative.
5
Pour configurer votre application vous pouvez
utiliser soit la configuration historique en XML
soit la Java Config. Cette dernière est plus
qu’encouragée avec les dernières versions de
Spring.
6
La première étape est de créer un bean de
configuration
7
un filtre de servlet (springSecurityFilterChain)
On peut personnaliser les choses
8
• Par défaut plusieurs fonctionnalités sont activées par
défaut
sécurisation de toutes le URL de l’application
• Génération d’un formulaire par défaut pour
s’authentifier
• Service pour se loguer et se déloguer
• Différentes fonctionnalités pour prévenir les attaques
cross domain,
• ...
9
Notre classe de configuration donnée en exemple propose
une configuration par défaut qui est la suivante.
L’URL /login (via un HTTP GET) affiche le formulaire de
login et l’URL /login (via une requête POST) et permet
d’authentifier l’utilisateur.
10
C’est bien beau mais j’aimerais bien proposer mon
propre formulaire pour m’authentifier. Rien de plus
simple:
11
Vous pouvez être moins restrictif ou plus restrictif sur la
définition des autorisations liées aux requêtes. Par
exemple :
12
Je viens de montrer comment sécuriser les requêtes
HTTP mais vous pouvez également restreindre les
droits sur vos méthodes.
13
Pour activer la sécurité via les annotations vous devrez
ajouter l’annotation @EnableGlobalMethodSecurity
dans votre classe de configuration.
14
15
Spring Security traite des mécanismes
d'autorisation à base des cookies de session, ce type
de fonctionnement ne permet pas de partager facilement
un même compte pour s’authentifier sur plusieurs
plateformes distinctes et le serveur a l’obligation de
stocker l’état et les informations des sessions dans sa
mémoire vive.
16
17
18
19
• Cross Site Request Forgery CSRF: Transmettre
à un utilisateur authentifié une requête HTTP
falsifié qui pointe sur une action sans l’avoir
conscience. CSRF Synchronizer Token
• Cross Site Scripting XSS: Injecter du contenu
dans la page qui provoquant des actions sur
les navigateurs des visiteurs.( exécuter les
commandes Systems , redirection vers un autre site
Hameçonnage, afficher fenêtre authentification résultat sera
envoyé au attaquant ) HTTPonly et secure
20
21
22
Les « JSON Web Token » ou JWT sont des jetons
générés par un serveur lors de l’authentification
d’un utilisateur sur une application Web, et qui sont
ensuite transmis au client.
Ils seront renvoyés avec chaque requête HTTP au
serveur, ce qui lui permettra d’identifier l’utilisateur.
23
24
• Contient les informations d’utilisateur (claims -
revendications)
25
26
27
28
• Dans les cookies (recommandé)
1. Les cookies sont utilisées avec HttpOnly ne sont accessible via JavaScript
et sont sécurisés contre XSS,
2. Les cookies sont vulnérables à une attaque CSRF
3. Un cookie ne peut être envoyé qu’au domaine dans lequel il est autorise,
4. Le stockage fournit au moins 4 Mo
• Dans local / session Storage du navigateur
1. Les donnes sont disponibles jusqu'à ce qu’elles soient explicitement
supprimées (LocalStorage)
2. Une fois l’utilisateur ferme la page les données stockées sont
supprimées (SessionStorage)
3. Accessible via JavaScript, cela signifie que JavaScript en cours
d’exécution aura accès au stockage XSS
4. Le stockage fournit au moins 1 Ko
29
30
31
32
33
34
35
Les schémas d'authentification basés sur des jetons sont devenus
extrêmement populaires ces derniers temps, car ils offrent des
avantages importants par rapport aux sessions / cookies:
Pas besoin de protection CSRF
Meilleure intégration avec le mobile
Charge réduite sur le serveur d'autorisation
Pas besoin de magasin de session distribué
Plus vulnérable aux attaques XSS
Le jeton d'accès peut contenir des revendications
d'autorisation obsolètes (par exemple, lorsque
certains privilèges d'utilisateur sont révoqués)
36
Les jetons JWT sont de plus en
plus présents sur les applications principalement Frontend et
là où il est nécessaire d’utiliser un même compte utilisateur
sur plusieurs plateformes. Du point de vue de la sécurité, les
jetons JWT sont relativement bien conçus mais présentent
quelques petits inconvénients qu’il faut bien comprendre et
appréhender avant de les implémenter dans une application.
De plus, il ne faut pas perdre de vue que la sécurité entière
du système d’authentification de l’application repose sur
l’algorithme utilisé ainsi que sur la clé privée qui servent à la
signature des jetons. Il faut donc s’assurer de choisir un
algorithme solide et une clé très forte ainsi que garder cette
dernière secrète.
37

Contenu connexe

Tendances

Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPYouness Boukouchi
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSyrine Ben aziza
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...ENSET, Université Hassan II Casablanca
 

Tendances (20)

Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Spring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrineSpring boot anane maryem ben aziza syrine
Spring boot anane maryem ben aziza syrine
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Scrum course
Scrum courseScrum course
Scrum course
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
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)
 
Complete Java Course
Complete Java CourseComplete Java Course
Complete Java Course
 

Similaire à Systemes authentification

Webinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeWebinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeMarie Tapia
 
Chp5 - Sécurité des Services
Chp5 - Sécurité des ServicesChp5 - Sécurité des Services
Chp5 - Sécurité des ServicesLilia Sfaxi
 
Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_websahar dridi
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Asma Messaoudi
 
La sécurité des applications avec ESAPI
La sécurité des applications avec ESAPILa sécurité des applications avec ESAPI
La sécurité des applications avec ESAPITakfarinas KENOUCHE
 
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
 
LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)Clément OUDOT
 
Sécuriser votre chaîne d'information dans Azure
Sécuriser votre chaîne d'information dans AzureSécuriser votre chaîne d'information dans Azure
Sécuriser votre chaîne d'information dans AzureNis
 
OWASP Québec - Attaques et techniques de défense des sessions Web - par Louis...
OWASP Québec - Attaques et techniques de défense des sessions Web - par Louis...OWASP Québec - Attaques et techniques de défense des sessions Web - par Louis...
OWASP Québec - Attaques et techniques de défense des sessions Web - par Louis...Patrick Leclerc
 
070219 Webinar Sensibilisation Sécurité Logiciel Everteam
070219 Webinar Sensibilisation Sécurité Logiciel Everteam070219 Webinar Sensibilisation Sécurité Logiciel Everteam
070219 Webinar Sensibilisation Sécurité Logiciel EverteamEverteam
 
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
 
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
 
Comment securiser votre annuaire Active Directory contre les attaques de malw...
Comment securiser votre annuaire Active Directory contre les attaques de malw...Comment securiser votre annuaire Active Directory contre les attaques de malw...
Comment securiser votre annuaire Active Directory contre les attaques de malw...Sylvain Cortes
 

Similaire à Systemes authentification (20)

OWASP TOP 10 Proactive
OWASP TOP 10 ProactiveOWASP TOP 10 Proactive
OWASP TOP 10 Proactive
 
Webinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme ThéméeWebinaire : sécurité informatique sur le web - Jérôme Thémée
Webinaire : sécurité informatique sur le web - Jérôme Thémée
 
Chp5 - Sécurité des Services
Chp5 - Sécurité des ServicesChp5 - Sécurité des Services
Chp5 - Sécurité des Services
 
Tuto atelier securisation_site_web
Tuto atelier securisation_site_webTuto atelier securisation_site_web
Tuto atelier securisation_site_web
 
Sécurité informatique mobile cloud astoine maroc francais
Sécurité informatique mobile cloud astoine maroc francaisSécurité informatique mobile cloud astoine maroc francais
Sécurité informatique mobile cloud astoine maroc francais
 
Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02Securitedesapplications 091011120426-phpapp02
Securitedesapplications 091011120426-phpapp02
 
La sécurité des applications avec ESAPI
La sécurité des applications avec ESAPILa sécurité des applications avec ESAPI
La sécurité des applications avec ESAPI
 
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...
 
LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)
 
Sécuriser votre chaîne d'information dans Azure
Sécuriser votre chaîne d'information dans AzureSécuriser votre chaîne d'information dans Azure
Sécuriser votre chaîne d'information dans Azure
 
OWASP Québec - Attaques et techniques de défense des sessions Web - par Louis...
OWASP Québec - Attaques et techniques de défense des sessions Web - par Louis...OWASP Québec - Attaques et techniques de défense des sessions Web - par Louis...
OWASP Québec - Attaques et techniques de défense des sessions Web - par Louis...
 
070219 Webinar Sensibilisation Sécurité Logiciel Everteam
070219 Webinar Sensibilisation Sécurité Logiciel Everteam070219 Webinar Sensibilisation Sécurité Logiciel Everteam
070219 Webinar Sensibilisation Sécurité Logiciel Everteam
 
La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 
Spring security
Spring securitySpring security
Spring security
 
Securite web is_ima
Securite web is_imaSecurite web is_ima
Securite web is_ima
 
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
 
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
 
Comment securiser votre annuaire Active Directory contre les attaques de malw...
Comment securiser votre annuaire Active Directory contre les attaques de malw...Comment securiser votre annuaire Active Directory contre les attaques de malw...
Comment securiser votre annuaire Active Directory contre les attaques de malw...
 
Solution standard de compensation appliquée à une architecture e business séc...
Solution standard de compensation appliquée à une architecture e business séc...Solution standard de compensation appliquée à une architecture e business séc...
Solution standard de compensation appliquée à une architecture e business séc...
 

Plus de Lhouceine OUHAMZA

Plus de Lhouceine OUHAMZA (9)

Présentation sur internet.pptx
Présentation sur internet.pptxPrésentation sur internet.pptx
Présentation sur internet.pptx
 
WEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWSWEB SERVICE SOAP, JAVA, XML, JAXWS
WEB SERVICE SOAP, JAVA, XML, JAXWS
 
Prometheus and Grafana
Prometheus and GrafanaPrometheus and Grafana
Prometheus and Grafana
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Jenkins
JenkinsJenkins
Jenkins
 
Functional programming
Functional programmingFunctional programming
Functional programming
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Extreme Programming (XP)
Extreme Programming (XP)Extreme Programming (XP)
Extreme Programming (XP)
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework Angular
 

Systemes authentification

  • 1. 1 Réalisé par: Lhouceine OUHAMZA Spring Security avec Jwt
  • 2. Au niveau d’entreprise le risque de perdre les données sensibles peut produire des catastrophes en termes économiques ou légaux, La sécurité est donc un aspect important de développement d’une application. 2
  • 3. Spring Security est un module incontournable d’une application développée en Spring. Il apporte tout le nécessaire pour sécuriser une application et il a l’avantage d’être vraiment personnalisable. 3
  • 4. Quand on parle sécurité applicative, nous avons deux notions essentielles : l’authentification et les autorisations. Spring Security essaye d’apporter une solution à ces deux problématiques. 4
  • 5. • Spring Security a pour objectif de proposer un système complet de gestion de la sécurité. • Ne dépendant pas d’un serveur d’applications particulier (Tomcat, Jboss,,,) • Permet de rendre la sécurité complètement transversale et déclarative. 5
  • 6. Pour configurer votre application vous pouvez utiliser soit la configuration historique en XML soit la Java Config. Cette dernière est plus qu’encouragée avec les dernières versions de Spring. 6
  • 7. La première étape est de créer un bean de configuration 7 un filtre de servlet (springSecurityFilterChain)
  • 8. On peut personnaliser les choses 8
  • 9. • Par défaut plusieurs fonctionnalités sont activées par défaut sécurisation de toutes le URL de l’application • Génération d’un formulaire par défaut pour s’authentifier • Service pour se loguer et se déloguer • Différentes fonctionnalités pour prévenir les attaques cross domain, • ... 9
  • 10. Notre classe de configuration donnée en exemple propose une configuration par défaut qui est la suivante. L’URL /login (via un HTTP GET) affiche le formulaire de login et l’URL /login (via une requête POST) et permet d’authentifier l’utilisateur. 10
  • 11. C’est bien beau mais j’aimerais bien proposer mon propre formulaire pour m’authentifier. Rien de plus simple: 11
  • 12. Vous pouvez être moins restrictif ou plus restrictif sur la définition des autorisations liées aux requêtes. Par exemple : 12
  • 13. Je viens de montrer comment sécuriser les requêtes HTTP mais vous pouvez également restreindre les droits sur vos méthodes. 13
  • 14. Pour activer la sécurité via les annotations vous devrez ajouter l’annotation @EnableGlobalMethodSecurity dans votre classe de configuration. 14
  • 15. 15 Spring Security traite des mécanismes d'autorisation à base des cookies de session, ce type de fonctionnement ne permet pas de partager facilement un même compte pour s’authentifier sur plusieurs plateformes distinctes et le serveur a l’obligation de stocker l’état et les informations des sessions dans sa mémoire vive.
  • 16. 16
  • 17. 17
  • 18. 18
  • 19. 19
  • 20. • Cross Site Request Forgery CSRF: Transmettre à un utilisateur authentifié une requête HTTP falsifié qui pointe sur une action sans l’avoir conscience. CSRF Synchronizer Token • Cross Site Scripting XSS: Injecter du contenu dans la page qui provoquant des actions sur les navigateurs des visiteurs.( exécuter les commandes Systems , redirection vers un autre site Hameçonnage, afficher fenêtre authentification résultat sera envoyé au attaquant ) HTTPonly et secure 20
  • 21. 21
  • 22. 22 Les « JSON Web Token » ou JWT sont des jetons générés par un serveur lors de l’authentification d’un utilisateur sur une application Web, et qui sont ensuite transmis au client. Ils seront renvoyés avec chaque requête HTTP au serveur, ce qui lui permettra d’identifier l’utilisateur.
  • 23. 23
  • 24. 24
  • 25. • Contient les informations d’utilisateur (claims - revendications) 25
  • 26. 26
  • 27. 27
  • 28. 28
  • 29. • Dans les cookies (recommandé) 1. Les cookies sont utilisées avec HttpOnly ne sont accessible via JavaScript et sont sécurisés contre XSS, 2. Les cookies sont vulnérables à une attaque CSRF 3. Un cookie ne peut être envoyé qu’au domaine dans lequel il est autorise, 4. Le stockage fournit au moins 4 Mo • Dans local / session Storage du navigateur 1. Les donnes sont disponibles jusqu'à ce qu’elles soient explicitement supprimées (LocalStorage) 2. Une fois l’utilisateur ferme la page les données stockées sont supprimées (SessionStorage) 3. Accessible via JavaScript, cela signifie que JavaScript en cours d’exécution aura accès au stockage XSS 4. Le stockage fournit au moins 1 Ko 29
  • 30. 30
  • 31. 31
  • 32. 32
  • 33. 33
  • 34. 34
  • 35. 35 Les schémas d'authentification basés sur des jetons sont devenus extrêmement populaires ces derniers temps, car ils offrent des avantages importants par rapport aux sessions / cookies: Pas besoin de protection CSRF Meilleure intégration avec le mobile Charge réduite sur le serveur d'autorisation Pas besoin de magasin de session distribué Plus vulnérable aux attaques XSS Le jeton d'accès peut contenir des revendications d'autorisation obsolètes (par exemple, lorsque certains privilèges d'utilisateur sont révoqués)
  • 36. 36 Les jetons JWT sont de plus en plus présents sur les applications principalement Frontend et là où il est nécessaire d’utiliser un même compte utilisateur sur plusieurs plateformes. Du point de vue de la sécurité, les jetons JWT sont relativement bien conçus mais présentent quelques petits inconvénients qu’il faut bien comprendre et appréhender avant de les implémenter dans une application. De plus, il ne faut pas perdre de vue que la sécurité entière du système d’authentification de l’application repose sur l’algorithme utilisé ainsi que sur la clé privée qui servent à la signature des jetons. Il faut donc s’assurer de choisir un algorithme solide et une clé très forte ainsi que garder cette dernière secrète.
  • 37. 37

Notes de l'éditeur

  1.  Cet exposé parle de framework Spring : spring security avec jwt
  2. Une ressource représente une entité protégée. Il peut s’agir d’un fichier, d’une URL ou d’un objet.
  3. Quand on parle sécurité applicative, nous avons deux notions essentielles :  l’authentification (savoir qui je suis) et les autorisations (savoir ce que j’ai le droit de faire). Spring Security essaye d’apporter une solution à ces deux problématiques. 
  4. Spring Security permet de rendre la sécurité complètement transversale et déclarative. Une application peut pratiquement être développée entièrement sans se soucier de la sécurité, la configuration de celle-ci se faisant généralement dans un fichier dédié.
  5. Lors du chargement de ce bean, un filtre de servlet (springSecurityFilterChain) est créé. C’est ce dernier qui orchestrera toute la sécurité (protection des URL, la validation login, mot de passe, ...) au sein de votre application. 
  6. Lors du chargement de ce bean, un filtre de servlet (springSecurityFilterChain) est créé. C’est ce dernier qui orchestrera toute la sécurité (protection des URL, la validation login, mot de passe, ...) au sein de votre application. 
  7. Lors du chargement de ce bean, un filtre de servlet (springSecurityFilterChain) est créé. C’est ce dernier qui orchestrera toute la sécurité (protection des URL, la validation login, mot de passe, ...) au sein de votre application. 
  8. Lors du chargement de ce bean, un filtre de servlet (springSecurityFilterChain) est créé. C’est ce dernier qui orchestrera toute la sécurité (protection des URL, la validation login, mot de passe, ...) au sein de votre application. 
  9. Lors du chargement de ce bean, un filtre de servlet (springSecurityFilterChain) est créé. C’est ce dernier qui orchestrera toute la sécurité (protection des URL, la validation login, mot de passe, ...) au sein de votre application. 
  10. Lors du chargement de ce bean, un filtre de servlet (springSecurityFilterChain) est créé. C’est ce dernier qui orchestrera toute la sécurité (protection des URL, la validation login, mot de passe, ...) au sein de votre application. 
  11. Lors du chargement de ce bean, un filtre de servlet (springSecurityFilterChain) est créé. C’est ce dernier qui orchestrera toute la sécurité (protection des URL, la validation login, mot de passe, ...) au sein de votre application. 
  12. Les jetons JWT quant à eux sont “stateless”, cela signifie que les informations des sessions ouvertes ne sont pas stockées côté serveur. Outre le gain de mémoire que cela procure, les jetons JWT peuvent être utiles si vous souhaitez utiliser les mêmes comptes utilisateurs pour plusieurs applications. Il suffira que les applications utilisent la même clé privée pour signer et vérifier les jetons JWT.
  13. Pour ce faire, les informations contenues dans le jeton sont signées à l’aide d’une clé privée détenue par le serveur. Quand il recevra à nouveau le jeton, le serveur n’aura qu’à comparer la signature envoyée par le client et celle qu’il aura générée avec sa propre clé privée et à comparer les résultats. Si les signatures sont identiques, le jeton est valide.
  14. Si un compte utilisateur doit être bloqué, il faudra attendre que le jeton expire pour que le blocage soit effectif Si un utilisateur veut changer son mot de passe (par exemple en cas de piratage de son compte) et si l’authentification a été effectuée juste avant, le jeton généré grâce à l’ancien mot de passe sera toujours valide jusqu’à expiration Pas de refresh de jeton possible dans l’implémentation standard, ce qui veux dire que lorsque le jeton expire, l’utilisateur doit s’authentifier à nouveau Il n’est pas possible de détruire un jeton tout en respectant la notion de “stateless” des jetons JWT, car même si on supprime un jeton du navigateur, celui-ci est toujours valide jusqu’à expiration, donc pas de réelle déconnexion possible