La sécurité des applications Java / JavaEE (JSJA)

 

Résumé du cours

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.

Moyens Pédagogiques :
  • Réalisation de la formation par un formateur agréé par l’éditeur
  • Formation réalisable en présentiel ou en distanciel
  • Mise à disposition de labs distants/plateforme de lab pour chacun des participants (si applicable à la formation)
  • Distribution de supports de cours officiels en langue anglaise pour chacun des participants
    • Il est nécessaire d'avoir une connaissance de l'anglais technique écrit pour la compréhension des supports de cours
  • Accessibilité aux Personnes en Situation de Handicap – nous contacter
Moyens d'évaluation :
  • Évaluations formatives pendant la formation, à travers les travaux pratiques réalisés sur les labs à l’issue de chaque module
  • Évaluation sous forme de questionnaire à l’issue de la formation

A qui s'adresse cette formation

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

Pré-requis

Il est demandé aux participants de connaître les notions de base du langage Java.

Objectifs

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.

Contenu

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

Atelier

  • Modification 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

Atelier

  • Exemples 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

Atelier

  • Mise 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

Atelier

  • Implé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

Atelier

  • Vé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.

Atelier

  • Sé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.

Atelier

  • Mise 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.

Atelier

  • Mise en pratique avec une implémentation Apache CXF de JAX-RS.

Prix & Delivery methods

Formation en salle équipée

Durée
3 jours

Prix (Hors Taxe)
  • France : 1 690,– €

Actuellement aucune session planifiée