Plan. Outils et tests. Architecture des Applications Réticulaires. Outils. Maven. Revision : 53. Maven Spring. Christian Queinnec



Documents pareils
Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Compte Rendu d intégration d application

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

CQP Développeur Nouvelles Technologies (DNT)

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Expert technique J2EE

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Vulnérabilités et sécurisation des applications Web

Formation en Logiciels Libres. Fiche d inscription

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

les techniques d'extraction, les formulaires et intégration dans un site WEB

Cours en ligne Développement Java pour le web

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Hébergement de sites Web

Présentation de la solution Open Source «Vulture» Version 2.0

Introduction à la plateforme J2EE

INGÉNIEUR LOGICIEL JAVAEE / GROOVY 8 ANS D EXPÉRIENCE

CAS, un SSO web open source. 14h35-15h25 - La Seine A

CAS, la théorie. R. Ferrere, S. Layrisse

Construction et déploiement d applications Java avec Maven, Archiva, Groovy et Jenkins

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Module BD et sites WEB

Architectures web/bases de données

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

Sécurité des applications web. Daniel Boteanu

Création d une application JEE

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Hassene BELGACEM. Expériences Professionnelles. JEE architect / Technical leader. Ingénieur Informatique. Cycle Préparatoire

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Cyrille GUERIN 823, place Soulanges Brossard, J4X1L8

Mise en œuvre des serveurs d application

Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal

4. SERVICES WEB REST 46

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Single Sign-On open source avec CAS (Central Authentication Service)

Java pour le Web. Cours Java - F. Michel

Ce document décrit une solution de single sign-on (SSO) sécurisée permettant d accéder à Microsoft Exchange avec des tablettes ou smartphones.

DenyAll Protect. Sécurité & accélération. Parefeux pour applications et services Web. de vos applications.

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4)

Auto-évaluation Aperçu de l architecture Java EE

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Attaques applicatives

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Vulnérabilités et solutions de sécurisation des applications Web

Groupe Eyrolles, 2004 ISBN :

SQL MAP. Etude d un logiciel SQL Injection

Refonte front-office / back-office - Architecture & Conception -

OWASP Open Web Application Security Project. Jean-Marc Robert Génie logiciel et des TI

Environnements de développement (intégrés)

Hudson Serveur d Intégration Continue. Adrien Lecharpentier IR3 Ingénieurs2000, Université de Marne la Vallée

Développement des Systèmes d Information

Définition des Webservices Ordre de paiement par . Version 1.0

Petite définition : Présentation :

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

JOSY. Paris - 4 février 2010

Problématiques des développements Java/J2EE

Point sur les solutions de développement d apps pour les périphériques mobiles

Single Sign On. Nicolas Dewaele. Single Sign On. Page 1. et Web SSO

Programmation Web. Madalina Croitoru IUT Montpellier

DÉVELOPPER DES APPLICATIONS WEB SÉCURISÉES

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Environnements de Développement

La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet

Plateforme PAYZEN. Définition de Web-services

JOnAS Day 5.1. Outils de développements

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Présentation de SOFI 2.0

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

SITE WEB E-COMMERCE ET VENTE A DISTANCE

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

LEA.C5. Développement de sites Web transactionnels

WebSSO, synchronisation et contrôle des accès via LDAP

CIBLE DE SECURITE CSPN DU PRODUIT PASS. (Product for Advanced SSO)

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

TrustedBird, un client de messagerie de confiance

APIs de table pour SQL Server

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

Revue de code Sécuritéou Test d Intrusion Applicatif. Quel est le plus efficace pour évaluer un niveau de sécurité applicatif?

OWASP Code Review Guide Revue de code. Paris The OWASP Foundation. Victor Vuillard

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Application des Spécifications détaillées pour la Retraite, architecture portail à portail

L3 informatique TP n o 2 : Les applications réseau

Authentification et contrôle d'accès dans les applications web

7 villa de la citadelle Né le 13 mai Arcueil Nationalité : Française. Développeur Web JEE COMPÉTENCES

LICENCE PROFESSIONNELLE

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Application Web et J2EE

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Transcription:

