Cours 5 : Les applets java



Documents pareils
Le Modèle de Sécurité dans JAVA

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet

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

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

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

Java pour le Web. Cours Java - F. Michel

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Application Web et J2EE

Module BD et sites WEB

RMI le langage Java XII-1 JMF

contact@nqicorp.com - Web :

Les services usuels de l Internet

Création de formulaires interactifs

TP1. Outils Java Eléments de correction

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat windowsx64.zip.

TP JAVASCRIPT OMI4 TP5 SRC

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Introduction à Expression Web 2

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Programmation Web. Introduction

La base de données XML exist. A. Belaïd

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Déployer les Fonts, Icones, et Images avec Forms Services 11G

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Logiciel de gestion de caisse et d ardoises

Logiciel Enterprise Guide Version 1.3 Windows

Architectures web/bases de données

Programmation Internet Cours 4

Chapitre 1 Windows Server

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Java 7 Les fondamentaux du langage Java

Mac OS X Server Administration des technologies Web. Pour la version 10.3 ou ultérieure

Interfaces graphiques avec l API Swing

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

Compte Rendu d intégration d application

Chapitre 2. Classes et objets

Serveurs de noms Protocoles HTTP et FTP

EJBCA PKI Open Source

Application web de gestion de comptes en banques

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.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

TP1 : Initiation à Java et Eclipse

10. Base de données et Web. OlivierCuré

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Web Tier : déploiement de servlets

Les architectures 3-tiers Partie I : les applications WEB

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Architectures en couches pour applications web Rappel : Architecture en couches

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Initiation à JAVA et à la programmation objet.

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Corrigé de l'atelier pratique du module 8 : Implémentation de la réplication

Remote Method Invocation (RMI)

Développement des Systèmes d Information

Programmation en Java IUT GEII (MC-II1) 1

contact@nqicorp.com - Web :

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

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

Utilisation de Jakarta Tomcat

.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

Titre: Version: Dernière modification: Auteurs: Statut: Remplace: Licence:

Fichiers d'archives java - *.jar

Introduction au langage Java

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

BOUCHARD Nicolas. GENTILE Pierre

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

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

GUIDE UTILISATEUR PLESK. 1 Référence : IFR_MAK GPW_V02_Plexus_SharedHosting SOMMAIRE. Internet Fr SA. Immeuble Odyssée 2-12, chemin des Femmes

Petite définition : Présentation :

Mise en œuvre des serveurs d application

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

RAPPORT D'OPTIMISATION DU SITE INTERNET

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Internet Information Services (versions 7 et 7.5) Installation, configuration et maintenance du serveur Web de Microsoft

INITIATION AU LANGAGE JAVA

18 TCP Les protocoles de domaines d applications

Accéder à PostgreSQL par JDBC via un tunnel SSL Java

Hébergement de sites Web

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

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

Les outils de création de sites web

Sécurisation des accès au CRM avec un certificat client générique

Le serveur web Windows Home Server 2011

Protection des protocoles

Groupe Eyrolles, 2004 ISBN :

Utiliser le portail d accès distant Pour les personnels de l université LYON1

Manuel d'installation

Stockage du fichier dans une table mysql:

Transcription:

Cours 5 : Les applets java Applet : programme java inclus dans une page HTML Applet : technologie internet côté «client» F. Gayral 1

Architecture du web web : architecture client/serveur (requête/réponse) Le client, en général un navigateur, envoie à un serveur une requête d accès à une ressource : programme CGI, fichier (HTML, image, ) Le serveur traite la requête et renvoie une réponse au client Requête et réponse sont des chaînes de caractères F. Gayral 2

Rappel : les standards du Web langage d écriture des documents : HTML (HyperText Markup Language) adresses des documents sur Internet : URL (Unified Resource Locator) protocole de communication entre client et serveur : HTTP (HyperText Transport Protocol) typage des documents du Web : MIME (Multipurpose Internet Mail Extensions) exemples : image/gif, text/html F. Gayral 3

HTML : un langage permettant de décrire des documents circulant sur le Web Un exemple : fichier index.html <HTML> <HEAD> <TITLE> Exemple pour le cours </TITLE> </HEAD> <BODY> C'est ici qu'on écrit le texte de la page en faisant attention aux accents!!! <H1> Bonjour! </H1> <IMG SRC= tomcat.gif"> </BODY> </HTML> F. Gayral 4

