picto Sécurité

Formation La sécurité des applications Java / JavaEE

Développement d'application Java Sécurisée

Référence

JSJA

Durée

3 JOURS

Tarif

1690 € HT

NIVEAU

Expert

Cours à distance

Partiellement

éligible CPF

OUI

Objectifs de la formation La sécurité des applications Java / JavaEE

Le langage Java contient intrinsèquement de nombreux mécanismes permettant l'élaboration de programmes sûrs. Ces mécanismes couvrent différentes facettes de la sécurité comme l'intégrité, la confidentialité, l'identification sûre ou la protection contre les malveillances.

Ce module permet de passer en revue ces différents sujets et propose à chaque fois des ateliers pédagogiques permettant de comprendre en profondeur les mécanismes d'exécution de la JVM. Le dernier chapitre se concentre sur les spécificités des applications web Java EE en détaillant SSL, le modèle de sécurité des différents tiers ainsi que les spécificités des architectures SOA.

Pré-Requis

Le langage Java contient intrinsèquement de nombreux mécanismes permettant l'élaboration de programmes sûrs. Ces mécanismes couvrent différentes facettes de la sécurité comme l'intégrité, la confidentialité, l'identification sûre ou la protection contre les malveillances.

Ce module permet de passer en revue ces différents sujets et propose à chaque fois des ateliers pédagogiques permettant de comprendre en profondeur les mécanismes d'exécution de la JVM. Le dernier chapitre se concentre sur les spécificités des applications web Java EE en détaillant SSL, le modèle de sécurité des différents tiers ainsi que les spécificités des architectures SOA.

Public

Cette formation Sécurité Java s'adresse à des Développeurs ou Chefs de projet.

Contenu du cours La sécurité des applications Java / JavaEE

Introduction aux concepts liés à la sécurité

Identification et méthodes d'authentification.
Autorisations et permissions.
Confidentialité, non-répudiation, cryptage, clés publiques/privées, autorités de certification.
Pare-feu et DMZ, rupture de protocole.
Les types d'attaques.
Le modèle de sécurité de la JVM

Chargement et vérification des classes

Un des premiers mécanismes implémentés par la JVM est de s'assurer que le code chargé en mémoire ne peut contourner les mécanismes de protection du langage.
Rôle du compilateur Java
Rôle des classloader
Les différentes zones mémoires de la JVM et leur gestion par le garbage collector
Hiérarchie des différents classloader
Vérification du byte-code
Chargement dynamique ce classe
Implémenter un class loader
AtelierModification d'un fichier .class et exécution avec l'option -noverify, Implémentation d'un classloader chargeant des classes cryptées.

Cross-site scripting et sécurité

Le principe du XSS (injection de contenu)
Liens avec les programmes Java
Déclinaisons (Stored XSS, Reflected XSS, DOM-based XSS)
Nouvelles "possibilités" avec le HTML 5

AtelierExemples d'hameçonngae et de récupération de cookies.

Gestionnaire de sécurité et permissions

Les permissions et le gestionnaire de sécurité permettent de contrôler finement les autorisations d'un programme et ses interactions avec son environnement.
Opérations contrôlables
Activation du gestionnaire de sécurité
Domaine de protection, provenance du code et permissions
Parcours de l'API
Fichier .policy
Les classes Permission
Implémentation d'une classe Permission
AtelierMise au point d'un fichier .policy, implémentation d'une classe Permission.

JAAS, Authentification et Autorisations

JAAS offre les services d'authentification et d'autorisations des utilisateurs ou systèmes externes interagissant avec l'application tout en restant du indépendant de la technologie d'authentification.
Présentation de JAAS
LoginContext / LoginModule, Configuration et empilement des login modules
LoginModule communément disponibles
Implémentation d'un login module spécifique, les CallbackHandler
Autorisations, Objet Subject et Principals, Configuration des permissions
AtelierImplémentation d'un LoginModule, Configuration des autorisations à partir de rôles utilisateurs.

Signatures numériques et chiffrement

Les techniques de cryptographie permettent de garantir la provenance d'un code et sa non altération.
Empreinte de messsage, SHA1 et MD5
Signature numérique, clé publiques et clés privées
L'outil keytool et les keystore
L'outil jarsigner
Les autorités de certification
Déploiement de code signé dans un intranet ou sur internet
Permissions basées sur des keystore
Chiffrement de données, les algorithmes AES et RSA
AtelierVérification d'une empreinte, Déploiement d'un applet dans un intranet, Chiffrement symétrique et asymétrique.

SSL et Java

Fonctions de Java Secure Socket Extension (JSSE). Comparaison avec Java GSS-API
Authentification via certificats X.509. TLS et SSL.
Encryption à base de clés publiques, Java Cryptography Extension (JCE).
Utilisation de SSL avec HTTP.
Atelier - Configurer SSL et mise en oeuvre de sockets SSL. Utiliser des outils du JDK (Keystore).
La sécurité d'une application JEE
Authentification au niveau des conteneurs Web et EJB.
Rôles applicatifs, permissions et descripteurs de déploiement XML.
Contrôles dynamiques via les API Servlets et EJB.
La sécurité dans les API : JDBC/JPA, JNDI, JTA, JMS, JCA.
AtelierSécurité d'une application déployée dans Tomcat.

La sécurité des services web SOAP

Sécurité au niveau HTTP.
Sécurité au niveau SOAP & WSDL avec WS-Security (WSS4J, XWSS...) & WS-Policy.
Les handlers SOAP WS-Security exploitant JAAS.
AtelierMise en pratique avec une implémentation de WS-Security (XWSS).

La sécurité des services web REST

Utilisation de SSL avec JAX-RS.
Les apports de oAuth (authentification sur Internet).
oAuth 1.0 et 2.0.
AtelierMise en pratique avec une implémentation Apache CXF de JAX-RS.