UPMC NI584-2008fev c C.Queinnec 3/25 UPMC NI584-2008fev c C.Queinnec 4/25 Plan Architecture des Applications Réticulaires Revision : 53 Christian Queinnec Université Paris 6 1 Maven Spring 2 Tests et tests Troisième vague 2007-2008 3 4 Conclusions UPMC NI584-2008fev c C.Queinnec 2/25 Maven Bien plus qu Ant (un make utilisant XML)! La tendance du moment : Convention over configuration. Maven Spring Normalisation du cycle de développement Normalisation de l organisation et de la dénomination des fichiers Dépôt de bibliothèques jar et leurs différentes versions pour satisfaire les dépendances Unique fichier de configuration pom.xml pour un unique but (un artefact) et un outil pour les joindre tous!

UPMC NI584-2008fev c C.Queinnec 7/25 UPMC NI584-2008fev c C.Queinnec 8/25 Maven : pom Maven : organisation des fichiers < project > < modelversion >4.0.0 </ modelversion > < groupid >fr. upmc. aar </ groupid > < artifactid >Appl </ artifactid > < packaging >jar </ package > < version >1.0 - SNAPSHOT </ version > < dependencies... /> < developpers... /> < plugins... artefact a creer jdk a utiliser artefact a creer systeme d archivage (svn, mercurial,...)... /> </ project >./ pom. xml src / main / java / src / main / resources / src / main / webapp / src / test / java / src / test / resources / target / classes / target /test - classes / UPMC NI584-2008fev c C.Queinnec 5/25 Maven : organisation du dépôt UPMC NI584-2008fev c C.Queinnec 6/25 Maven : cycle de développement groupid / artifactid / version / artifactid - version artifactid - version. sha1 artifactid - version. pom artifactid - version. pom. sha1 junit / junit /3.8.1/ junit -3.8.1. jar org / apache / maven / maven /2.0/ maven -2.0. pom Dépôt central : http ://www.ibiblio.org/maven2/, possibilité de dépôt d entreprise, de projet, etc. 21 phases : validate initialize generate-sources process-sources generate-resources process-resources compile process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources test-compile test package preintegration-test integration-test post-integration-test verify install deploy

UPMC NI584-2008fev c C.Queinnec 11/25 UPMC NI584-2008fev c C.Queinnec 12/25 Maven : greffons en tout genre Spring Archétypes (génération de squelettes) génération de site Web reflétant la santé du projet (rapports JDepend, PMD, etc.) Conteneur léger en remplacement des serveurs d application Usage d AOP (Aspect Oriented Programming) Intégration de logiciels tiers UPMC NI584-2008fev c C.Queinnec 9/25 Architecture de Spring UPMC NI584-2008fev c C.Queinnec 10/25 Injection de dépendances conteneur léger + moteur d AOP autres domaines : DAO Couplage objet-source de données ORM Couplage relationnel-objet JDBC Facilitation de connexion JDBC Context Interprète de configuration Web Cadre d intégration des logiciels Web MVC Le MVC de Spring Remoting masquage de RMI, Web services Scheduling ordonnancement de tâches et plein d autres projets reliés... Diminuer les couplages, séparer les préoccupations, faciliter les tests unitaires Injection par constructeur ou modificateur public class C { public class C { public X x; public IX x; public C () { public C() {} this.x = new X (...); public C(IX x) { } this.x = x; } } public setix (IX x) { this.x = x; } } // Dans configuration : // x = new X (); // c = new C(x); // ou // c. setix (x);