Communication client/serveur quand la ressource est un fichier html Le fichier index.html contient la ressource tomcat.gif Les deux fichiers (html et gif) sont présents sur le serveur (ex : www.lipn-univ-paris13.fr) Le navigateur envoie la première requête http: //www.lipn-univ-paris13.fr/index.html Pour chaque ressource identifiée dans le code HTML, le navigateur envoie une nouvelle requête au serveur ici, une requête pour le fichier tomcat.gif F. Gayral 5

Communication entre le navigateur et le serveur F. Gayral 6

Page statiques/pages dynamiques Fichier HTML «pur» : page statique au contenu toujours identique Si on veut des pages au contenu dynamique qui dépendent, par exemple, de résultats de programmes lancés sur le serveur comme l interrogation d une base de données, il existe d'autres techniques : Embarquer du code dans le fichier HTML (balises encadrée de % ) Pages ASP (Active Server Page) : technologie microsoft Pages JSP (Java Server Page) : technologie sun Requête à une servlet (programme java côté serveur) Requête à un script sur le serveur : programme php, perl, Voir le cours Web-BD F. Gayral 7

Et les applets? Il existe une balise HTML permettant d'intégrer une applet dans une page HTML <APPLET CODE= PremierApplet.class WIDTH=200 HEIGHT=100> </ APPLET > PremierApplet.class est une ressource (programme java déjà compilé) qui se trouve sur le serveur PremierApplet.class correspond à la compilation d un fichier définissant une sous-classe de la classe javax.swing.japplet F. Gayral 8

Applet : technologie internet côté «client» Applet : code java (.class) stocké sur un serveur web (comme des images ou des fichiers HTML) téléchargé de ce serveur sur le poste client quand le client (un navigateur) demande la page HTML contenant la balise APPLET référant au code inscrit dans l attribut CODE exécuté ensuite sur le client de façon autonome par la machine virtuelle java incluse dans le navigateur F. Gayral 9

1. Requête du navigateur 1.a Requête de la page exemple.html faisant référence à l applet PremierApplet.class stockée sur le serveur 1.b Requête de la ressource PremierApplet.cla ss Poste client Navigateur Affichage de l applet Schéma client/serveur 2. Réponses du serveur Serveur contenant des ressources (fichiers html, applet, image, 2.a. Transfert du fichier exemple.html 2.b Transfert du fichier PremierApplet.class 3. Exécution en local du fichier.class par l interpréteur java et insertion de l affichage de l applet dans la fenêtre du document html F. Gayral 10

Comment ça se passe? Le navigateur, quand il rencontre la balise APPLET, vérifie qu il n a pas ce code déjà dans le répertoire cache de sa machine Si ce n est pas le cas, il envoie une nouvelle requête au serveur lui demandant le code indiqué de cette applet En réponse, le serveur retourne au client le programme java inscrit dans le paramètre code Le code de l applet est donc téléchargé du serveur dans le répertoire cache de l'ordinateur client Puis exécuté par le chargeur d applet sur la machine client F. Gayral 11

Pour spécifier le répertoire de l applet Par défaut, le code de l applet est cherché dans le répertoire contenant le fichier HTML S'il est ailleurs, on donne le répertoire dans lequel il est situé grâce à l attribut CODEBASE <APPLET CODE= PremierApplet.class CODEBASE=Exemples/ </ APPLET > WIDTH=200 HEIGHT=100> Si c est une adresse relative : recherche à partir du répertoire contenant le fichier HTML Si c est une adresse absolue, on peut télécharger l applet de n importe où, voire même d un autre serveur web que celui qui contient la page HTML (CODEBASE=http://someServer/ ) F. Gayral 12

Pour utiliser un fichier archive (.jar) Si l applet a besoin de différentes ressources (fichiers images, sons) pour fonctionner et que ces ressources sont présentes dans un fichier jar (tictactoe.jar) Exemple Code de l applet Répertoire avec fichiers sons Répertoire avec fichiers images F. Gayral 13

Utiliser l attribut ARCHIVE de la balise APPLET <APPLET CODE= TicTacToe.class ARCHIVE="TicTacToe.jar" WIDTH=460 HEIGHT=160> </APPLET > le paramètre CODE est nécessaire pour indiquer où l'exécution commence (où est le code de l applet) le paramètre ARCHIVE peut comporter plusieurs fichiers jar <APPLET CODE=Animator.class ARCHIVE="classes.jar, images.jar, sounds.jar" WIDTH=460 HEIGHT=160> F. Gayral 14

Fonctionnement de cette balise Quand le fichier archive est identifié, il est téléchargé en une seule transaction HTTP pour toutes les pièces du fichier jar Pendant l'exécution de l'applet, chaque fois qu'un fichier est requis (.class ou fichier son ou fichier image) : Le navigateur commence à le chercher dans les fichiers ARCHIVE qui ont été téléchargés S'il n'y est pas, sur le serveur Web servant l'applet dans le répertoire indiqué par CODEBASE F. Gayral 15

Autres attributs facultatifs de la balise APPLET ALIGN=. justification de l applet dans la page HSPACE = marge horizontale, en pixel, insérée à gauche et à droite de l applet, entre l'espace de l'applet et le texte adjoint VSPACE= marge verticale, en pixel, insérée au dessus et en dessous de l applet Valeurs pour l'attribut ALIGN : top, middle, bottom, right, left F. Gayral 16

Intérêt des applets : technologie «client léger» Apporte de l'interaction et de l'animation dans les pages html en ajoutant aux pages web du code java téléchargé tout se télécharge : pas de configuration locale plus de déploiement d'applications : évite d installer, maintenir, mettre à jour l'application sur tous les postes clients mais seulement sur le serveur Pourquoi? Car Java est indépendant des plate-formes ; une applet peut donc s exécuter sur tout poste client possèdant la machine virtuelle Java Utilisation de l'intranet Exécution sur le poste client donc moins d encombrement du serveur Mais, Attention : Problèmes de sécurité (voir à la fin) F. Gayral 17

Programmation d une applet Une applet ne peut donc être exécutée que si elle est intégrée dans une page HTML et elle s'exécute sous le contrôle d'un navigateur Une applet java fait toujours intervenir au moins deux fichiers un fichier java compilé : prog.class un fichier HTML (prog.html) qui contient la balise APPLET avec la référence au code prog.class Pour la mise au point d'une applet, on peut utiliser l outil appletviewer F. Gayral 18

La classe JApplet : un top-level container Une applet est une instance de la classe javax.swing.japplet Component Gestion événementielle Container Panel Applet (vieille classe awt) JApplet Pour ajouter des composants, les ajouter à son aire de travail Mais n hérite pas de JComponent donc impossible de redéfinir paintcomponent. Si besoin d affichage graphique : Sous-classer JPanel (comme on faisait pour une JFrame) et y redéfinir paintcomponent par défaut, possède un gestionnaire de mise en page de type FlowLayout F. Gayral 19

Méthodes importantes liées au cycle de vie Méthodes (public) Appelée quand? void init() Initialisation :quand l'applet est chargée Ne se produit qu une fois dans la vie de l applet void start() void stop() void destroy() Démarrage : lors du lancement ou de la reprise de l applet Arrêt : quand on quitte la page contenant l applet Destruction : quand on quitte le navigateur Ne se produit qu une fois dans la vie de l applet void paint(graphics g) Affichage F. Gayral 20

Cycle de vie géré par le navigateur 1 init start paint stop destroy 2 1: quand l'utilisateur quitte la page html qui contient la balise de l'applet 2: quand l'utilisateur, revient sur la page html qui contient la balise de l'applet F. Gayral 21

Autres méthodes de JApplet URL getcodebase() retourne l URL du répertoire à partir duquel l applet est chargée URL getdocumentbase() retourne l URL (en absolu) du répertoire où se trouve le document HTML qui contient l applet Exemple, si l applet est dans le document http://java.sun.com/products/jdk/1.2/index.html l URL retournée est : http://java.sun.com/products/jdk/1.2/ Ces 2 méthodes retournent la même URL (même serveur, même répertoire) s'il n y a pas d attribut CODEBASE F. Gayral 22

Autres méthodes de JApplet Image getimage(url url) retourne une instance d image correspondant au fichier image placé dans l URL (absolue) url Exemple : si l applet est dans le document http://java.sun.com/products/jdk/1.2/index.html si le fichier image, Terre.gif, est dans le répertoire http://java.sun.com/products/jdk/1.2/images Pour récupérer l'image correspondant (si on est dans une méthode de l'applet correspondant) String nomfic=this.getcodebase()+"images/terre.gif "; Image img= this.getimage(nomfic); F. Gayral 23

Exemple Premier fichier : définit l'applet public class AppletBonjour extends JApplet { public void init() { JLabel label = new JLabel("Bonjour",JLabel.CENTER); } label.setborder(borderfactory.creatematteborder(1,1, 2,2,Color.black)); Container c=this.getcontentpane(); c.add(label, "Center"); } F. Gayral 24

Deuxième fichier : définit la page html qui intégrera l'applet <HTML>.. <APPLET </ APPLET >... </HTML> Fichier PremierApplet.html CODE= AppletBonjour.class WIDTH=200 HEIGHT=100> pour tester l applet, taper la commande : appletviewer PremierApplet.html F. Gayral 25

Fonctionnement Une fois que le code de l applet a été téléchargée et est en mémoire sur le poste client, comment s exécute l applet? le navigateur crée une instance de la classe AppletBonjour en appelant le constructeur sans argument de la classe puis adresse à cet objet les méthodes init(), start() et paint() puis le cycle de vie continue en suivant les actions de l utilisateur jusqu'à l'exécution de destroy lors de l'arrêt de la machine virtuelle Grande différence avec une application locale autonome : On n écrit pas de méthode main. C est le navigateur qui gère le cycle de vie de l applet F. Gayral 26

Autres attributs de la balise APPLET : PARAM pour passer des informations à une applet Pour définir des paramètres : attribut PARAM <APPLET CODE= "AppletAvecParam.class" WIDTH=200 HEIGHT=100> <PARAM NAME=nom VALUE= " Joseph Cerrato"> </ APPLET > Pour récupérer des paramètres : appeler dans la méthode init de l'applet la méthode de JApplet: String getparameter(string name) F. Gayral 27

Code de l applet public class AppletBonjourParam extends JApplet { public void init() { String nompers= this.getparameter("nom"); if (nompers==null) label = new JLabel("Bonjour", JLabel.CENTER); else label = new JLabel("Bonjour "+nompers, JLabel.CENTER); Container c=this.getcontentpane(); c.add(label, BorderLayout.CENTER); } } // fin de l'applet F. Gayral 28

Sécurité : problème crucial dans la programmation web Téléchargement de l applet du serveur vers le client doit être sûr : le poste client doit être protégé contre l'exécution d'une applet qui violerait l'intégrité de son environnement exemples d actions dangereuses : ouvrir une connexion réseau quelconque accéder aux fichiers locaux du client Plus de détails dans la doc : Java/docs/tooldocs/windows/policytool.html http://java.sun.com/docs/books/tutorial/security1.2/index.html F. Gayral 29

Évolution du système de sécurité Modèle de sécurité du JDK 1.0 : applet fonctionne dans un environnement très restreint, appelé bac à sable (sand box) Interdiction d'ouvrir une connexion réseau sauf vers le serveur d où l applet provient Interdiction d'accéder aux fichiers locaux du client Modèle de sécurité du JDK 1.1 : concept d applet signée La signature est une clé numérique fonctionnant comme une marque de confiance Modèle de sécurité du JDK 1.2 : paramétrable ; le code (local ou téléchargé) peut être muni de permissions selon les besoins et l'origine certifiée de l'applet F. Gayral 30

Signature d'un message : principe La signature d'un message consiste à envoyer 2 informations : le message en clair le même message signé avec la clé privée de l'auteur du message. Ensuite le destinataire : décrypte le message signé à l'aide de la clé publique de l'émetteur vérifie si le résultat correspond au message en clair. Chaque auteur doit avoir une signature composée d'une clé publique et d'une clé privée F. Gayral 31

Signature d'une applet : technique étape 1 : se créer une signature Pour se créer une signature, utiliser l'outil keytool : keytool -genkey -alias gayral -keypass kpi135 -keystore gayralstore -storepass ab987c Paramètres : - genkey : paramètre indiquant que l on souhaite générer un certificat - alias : alias identifiant l'auteur(identifiant la paire de clés dans la base de clés qu'il examine) - keypass : mot de passe limitant l'accès à la paire de clés qui va être générée - keystore : nom de la base de clés - storepass : mot de passe protégeant la base de clés Crée une base de clés appelé gayralstore et génère une nouvelle entrée composée de la paire clé publique/clé privée de l'auteur ainsi qu'un certificat auto-signé (signé par vous-même) et l'insère dans la base de clés sous l'alias spécifié Le mot de passe kpi135 pdevra toujours être utilisé pour accéder à l'entrée contenant cette clé. F. Gayral 32