UPMC NI584-2008fev c C.Queinnec 15/25 UPMC NI584-2008fev c C.Queinnec 16/25 Conteneur léger Programmation par aspects Le conteneur léger joue le rôle d un annuaire de Beans, il est obtenable de partout et est paramétré par un fichier applicationcontext.xml. Il est instrumentable ainsi qu un support de transmission d événements. <beans... > <!-- c == > new C() --> <bean id= c class = C name = autres, noms singleton = true lazy - init = true autowire = byname dependency - check = all > <constructor - arg type = int ><value > possible </ value > </ constructor -arg > <!-- c. setix (x) --> < property name = IX ref = x /> < property name = truc > < value >... toute sorte de valeur y compris liste, table associative, etc. </ value > </ property > </ bean > <!-- et encore plein de beans... -- > </ beans > UPMC NI584-2008fev c C.Queinnec 13/25 Exemples de programmation par aspects Dans la droite lignée des systèmes de macro de Lisp : manipulation d arbres de syntaxe (en jargon : tissage) Un aspect est une description d un traitement à opérer sur des sources (les sources ne dépendent ainsi pas de l aspect). Un aspect décrit les points où opérer (en jargon join point) et le traitement à effectuer (advice). les points où opérer sont réduits en Spring aux appels de méthodes et aux définitions de classes le traitement enveloppe la méthode d un traitement before, after returning, after throwing et around. le traitement peut aussi ajouter des interfaces et des méthodes (implanté par java.reflect.proxy) UPMC NI584-2008fev c C.Queinnec 14/25 Intégration d autres patrons Pour tout appel à la méthode nommée m(), tourner bean1.m2() avant (ou après ou à la place (proceed() pour retrouver ce qu il aurait fallu faire) À l instanciation de IX, instancier en fait subix étendant IX avec des interfaces ou méthodes additionnelles. On peut soit travailler au niveau des AST ou instrumenter le code-octet. Intégration de Struts, GWT, Ajax, Hibernate, JMS, etc. Ajout de classes de confort pour assurer l usage de Beans ou de POJO, la configuration des dépendances ou encore des aspects simplificateurs de code (gestion de transactions par ex.)

Tests Tests de test Tests De multiples points de tests : Selenium IDE JS GreaseMonkey Firebug LWP, HttpUnit Findbugs,JDepend,PMD Perl:Critic,Test::More Cactus junit cohérence Côté serveur : GWT a son propre mécanisme à base de Junit Cf. aussi Cactus Comme un client en Perl : LWP, WWW : :Mechanize en Java : HttpUnit, HtmlUnit, JWebUnit Selenium IDE FireBug, GreaseMonkey tests de charge tests de sécurité Cactus UPMC NI584-2008fev c C.Queinnec 17/25 Authentification HTTP UPMC NI584-2008fev c C.Queinnec 18/25 Authentification HTTPS Accès à une zone protégée : ------------> GET url <------------ 401 unauthorized WWW - Authenticate : Basic realm =" Secret UPMC " ------------> GET url Authorization : Basic base64("user :password") <------------ 200 page (en clair!) ------------> GET url / sousurl Authorization : Basic base64("user :password") <------------ 200 page (en clair!) liberté du client pour la demande de nom/mot de passe. liberté du serveur de la vérification nom/mot de passe (fichier, base n?dbm, base de données, etc.) Pas de déconnexion prévue. Autre méthode : Digest (avec défi ou nonce). UPMC NI584-2008fev c C.Queinnec 19/25 Côté serveur httpd : imposer une connexion chiffrée SSLv3, TLS imposer que le client s authentifie avec un certificat faire toute sorte de vérification sur ce certificat UPMC NI584-2008fev c C.Queinnec 20/25

UPMC NI584-2008fev c C.Queinnec 23/25 UPMC NI584-2008fev c C.Queinnec 24/25 Authentification SSO Principes sécuritaires Authentification (single sign on), CAS, OpenId 307 auth form 307+cookie CAS,OpenID checkcookie getprofileinfo D après Open Web Application Security Project : Minimiser la surface attaquable Choix sûrs par défaut Moindre privilège Défense en profondeur Rattrapage d erreur sûr Séparation des rôles Pas de sécurité par obscurité Simplicité Automatisation des tests de correction de vulnérabilité UPMC NI584-2008fev c C.Queinnec 21/25 Attaques (nombreuses) sql injection exemple (surtout en PHP) : select * from T where nom = $info avec info= or true or = ne jamais faire confiance aux informations provenant des utilisateurs filtrer (black, white lists) select * from T where nom =? langages teintés (Perl) xss (Cross Site Scripting) 1 X injecte du javascript J dans un texte stocké côté serveur S 2 A reçoit de S le texte et exécute le javascript J 3 J peut engendrer une requête vers un site S qui sera émise avec les cookies de A 4 J peut renvoyer à X les résultats obtenus UPMC NI584-2008fev c C.Queinnec 22/25 Grand schéma Conclusions Un grand tour depuis les bases jusqu aux clients en passant par les serveurs : relais (Gears) ressources statiques service (SOAP,...) Ressources (REST) dynamiques

Conclusions Conclusions Un grand tour depuis les bases jusqu aux clients en passant par les serveurs Comment choisir ses patrons de conception? Différents patrons pour différents types d application Indicateurs externes (livres, support, communauté, caractéristiques, risques, etc.) Prototyper (au moins 2 ou 3 si possible)! Lien : ComparingJVMWebFrameworks UPMC NI584-2008fev c C.Queinnec 25/25