Signature d'une applet : technique étape 2 : signer l'applet avec cette signature Signer une applet, c'es signer le fichier jar contenant cette applet Créer le fichier jar : jar cvf applet.jar AppletBonjour.class Signer le fichier jar avec l'outil jarsigner fourni dans le jdk va utiliser le certificat créé précédemment jarsigner -keystore gayralstore -storepass ab987c applet.jar gayral F. Gayral 33

Que fait jarsigner? Ajoute 2 fichiers dans le répertoire META-INF de l'archive un fichier de signature de type alias.sf contenant les signatures pour chaque fichier contenu dans le JAR (chaque entrée du fichier manifest). un fichier bloc de signature de type alias.dsa ou alias.rsa contenant une signature pour le fichier alias.sf ainsi que le certificat (et la clé publique donc) du signataire. Un fichier JAR peut être signé par plusieurs entités (en lançant jarsigner plusieurs fois sur ce fichier), afin de permettre différents profils d'autorisations pour la même applet ; F. Gayral 34

JDK 1.2 : le gestionnaire de sécurité L environnement java utilise un gestionnaire de sécurité pour vérifier les accès aux ressources Un gestionnaire de sécurité est systématiquement chargé par les navigateurs : les applets tournent donc toujours sous son contrôle Une applet n'aura pas l'accès aux ressources tant qu'on ne lui aura pas explicitement donné les permissions les permissions seront données dans par une entrée dans un "fichier de police" (policy file) Chaque fois que l applet effectue une action susceptible de faillir à la sécurité, l environnement demande au gestionnaire de sécurité de vérifier les permissions. F. Gayral 35

Utilisation d'un Policy file C'est un fichier texte particulier qu'on crée soit "à la main", soit en utilisant un outil graphique appelée par la commande : policytool Il existe un policy file par défaut nommé.java.policy dans le "home directory" Exemple de fichier : grant codebase "http://www.games.com", signedby "Duke", { permission java.io.filepermission "/tmp/games", "read, write"; }; Cela permet au code téléchargé de "www.games.com", signé par "Duke", de lire et d'écrire dans le répertoire "/tmp/games F. Gayral 36

Poubelle F. Gayral 37

Sécurité : problème crucial dans la programmation web 3 aspects importants : Authentification : être capable de vérifier l identité des parties impliquées Confidentialité : garantir que seules les parties impliquées comprennent la communication Intégrité : vérifier que le contenu de la communication n a pas changé pendant la transmission F. Gayral 38

modèle de sécurité du JDK 1.0 Environnement très restreint : bac à sable (sand box) Toucher au disque de la machine client Lancer un programme du poste client Ouvrir des connexions réseaux vers d autres serveurs que celui qui a fourni le code de l applet Lire certaines propriétés du système client : user name user home,classpath,... F. Gayral 39

Modèle de sécurité du JDK 1.1 Notion de signature (ou certification) - Concept d applet signée La signature est une clé numérique fonctionnant comme une marque de confiance Si signature de l'applet est jugée de confiance (marquée dans le navigateur client) traitée comme une appli locale Sinon restreinte au bac à sable F. Gayral 40

Modèle de sécurité du JDK 1.2 paramétrable Le code, local ou téléchargé, peut être muni de permissions selon les besoins et l'origine certifiée de l'applet Définition de domaines ensembles de classes dont les instances ont le même ensemble de permissions F. Gayral 41