Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)

Dimension: px
Commencer à balayer dès la page:

Download "Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)"

Transcription

1 Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy) Abstract Un problème se pose lorsque l on veut effectuer des appels RMI à travers un firewall, car souvent il empêche l accès à certains ports pour cause de sécurité. Une technique peut être le HTTP tunneling où les appels se font sous forme de requête HTTP à l aide d une servlet. Une deuxième technique expliquée dans ce document est le RMIProxy, dans laquel on place un proxy RMI pour chaque firewall, celui-ci effectue un contrôle pour ne laisser passer que les requête RMI, il permet aussi d ajouter d autres contraintes. Ce document permettra de se faire une idée sur ces deux concepts permettant aux requêtes RMI de traverser des firewall. Master Seminar Advanced Software Engineering Topics Prof. Jacques Pasquier-Rocha University of Fribourg, Switzerland Departement of Informatics Software Engineering Group Author : Fabien Pochon fabien.pochon@unifr.ch Supervisor : Patrik Fuhrer patrik.fuhrer@unifr.ch Jun 12, 2003

2 Table des matières 1. Introduction Problématique HTTP Tunneling Comment RMI «tunnelle» des messages Naming services and «the server machine» L implémentation d un servlet pour le HTTP tunneling Le code du servlet Modifications à apporter afin d utiliser le Tunneling Désavantages du HTTP tunneling Configuration du fichier policy Exemple d appel RMI utilisant HTTP tunneling RMIProxy Où trouve-t-on RMIProxy Les objectifs Les caractéristiques Le contrôle d accès L architecture Comment RMIProxy fonctionne L API coté client L API côté serveur Proxies multiple Limitations du RMI Proxy Activation Stubs cachés Socket Factories GetClientHost RMI / IIOP Stubs distants indirectes Les modifications à apporter au client et au serveur Les différences entre RMI Proxy et HTTP tunneling Conclusion Le RMI Proxy est certainement une méthode bien meilleur que le HTTP tunneling, car elle ne comporte que des avantages sur cette dernière. Malheureusement je n ai pas testée Annexes : Configurations Installation du seveur Apache Installation de Tomcat Configuration du serveur Apache Redirection du script CGI Bibliographie

3 1. Introduction RMI (Remote Method Invocation) est un système distribué, ce qui signifie que une ou plusieurs applications peuvent s exécuter sur une ou plusieurs machines. Une caractéristique d un système distribué est le besoin de collaboration entre les différents processus qui composent le système. Ce qui donne l illusion à l utilisateur qu il utilise une application locale, alors que des invocations de méthodes se font dans un autre processus qui peut être sur une machine différente. Il y a donc un échange d informations qui s effectue entre plusieurs machines à l aide du protocole RMI. Ceci peut s effectuer sans aucun problème lorsque il n y a aucun firewall entre les deux parties communiquant via RMI. Lorsque un firewall sépare le client d un serveur il y aura certainement un problème. C est ce problème et la solution pour le contourner qui va donc être traité plus en détail dans ce document. 2. Problématique Le problème principal qui intervient lorsqu un client veut effectuer un appel RMI sur une machine distante est effectivement le firewall qui peut y avoir entre les deux. En effet les firewalls interdisent souvent l accès à certains ports spécialisés comme ceux qu on désire utiliser lors d un appel RMI. Les firewalls sont capables de filtrer des paquets selon : Leur adresse source Leur adresse de destination Le port de destination Le protocole de niveau supérieur (exemple : TCP, UDP) utilisé Cependant les firewalls sont généralement incapables de prendre des décisions en fonction des données contenues dans ces paquets. C est pourquoi les techniques de tunneling, RMI Proxy ou encore d autres peuvent être utilisées. 3

4 3. HTTP Tunneling Le principe de base du http tunneling est d utiliser comme protocole de communication des appelles http à travers le Web pour des application qui ne se font pas par le Web. Le requête originale émise n est pas envoyé par un Web browser mais par une instance d une URLClassLoader, et la réponse n est pas une page html mais le code binaire d une classe. HTTP tunneling est utilisé pour deux raisons essentielles, qui sont les deux très pragmatiques. Premièrement il permet au développeur d applications d utiliser les composants et l infrastructure qui existe déjà pour les applications web, il est alors facile de définir un protocole utilisant ces composants. De plus il rend aussi facilement possible aux développeurs d applications d incorporer de multiples langages. Depuis que presque chaque langage moderne a sa librairie permettant de traiter et de générer du XML, utiliser HTTP et XML pour définir un protocole permet au client d être écrit dans un langage et le serveur dans un autre. La seconde raison d utiliser HTTP tunneling est qu il est possible pour des applications distribuées d éviter les firewalls. Pour comprendre pourquoi il suffit de regarger la figure 1. Figure 1 : HTTP tunneling en action (tirée de O Reilly, Java RMI) Le point clé dans cette architecture est que le client utilise une couche supplémentaire (marshalling layer) qui encode la requête du client en une requête HTTP valide. Le serveur de l autre coté possède aussi une couche supplémentaire (layer of demarshalling code), laquelle transforme une requête HTTP en une requête correspondant à celle attendue par le serveur. Le HTTP tunneling est divisé en trois parties : 4

5 Le client : Envoie une requête au serveur web Le servlet : Transmet la requête à la socket du serveur RMI en préservant la structure HTTP qui a été envoyée par le client Le serveur : Transforme automatiquement l envoi HTTP en une commande JRMP (Java Remote Method Invocation) 3.1 Comment RMI «tunnelle» des messages Maintenant le but du mécanisme de RMI HTTP tunneling devrait être clair : il encode un appel de méthode à distance à la façon d une requête HTTP POST, et ensuite décode la «page web» retournée en une réponse du type approprié. RMI accomplit ceci de la même manière en utilisant un type élaboré de socket, dans laquelle une sérialisation est faite pour générer aussi bien les requêtes que les réponses HTTP. Bien qu un différent mode de socket est utilisé, RMI va utiliser par défaut son propre mode de socket quand des connections seront créées. Les sockets par défauts retournées par RMI tentent d utiliser HTTP tunneling si auparavant elles ont reçu une erreur du serveur. Les sockets par défaut emploient la stratégie suivante quand elles tentent une invocation de méthode sur un serveur : 1. Tentent d établir une connexion JRMP directe vers le serveur. 2. Si la connexion échoue, elles tentent d établir une connexion HTTP directe avec le serveur. Ainsi elles créent une connexion par socket vers le port sur lequel le serveur est en train d écouter et ensuite communique en encapsulant les méthodes demandées dans des requêtes HTTP. La première chose que le «RMI demarshalling» effectue est de déterminer si la requête a été encodée en utilisant JRMP ou HTTP. 3. Si la requête échoue encore, elles tentent d utiliser le firewall comme un serveur proxy (demandant au firewall de transmettre la requête au port approprié du serveur). Le firewall transmettra la requête comme une requête HTTP (le firewall ne va pas traduire la requête en appel RMI). 4. Si il y a encore un échec, elles tentent de se connecter sur le port 80 de la machine serveur et lui envoie la requête selon un URL commençant avec /cgi-bin/java-rmi.cgi. Cet URL signifie que la requête doit être transmise vers un programme qui interprète les requêtes HTTP et qui la transmet, comme une requête HTTP, vers le port approprié du serveur. Cette façon de communiquer peut paraître plutôt complexe. Ces points sont classés dans l ordre décroissant de leur privilège. De plus ces points sont indépendants les uns des autres, il est possible d imaginer un scénario pour lequel le quatrième point soit l unique possibilité d établir une communication. Par exemple supposons qu un firewall ait été installé pour ne permettre qu uniquement les connexions HTTP vers un serveur et qu un serveur RMI soit derrière le firewall. Un client qui essaye de communiquer avec le serveur aura besoin 5

6 d utiliser une stratégie différente selon si il se trouve derrière le firewall (il se trouve dans un intranet) ou en dehors du firewall (il se situe n importe où ailleurs sur l Internet). Si il se trouve à l intérieur du firewall, la première stratégie de connexion (direct JRMP) sera disponible et aura donc un sens. Si le client est à l extérieur du firewall, il y aura deux options qui dépendront du «firewall policy». Si le firewall permet les connexions HTTP sur n importe quel port et n insiste pas sur un trafic sur le port 80, la seconde option d envoyer une information HTTP directement sur le port sur lequel le serveur écoute est plus efficace. Cependant si le firewall insiste sur le fait que tout trafic HTTP doit être envoyé sur le port 80, alors la quatrième option sera la seule façon d établir une connexion. 3.2 Naming services and «the server machine» Un point important, qui n a pas encore été traité est que «la machine serveur» dans la quatrième option est une abstraction, elle n est pas nécessairement sur la même machine que l objet serveur actuel. C est simplement un nom de machine stocké dans le stub. Ce niveau supplémentaire d indirection permet au HTTP tunneling d être implémenté de façon flexible. Prenons par exemples un firewall qui réduit toutes les connexions entrantes à être des requêtes HTTP sur le port 80. Si nous mettons le «naming service» à l extérieur du firewall et la valeur du java.rmi.server.hostname prend le nom du server web, alors la quatrième option devra être utilisée. De cette façon, RMI tentera d envoyer des messages à notre serveur en appelant un URL commançant par /cgi-bin/java-rmi.cgi. Ceci ne force pas le serveur RMI à fonctionner sur la même machine que le serveur web. Cela signifie simplement que nous avons besoin d écrire une classe servlet qui effectue l étape finale dans la redirection de la requête RMI et qui ensuite configure le serveur web afin qu il envoye toutes les requêtes avec l URL approprié au servlet. Figure 2 : Le cheminement des messages (tirée de O Reilly, Java RMI) 6

7 L architecture résultante ressemble au diagramme de la figure 2. Les nombres montrent le cheminement des messages. 3.3 L implémentation d un servlet pour le HTTP tunneling Pour le déroulement de la quatrième stratégie, il y a une manière de transmettre l invocation de méthode au serveur RMI. La première implémentation de cette méthode que Sun Microsystems, Inc. développa était un script CGI. Les points suivants sont requis : Chaque invocation distante de méthodes est envoyée comme une requête HTTP POST L URL complet utilisé est de la forme /cgi-bin/java-rmi.cgi?forward=[port number] Le corps du POST contient toutes les données de la requête distante comme un objet sérialisé qui est ensuite converti en une chaîne de caractères ASCII. Après que la spécification des servlets fut défini, Sun créa un servlet qui fournit les mêmes fonctionnalités que le script CGI Le code du servlet Le code du servlet développé consiste en deux classes principales et en une liste de classes d exceptions. Les deux classes principales sont SimplifiedServletHandler et ServletForwardCommand. Elles ont les rôles suivants : SimplifiedServletHandler : Cette classe étend HTTPServlet. Elles reçoit les requêtes et effectue un validation préliminaire. ServletForwardCommand : C est une liste de méthodes statiques qui sait comment interpréter un HTTP POST et renvoyer ceci au serveur RMI qui tourne sur la même machine. Le code de SimplifiedServletHandler : public class SimplifiedServletHandler extends HttpServlet { public void init(servletconfig config) throws ServletException { super.init(config); System.out.println("Simplified RMI Servlet Handler loaded sucessfully."); public void dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { try { String querystring = req.getquerystring(); String command, param; 7

8 int delim = querystring.indexof("="); if (delim == -1) { command = querystring; param = ""; else { command = querystring.substring(0, delim); param = querystring.substring(delim + 1); if (command.equalsignorecase("forward")) { try { LoggingServletForwardCommand.execute(req, res, param); catch (ServletClientException e) { returnclienterror(res, "client error: " + e.getmessage()); e.printstacktrace(); catch (ServletServerException e) { returnservererror(res, "internal server error: " + e.getmessage()); e.printstacktrace(); else { returnclienterror(res, "invalid command: " + command); catch (Exception e) { returnservererror(res, "internal error: " + e.getmessage()); e.printstacktrace(); public void doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { returnclienterror(res, "GET Operation not supported: " + "Can only forward POST requests."); public void doput(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { returnclienterror(res, "PUT Operation not supported: " + "Can only forward POST requests."); public String getservletinfo() { return "RMI Call Forwarding Servlet Servlet.<br>\n"; private static void returnclienterror(httpservletresponse res, String message) throws IOException { res.senderror(httpservletresponse.sc_bad_request, "<HTML><HEAD>" + "<TITLE>Java RMI Client Error</TITLE>" + "</HEAD>" + "<BODY>" + "<H1>Java RMI Client Error</H1>" + message + "</BODY></HTML>"); System.err.println(HttpServletResponse.SC_BAD_REQUEST + "Java RMI Client Error" + message); private static void returnservererror(httpservletresponse res, String message) 8

9 throws IOException { res.senderror(httpservletresponse.sc_internal_server_error, "<HTML><HEAD>" + "<TITLE>Java RMI Server Error</TITLE>" + "</HEAD>" + "<BODY>" + "<H1>Java RMI Server Error</H1>" + message + "</BODY></HTML>"); System.err.println(HttpServletResponse.SC_INTERNAL_SERVER_ERROR + "Java RMI Server Error: " + message); Presque tout du processus logique de SimplifiedServletHandler est contenu à l intérieur de la méthode dopost(). La méthode dopost() parcourt l URL pour déterminer le port sur lequel le serveur écoute. Si l URL est un URL valide et contient le port, la requête est ensuite transmise à la méthode statique execute() du ServletForwardCommand. Le ServletForwardCommand comprends une série de méthodes statiques présentées ci-dessous : public class ServletForwardCommand { public static void execute(httpservletrequest request, HttpServletResponse response, String stringifiedport) throws ServletClientException, ServletServerException, IOException { int port = convertstringtoport(stringifiedport); Socket connectiontolocalserver = null; try { connectiontolocalserver = connecttolocalserver(port); forwardrequest(request, connectiontolocalserver); forwardresponse(response, connectiontolocalserver); finally { if (null!= connectiontolocalserver) { connectiontolocalserver.close(); private static int convertstringtoport(string stringfiedport) throws ServletClientException { int returnvalue; try { returnvalue = Integer.parseInt(stringfiedPort); catch (NumberFormatException e) { throw new ServletClientException("invalid port number: " + stringfiedport); if (returnvalue <= 0 returnvalue > 0xFFFF) { throw new ServletClientException("invalid port: " + returnvalue); if (returnvalue < 1024) { throw new ServletClientException("permission denied for port: " + returnvalue); 9

10 return returnvalue; private static Socket connecttolocalserver(int port) throws ServletServerException { Socket returnvalue; try { returnvalue = new Socket(InetAddress.getLocalHost(), port); catch (IOException e) { throw new ServletServerException("could not connect to " + "local port"); return returnvalue; private static void forwardrequest(httpservletrequest request, Socket connectiontolocalserver) throws IOException, ServletClientException, ServletServerException { byte buffer[]; DataInputStream clientin = new DataInputStream(request.getInputStream()); buffer = new byte[request.getcontentlength()]; try { clientin.readfully(buffer); catch (EOFException e) { throw new ServletClientException("unexpected EOF " + "reading request body"); catch (IOException e) { throw new ServletClientException("error reading request" + " body"); DataOutputStream socketout = null; // send to local server in HTTP try { socketout = new DataOutputStream(connectionToLocalServer.getOutputStream()); socketout.writebytes("post / HTTP/1.0\r\n"); socketout.writebytes("content-length: " + request.getcontentlength() + "\r\n\r\n"); socketout.write(buffer); socketout.flush(); catch (IOException e) { throw new ServletServerException("error writing to server"); private static void forwardresponse(httpservletresponse response, Socket connectiontolocalserver) throws IOException, ServletClientException, ServletServerException { byte[] buffer; DataInputStream socketin; try { socketin = new DataInputStream(connectionToLocalServer.getInputStream()); catch (IOException e) { throw new ServletServerException("error reading from " + "server"); String key = "Content-length:".toLowerCase(); boolean contentlengthfound = false; String line; int responsecontentlength = -1; 10

11 do { try { line = socketin.readline(); catch (IOException e) { throw new ServletServerException("error reading from server"); if (line == null) { throw new ServletServerException("unexpected EOF reading server response"); if (line.tolowercase().startswith(key)) { responsecontentlength = Integer.parseInt(line.substring(key.length()).trim()); contentlengthfound = true; while ((line.length()!= 0) && (line.charat(0)!= '\r') && (line.charat(0)!= '\n')); if (!contentlengthfound responsecontentlength < 0) throw new ServletServerException("missing or invalid content length in server response"); buffer = new byte[responsecontentlength]; try { socketin.readfully(buffer); catch (EOFException e) { throw new ServletServerException("unexpected EOF reading server response"); catch (IOException e) { throw new ServletServerException("error reading from server"); response.setstatus(httpservletresponse.sc_ok); response.setcontenttype("application/octet-stream"); response.setcontentlength(buffer.length); try { OutputStream out = response.getoutputstream(); out.write(buffer); out.flush(); catch (IOException e) { throw new ServletServerException("error writing response"); Il y a trois points importants à relever dans ServletForwardCommand. Premièrement, on utilise des sockets pour transmettre le corps du message HTTP au serveur RMI et ensuite des simples «pipes» que le serveur RMI retourne dans des sorties HttpServletResponse. Le second point important est que ServletForwarder transmet le message sans décoder les données ou comprendre le message. Même si le corps de la requête HTTP contient des instances de classes sérialisées, ServletForwarder n a pas besoin d avoir ces classes dans son classpath ou de traiter les instances sérialisées, il s occupe simplement de copier des bytes d un endroit vers un autre. 11

12 3.4 Modifications à apporter afin d utiliser le Tunneling La socket RMISocketFactory tentera par défaut automatiquement d utiliser le HTTP tunneling quand les autres connexions auront échouées. Il n y a pas besoin de changer ni le code du serveur ni le code du client, il suffit simplement d ajouter un ligne dans le code du client afin qu il puisse utiliser le HTTP tunneling. Cette ligne est la suivante : RMISocketFactory.setSocketFactory( new sun.rmi.transport.proxy.rmihttptocgisocketfactory()) ; 3.5 Désavantages du HTTP tunneling HTTP est souvent considéré comme une mauvaise idée à cause des quatres raisons suivantes : Sécurité Le HTTP tunneling évite délibérément un mécanisme de sécurité qui a été mis en place par une autre personne qui le jugeait nécessaire. L inefficacité de la bande passante RMI est déjà à la base un protocole gourmand, il encode beaucoup d informations dans chaque message de requête. Donc prendre le message RMI et l insérer dans un envoi HTTP utilisera une plus grande largeur de bande. L inefficacité de la connexion HTTP tunneling ne peut pas créer une connexion puis la laisser ouverte et la réutiliser, il devra créer une nouvelle socket pour chaque requête qu il effectuera. La fragilité de l application L application entière est vulnérable à des changements dans la configuration du firewall ou du la topologie du réseau. 3.6 Configuration du fichier policy Chaque servlet est obligatoirement exécutée sous le contrôle d un gestionnaire de sécurité (Security Manager). Celui-ci s interpose entre la servlet et les ressources du système afin d empêcher toutes tentatives d accès illégales aux ressources du client. Les permissions d accès sont définies par la politique de sécurité (Security Policy) installée sur le poste de travail. Lorsque aucune politique de sécurité n est définie explicitement sur le client, le gestionnaire utilise alors la politique par défaut qui s appelle le bac à sable (Sandbox). Le bac à sable interdit aux servlets tout accès (lecture et écriture) aux ressources de la machine locale. Quand une servlet tente d accéder à une ressource du système, le gestionnaire de sécurité vérifie si le code exécuté a la permission d accéder à cette ressource en 12

13 consultant la politique de sécurité. Si la permission est accordée, tout se passe normalement. Dans le cas contraire, une exception est levée. Les fichiers «.policy» servent à paramétrer la politique de sécurité du système local. Un fichier «.policy» contient un ensemble de répertoires auxquels sont attribués individuellement un ensemble de permissions. Avant de lancer le serveur web il est important de noter que dans Java 2 (jdk1.2 et versions ultérieures) les politiques de sécurité appliquées par la JVM ne permettent pas du téléchargement du code sans permission explicite. Pour cela nous avons besoin, du côté client comme du côté serveur d'un fichier de politique de sécurité qu'on nommera java.policy et contenant les lignes suivantes : permission java.net.socketpermission "*: ","connect,accept"; permission java.net.socketpermission "*:80", "connect"; Le fichier «.policy» utilisé pour pouvoir effectuer un HTTP tunneling doit contenir une ligne de plus chez le client afin de lui permettre l utilisation de la «RMISocketFactory». Cette ligne est la suivante : permission java.lang.runtimepermission "setfactory"; 3.7 Exemple d appel RMI utilisant HTTP tunneling Le serveur Apache, Tomcat et le serveur RMI tourne sur la même machine (ip : ) à l intérieur du firewall. Afin de pouvoir effectuer un appel RMI à travers le firewall nous devons nous connecter au serveur Apache depuis une machine extérieur au firewall. Si l on a à disposition uniquement une machine à l intérieur du réseau local, on peut utiliser comme illustré dans la figure 3 un programme s appelant VNC qui permet de prendre le contrôle d une machine distante (dans ce cas nous prendrons le contrôle d une machine à l extérieur du firewall). Déroulement des étapes : Le client fait un appel RMI au serveur sous forme de requête HTTP grâce au socket factory utilisé. Un message de la forme /cgi-bin/javarmi.cgi?forward=[port number] sera envoyé au serveur Apache (dans le cas présent le port 80 sera utilisé car c est celui qui est à disposition par le firewall). Dans un premier temps une servlet (fonctionnant sur le serveur grâce à Tomcat) contrôlera la syntaxe de ce message. Puis l enverra sous forme HTTP POST au serveur RMI. Le serveur RMI la traitera et enverra au serveur Apache une réponse de type HttpServletResponse. Le servlet transmettra cette réponse au client sous la forme d une réponse HTTP à l aide de la socket factory utilisée. 13

14 Figure 3 : Déroulement d un appel RMI utilisant HTTP tunneling 14

15 4. RMIProxy Une seconde technique permettant le passage des appels RMI à travers un firewall est la méthode RMIProxy. Dans cette technique le client doit être configuré afin de pouvoir utiliser des sockets qui traversent le firewall. 4.1 Où trouve-t-on RMIProxy La version d évaluation de RMIProxy peut être téléchargé sur le site Les objectifs Les objectifs de RMI Proxy sont les suivants : 1. Eliminer les problèmes de sécurités de RMI à travers HTTP pour l administrateur réseau en fournissant des contrôles des exportations et des importations des services RMI, via une application firewall qui ne supporte uniquement le protocole RMI/JRMP. Aucune autre solution que RMIProxy existe. 2. Fournir une grande réduction des overhead dans le passage à travers un firewall comparé au HTTP tunneling. 3. Permettre un accès contrôlé vers le serveur RMI derrière le firewall. Aucune autre solution que RMIProxy existe. 4. Permettre un accès contrôlé des appels du côté client derrière un firewall. Aucune autre solution que RMIProxy existe. 5. Permettre au client RMI se trouvant derrière un firewall de contrôler l accès vers un serveur RMI de l autre côté du firewall. Les seules solutions existantes à ce problème sont les SOCKS et le HTTP tunneling. 6. Préserver toutes les propriétés de RMI. 7. Requérant un minimum de changement de code chez le client et le serveur RMI. 8. Reprendre le maximum d avantages existants dans les classes java, les packages, et la configuration et les dispositifs de sécurité. 4.3 Les caractéristiques RMI Proxy est une application Java et une API qui permet le contrôle de la pénétration dans un firewall en approuvant les clients et les serveurs RMI. 15

16 RMI Proxy fournit un protocole RMI intermédiaire qui remplace RMI/HTTP tunneling, avec un haut degré de contrôle d accès pour l administrateur réseau. RMI Proxy est capable de : bloquer l accès aux protocoles non-jrmp contrôler les écritures vers la RMI Proxy registry selon l identification de l hôte client. permettre ou refuser l accès et l exécution de méthodes distantes au client RMI, selon l identification de l hôte client. Permettre ou refuser le transfert de code par le service du codebase RMI, dans les deux directions. RMI Proxy fournit donc une grande réduction des overhead par rapport au HTTP tunneling. La durée de la connexion TCP est identique à une connexion RMI directe. L overhead découlant de tout RMI Proxy dans la chaîne de proxy est moindre qu une indirection RMI supplémentaire par proxy. RMI Proxy supporte entièrement : Les firewalls coté client Les firewalls coté serveur Les appels du client derrière le firewall client RMI Proxy préserve toutes les propriétés de RMI excepté l activation (les stubs activables sont séparés comme des stubs unicast), RMI/IIOP, et l exactitude des valeurs retournées par le RemoteServer.getClientHost. L utilisation de RMI Proxy nécessite uniquement un changement d utilisation de la classe Naming en ProxyNaming, et modifier les propriétés du rmi.proxyhost chez le client, le serveur et les proxy intermédiaires. RMI Proxy utilise le mécanisme Java de security-policy existant pour contrôler la configuration, et utilise la java.rmi.accessexception existante pour le rapport des erreurs. RMI Proxy est une solution 100% Java. Les composants firewall RMI Proxy implémentent une RMI registry standard. 4.4 Le contrôle d accès Le contrôle d accès est fournit par les fichiers Java policy, lesquels contrôlent la communication à travers les firewalls. Le contrôle d accès s effectuent selon l adresse IP ou le nom d un client voulant passé le firewall et selon l action que celui-ci veut effectuer, à l aide d une classe spéciale FirewallPermission. Le contrôle d accès est capable d être contre les actions suivantes : L accès à certains objets reçus ou envoyés implémentant l interface distant Bind, rebind ou unbind certains noms L exécution de certaines méthodes distantes Chercher certains noms dans la proxy registry 16

17 4.5 L architecture RMI Proxy comprend les composants importants suivants : 1. le programme RMI Proxy, lequel s exécute dans les proxy machines désignées 2. la classe ProxyNaming, une classe Naming modifiée, appelée par les clients et serveurs RMI. RMI Proxy comprend les sous-composants suivants : 1. Le Proxy Registry : une RMI Registry normale qui est soumise aux règles de contrôles d accès fournis par l implémentation du serveur RMIProxy. 2. Un protocole RMI qui négocie entre les flux descendants du serveur RMI et les flux montants du client RMI, effectuant la validation du protocole et le contrôle d accès dans le processus. Le système compte sur deux faits élémentaires de RMI : une référence distante peut seulement être obtenue par un paramètre ou le résultat d un appel de méthode distante, et la référence distante initiale est amorcée par un naming service (la RMI Registry). 4.6 Comment RMIProxy fonctionne Un serveur RMI derrière un firewall utilise le plus proche RMI Proxy afin d avoir son RMI Registry. Le coté extérieur du serveur RMI Proxy rend disponible un objet distant aux clients extérieurs. Pour le client RMI, une opération «lookup» sur un objet distant doit être dirigée vers le serveur proxy. Si le client est aussi lui-même derrière un firewall, le «lookup» est délégué à son RMI Proxy. La partie extérieure du proxy du client est capable de communiquer par RMI avec la partie extérieure du proxy serveur. Les proxies RMI servent d intermédiaires entre les entrées vers le serveur et les sorties du client. Ils effectuent la validation du protocole RMI et transmet les appels RMI de l un vers l autre. 17

18 Figure 4 : Exemple de configuration réseau RMI (tirée du guide de RMIProxy) Le RMI Proxy comprend trois composants : RMI proxy Registry un serveur RMI Proxying une API utilisée par les client et les serveurs Le RMI proxy Registry et les composants serveur sont installés en association avec chaque firewall qui existe entre le client RMI et le serveur RMI. Il peut y avoir un nombre quelconque de firewall. Chacun doit ouvrir son port au trafique RMI, lequel est ensuite manipulé d un manière sécurisée par le RMI proxy associé. La propriété système rmi.proxyhost, placée sur chaque hôte impliqué, dicte s il faut déléguer la requête du coté client (comme par exemple : lookup), ou s il faut la propager à la registry du coté serveur (par exemple : bind ou rebind), vers le prochain RMI Proxy dans la chaîne. Chaque RMI proxy a le droit de restreindre l accès à l aide d un fichier policy. Des Restrictions peuvent être imposées comme nous l avons vu plus haut par l adresse IP ou le nom de l hôte, par le nom du service distant, ou par l interface distant et les noms de méthodes. 4.7 L API coté client Quand un client RMI obtient une référence, il utilise normalement la méthode naming.lookup, avec un URL RMI de la forme : rmi://host/name où le host est le nom de l hôte sur lequel la RMI Registry tourne, et le name est le nom de l objet distant se trouvant dans la registry. 18

19 Dans l API de RMIProxy, le client utilise ProxyNaming à la place de Naming, Si un proxy est présent du coté client, les propriétés du système rmi.proxyhost spécifient son emplacement comme une URL RMI. Si cette propriété est présente, le client fonctionne dans un environnement RMI Proxy, donc le lookup est délégué au RMI Proxy, lequel est moins restrictif vers l extérieur que le client original. Si ce Proxy fonctionne avec un autre Proxy le lookup est redélégué et ainsi de suite jusqu au Proxy final atteint à l extérieur du firewall coté client, à ce point le Naming.lookup standard est exécuté, comme si aucun Proxy n avait été entre deux. Ce lookup, soit il réussi soit il échoue. Si il échoue, une exception RMI est propagé en retour vers le client original, et rien de remarquable se produit (l objet distant n a pas été trouvé). Si le lookup réussit, le stub obtenu (le flux descendant du stub) vérifie l accès au RMI Proxy. Cela peut encore échouer avec une java.rmi.accessexception ; autrement un stub se référant à l hôte RMI Proxy est retourné au client (le flux montant du stub). Le RMI Proxy maintient un lien entre le flux montant et descendant du stub, et transmet les appels RMI de l un à l autre, sujet du contrôle d accès. Du point de vue du client, l existence de RMI Proxy est invisible. Tout ce que le client sait, c est qu il a demandé un naming service (en utilisant ProxaNaming) pour une référence distante et qu il la obtenu ; le référence distante est du type expected, et le travail de la référence est de communiquer avec l objet distant. 4.8 L API côté serveur Un serveur RMI accessible par internet est lié avec la méthode ProxyNaming.bind à la place de Naming.bind ou Registry.bind, avec une URL RMI de la forme : rmi://host/name où host est le nom de l hôte sur lequel tourne la RMI Registry, et name est le nom de l objet distant dans cette registry. Avec les règles normales de RMI, un serveur RMI peut seulement être lié à un nom dans la RMI Registry par un processus tournant sur la même machine que la Registry. RMI Proxy modifie ces contraintes (le sujet du contrôle d accès pour le proxy). Les propriétés système rmi.proxhost nomment un hôte accessible où un RMI Proxy tourne. Si cette propriété est présente, la JVM tourne dans un environnement RMI Proxy, donc l opération ProxyNaming.bind est exécutée en même temps dans la registry locale et dans le RMI Proxy. Si il y a un autre proxy pour ce proxy, l opération est redéléguée et ainsi de suite jusqu à ce que le proxy final soit atteint. Dans l hôte original et dans chaque proxy incluant le dernier, le standard Naming.bind est exécuté par le ProxyNaming.bind. Ceci force le binding à se produire dans toutes les registry exécutées dans la chaîne des proxy. Le serveur est donc lié à la registry locale et aux registries de la chaîne des proxy. Une opération lookup de chaque proxy registries retourne un stub de flux montant se référant à un RMI Proxy, lequel transmet vers le stub de flux descendant après avoir effectué un contrôle d accès, exactement comme dans le cas de l API coté client, éventuellement en atteignant le serveur RMI original. 19

20 A l instar de l appel Naming.unbind ou Registry.unbind, un proxied RMI serveur est délié par ProxyNaming.unbind. Cette action d abord appelée Naming.unbind et ensuite délégué à la chaîne de proxy, entraîne unbinding de toutes les registries de la chaîne de proxy. De cette manière, chaque RMI serveur se lie vers une registry se trouvant dernière un ou plusieurs firewalls, et chaque serveur RMI accessible du serveur initial, sont rendus accessibles depuis internet, en étant rendus visibles par le plus proche RMI Proxy, et ainsi de suite récursivement. Un client RMI peut maintenant rechercher un serveur RMI à l extérieur du proxy côté serveur et obtenir un stub de flux descendant lequel finalement il se réfère, en passant par une chaîne de RMI Proxies, vers un serveur à l intérieur du firewall. Ce serveur n est donc pas directement accessible par le client. 4.9 Proxies multiple Si le client est derrière un ou plusieurs firewalls, ses propres RMI Proxies côté client feront leurs propre délégations, ainsi le client reçoit un stub qu il peut utiliser. Le dernier stub de flux montant pointe à l intérieur du proxy côté client, lequel pointe lui-même vers le suivant, lequel pointe éventuellement à l extérieur du proxy côté serveur, lequel pointe à l intérieur vers le suivant, lequel finalement point vers le serveur de flux descendant, comme illustré dans la figure 4. Figure 5 : multiples proxies côté client et serveur (tirée des «white paper» de RMIProxy) 20

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

Plus en détail

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. Apache, Mod_proxy et 4D Par Timothy PENNER, Technical Services Team Member, 4D Inc. Note technique 4D-201003-05-FR Version 1 - Date 1 mars 2010 Résumé Cette note technique porte sur l utilisation du serveur

Plus en détail

Java - RMI Remote Method Invocation. Java - RMI

Java - RMI Remote Method Invocation. Java - RMI Remote Method Invocation Yann Viémont Université de Versailles St-Quentin Plan 1. Introduction 2. Rappels sur les RPC 3. Le modèle objet de Java-RMI 4. Architecture générale 1. Introduction = Disponible

Plus en détail

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence

Plus en détail

A. Architecture du serveur Tomcat 6

A. Architecture du serveur Tomcat 6 Administration du serveur A. Architecture du serveur Tomcat 6 La compréhension de l architecture interne du serveur Tomcat 6 est un pré-requis indispensable pour bien en maîtriser l administration et la

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant. http://robert.cireddu.free.

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant. http://robert.cireddu.free. 2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES 2.2 Architecture fonctionnelle d un système communicant Page:1/11 http://robert.cireddu.free.fr/sin LES DÉFENSES Objectifs du COURS : Ce cours traitera essentiellement

Plus en détail

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011 Java RMI Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr Université de Provence 8 mars 2011 Arnaud Labourel (Université de Provence) Java RMI 8 mars 2011 1 / 58 Web services Services par le réseau

Plus en détail

Application Web et J2EE

Application Web et J2EE Application Web et J2EE Servlet, JSP, Persistence, Méthodologie Pierre Gambarotto Département Informatique et Math appli ENSEEIHT Plan Introduction 1 Introduction Objectfis

Plus en détail

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

L3 informatique TP n o 2 : Les applications réseau L3 informatique TP n o 2 : Les applications réseau Sovanna Tan Septembre 2009 1/20 Sovanna Tan L3 informatique TP n o 2 : Les applications réseau Plan 1 Transfert de fichiers 2 Le Courrier électronique

Plus en détail

2 Chapitre 1 Introduction

2 Chapitre 1 Introduction 1 Introduction Ce livre présente les Enterprise JavaBeans 2.0 et 1.1 qui constituent la troisième et la deuxième version de la spécification des Enterprise JavaBeans. Tout comme la plate-forme Java a révolutionné

Plus en détail

HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ...

HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ... HTTP 1.1 Place de http dans le modèle osi : HyperText Transfer Protocol...... TCP IP...... HTTP est un protocole «sans état» : chaque page WEB est transmise dans une connexion séparée (sauf pour les connections

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

TAGREROUT Seyf Allah TMRIM

TAGREROUT Seyf Allah TMRIM TAGREROUT Seyf Allah TMRIM Projet Isa server 2006 Installation et configuration d Isa d server 2006 : Installation d Isa Isa server 2006 Activation des Pings Ping NAT Redirection DNS Proxy (cache, visualisation

Plus en détail

Mettre en place un accès sécurisé à travers Internet

Mettre en place un accès sécurisé à travers Internet Mettre en place un accès sécurisé à travers Internet Dans cette partie vous verrez comment configurer votre serveur en tant que serveur d accès distant. Dans un premier temps, les méthodes pour configurer

Plus en détail

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

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 1 BERNIER François http://astronomie-astrophotographie.fr Table des matières Installation d un serveur HTTP (Hypertext Transfer

Plus en détail

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) XVIII-1 Prérequis pour ce cours Ce cours a trait à la programmation Java coté serveur Il faut connaître un minimum de technologie J2EE Il faut connaître les servlets XVIII-2 Motivation

Plus en détail

arcopole Studio Annexe 7 Architectures Site du programme arcopole : www.arcopole.fr

arcopole Studio Annexe 7 Architectures Site du programme arcopole : www.arcopole.fr 4 arcopole Studio Annexe 7 Architectures Site du programme arcopole : www.arcopole.fr Auteur du document : Esri France Version de la documentation : 1.2 Date de dernière mise à jour : 26/02/2015 Sommaire

Plus en détail

Firewall Net Integrator Vue d ensemble

Firewall Net Integrator Vue d ensemble Net Integration Technologies, Inc. http://www.net-itech.com Julius Network Solutions http://www.julius.fr Firewall Net Integrator Vue d ensemble Version 1.00 TABLE DES MATIERES 1 INTRODUCTION... 3 2 ARCHITECTURE

Plus en détail

Intergiciel - concepts de base

Intergiciel - concepts de base Intergiciel - concepts de base Ada Diaconescu, Laurent Pautet & Bertrand Dupouy ada.diaconescu _at_ telecom-paristech.fr Rappel : système réparti Système constitué de multiples ressources informatiques

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée Virtual Server de Microsoft Virtual Server 2005 R2 Network Shutdown Module Système Principal (hôte) Virtual Server

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Java Naming and Directory Interface

Java Naming and Directory Interface Introduction Java Naming and Directory Interface Gaël Thomas gael.thomas@lip6.fr Université Pierre et Marie Curie Master Informatique M2 Spécialité SAR Java Naming and Directory Interface (JNDI) Java Standard

Plus en détail

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Serveur d'archivage 2007 Installation et utilisation de la BD exist Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier

Plus en détail

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT Administration Réseau Niveau routage Intérêt du NAT (Network Address Translation) Possibilité d utilisation d adresses privées dans l 4 2 1 Transport Réseau Liaison Physique Protocole de Transport Frontière

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

Dis papa, c est quoi un bus logiciel réparti?

Dis papa, c est quoi un bus logiciel réparti? Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

Le filtrage de niveau IP

Le filtrage de niveau IP 2ème année 2008-2009 Le filtrage de niveau IP Novembre 2008 Objectifs Filtrage : Le filtrage permet de choisir un comportement à adopter vis à vis des différents paquets émis ou reçus par une station.

Plus en détail

Remote Method Invocation en Java (RMI)

Remote Method Invocation en Java (RMI) Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation

Plus en détail

1. La plate-forme LAMP

1. La plate-forme LAMP Servi ces pour intranet et Internet Ubuntu Linux - Création et gestion d un réseau local d entreprise 1. La plate-forme LAMP Services pour intranet et Internet La fourniture d'un site pour le réseau ou

Plus en détail

MANUEL D INSTALLATION D UN PROXY

MANUEL D INSTALLATION D UN PROXY MANUEL D INSTALLATION D UN PROXY Squid, SquidGuard, Dansguardian Dans ce guide on va détailler l installation et la configuration d une solution proxy antivirale en utilisant les outils ; squid, dansguardian,

Plus en détail

MANUEL DU SERVICE CENTER

MANUEL DU SERVICE CENTER MANUEL DU SERVICE CENTER Les informations contenues dans ce document peuvent être modifiées à tout moment sans préavis et n engagent pas la responsabilité de NATIVE INSTRUMENTS GmbH. Le Logiciel décrit

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

FileMaker Server 14. Guide de démarrage

FileMaker Server 14. Guide de démarrage FileMaker Server 14 Guide de démarrage 2007-2015 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker et FileMaker Go sont des marques

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

avast! EP: Installer avast! Small Office Administration

avast! EP: Installer avast! Small Office Administration avast! EP: Installer avast! Small Office Administration Comment installer avast! Small Office Administration? avast! Small Office Administration est une console web qui permet la gestion a distance de

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

1. Installation d'un serveur d'application JBoss:

1. Installation d'un serveur d'application JBoss: EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 4 EJB3, Serveur d'application JBoss 1. Installation d'un serveur d'application JBoss: télécharger l'archive du serveur JBoss à l'adresse: http://sourceforge.net/projects/jboss/files/jboss/jboss-5.0.0.ga/jboss-5.0.0.ga.zip/download

Plus en détail

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application

Plus en détail

Introduction aux «Services Web»

Introduction aux «Services Web» Introduction aux «Services Web» Sana Sellami sana.sellami@univ-amu.fr 2014-2015 Modalité de contrôle de connaissances Note de contrôle de continu Note projet Evaluation du projet la semaine du 17 novembre

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Protection des protocoles www.ofppt.info

Protection des protocoles www.ofppt.info ROYAUME DU MAROC Office de la Formation Professionnelle et de la Promotion du Travail Protection des protocoles DIRECTION RECHERCHE ET INGENIERIE DE FORMATION SECTEUR NTIC Sommaire 1. Introduction... 2

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean. Plan du cours 2 Introduction générale : fondamentaux : les fondamentaux Michel Buffa (buffa@unice.fr), UNSA 2002, modifié par Richard Grin (version 1.1, 21/11/11), avec emprunts aux supports de Maxime

Plus en détail

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13 Programmation Réseau Sécurité Java Jean-Baptiste.Yunes@univ-paris-diderot.fr UFR Informatique 2012-2013 Java Sécurité? différentes sécurités disponibles et contrôlables intégrité contrôle d accès signature/authentification/cryptographie

Plus en détail

Hébergement de sites Web

Hébergement de sites Web Hébergement de Solutions complètes et évolutives pour l hébergement de sites Web dynamiques et de services Web sécurisés. Fonctionnalités Serveur Web Apache hautes performances Apache 1. et.0 1 avec prise

Plus en détail

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

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4 Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.

Plus en détail

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web» Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web» Sana Sellami sana.sellami@lsis.org 2014-2015 Plan Partie 1: Introduction aux Services Web (SW) Partie 2: Vers une

Plus en détail

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

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau) CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.

Plus en détail

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

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim 01/03/2013 Le rôle de Serveur Web (IIS) dans Windows Server 2008 R2 vous permet de partager des informations avec des utilisateurs sur Internet, sur un intranet ou un extranet. Windows Server 2008 R2 met

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

TUTORIAL ULTRAVNC 1.0.2 (EDITION 2)

TUTORIAL ULTRAVNC 1.0.2 (EDITION 2) TUTORIAL ULTRAVNC 1.0.2 (EDITION 2) 1) TELECHARGEMENT DE ULTRAVNC :... 1 2) INSTALLATION DU SERVEUR ULTRAVNC (ULTRAVNC 1.0.2 COMPLET)... 2 3) UTILISATION DE ULTRAVNC 1.0.2 SERVEUR SEUL... 10 4) UTILISATION

Plus en détail

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

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un

Plus en détail

FileMaker Server 14. Aide FileMaker Server

FileMaker Server 14. Aide FileMaker Server FileMaker Server 14 Aide FileMaker Server 2007-2015 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker et FileMaker Go sont des marques

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

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

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

Mandataires, caches et filtres

Mandataires, caches et filtres Mandataires, caches et filtres Pascal AUBRY IFSIC - Université de Rennes 1 Pascal.Aubry@univ-rennes1.fr Plan : mandataires caches filtrage serveur de proxy exemple de mise en œuvre Mandataire (proxy) Mandataire

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Chapitre 1 Windows Server 2008 11

Chapitre 1 Windows Server 2008 11 Chapitre 1 Windows Server 2008 11 1.1. Les fondations du système... 15 1.2. La virtualisation... 16 1.3. La sécurité... 18 1.4. Le Web... 20 1.5. Fonctionnalité disponible dans Windows Server 2008... 21

Plus en détail

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

Sécurité Java 2. Première approche. Installation des exemples. Exemple d'une applet Sécurité Java 2 Première approche L 'internet permet une multiplication des moyens de diffusion des applications. Le courrier électronique, le Web, le FTP sont autant de moyens de distribuer des composants

Plus en détail

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

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

Documentation CAS à destination des éditeurs

Documentation CAS à destination des éditeurs Documentation CAS à destination des éditeurs Sommaire Préambule... 1 Présentation de CAS...2 Intérêt... 2 Fonctionnement de base...2 Synoptique des échanges (1ère connexion)... 2 Synoptique des échanges

Plus en détail

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents. Serveur de partage de documents Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents. Table des matières Création de la machine virtuelle Debian... 3 Présentation

Plus en détail

Firewall IDS Architecture. Assurer le contrôle des connexions au. nicolas.hernandez@univ-nantes.fr Sécurité 1

Firewall IDS Architecture. Assurer le contrôle des connexions au. nicolas.hernandez@univ-nantes.fr Sécurité 1 Sécurité Firewall IDS Architecture sécurisée d un réseau Assurer le contrôle des connexions au réseau nicolas.hernandez@univ-nantes.fr Sécurité 1 Sommaire général Mise en oeuvre d une politique de sécurité

Plus en détail

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT DOCUMENTATION CAS A DESTINATION DES SERVICES TIERS Titre descriptif du document Référence du document REFO-DT-ENTV2-ServeurCAS-v1.2.docx Nom du fichier REFO-DT-ENTV2-ServeurCAS-v1.2.docx Version du document

Plus en détail

Calcul Parallèle. Cours 5 - JAVA RMI

Calcul Parallèle. Cours 5 - JAVA RMI Calcul Parallèle Cours 5 - JAVA RMI Eric Goubault Commissariat à l Energie Atomique & Chaire Ecole Polytechnique/Thalès Saclay Le 28 février 2012 Eric Goubault 1 28 février 2012 Remote Method Invocation

Plus en détail

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

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 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 Centre ressource Génie Electrique Intervenant : Enseignant

Plus en détail

JOnAS Day 5.1. Clustering

JOnAS Day 5.1. Clustering JOnAS Day 5.1 Clustering Solution complète de clustering Répartition de charge & bascule sur échec Application Web avec mod_jk/mod_proxy Connecteur http pour md_proxy Application Ejb avec CMIv2 Réplication

Plus en détail

LES FONCTIONS DE SURVEILLANCE DES FICHIERS

LES FONCTIONS DE SURVEILLANCE DES FICHIERS SYSLOG and APPLICATION LOGS Knowledge Module for PATROL - Data Sheet Version 1.5 Développé par http://www.axivia.com/ PRESENTATION DU PRODUIT SYSLOG and APPLICATION LOGS Knowledge Module for PATROL est

Plus en détail

Le rôle Serveur NPS et Protection d accès réseau

Le rôle Serveur NPS et Protection d accès réseau Le rôle Serveur NPS et Protection d accès réseau 1 Vue d'ensemble du module Installation et configuration d'un serveur NPS Configuration de clients et de serveurs RADIUS Méthodes d'authentification NPS

Plus en détail

4. SERVICES WEB REST 46

4. SERVICES WEB REST 46 4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,

Plus en détail

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1 E-TRANSACTIONS Guide du programmeur API Plug-in Version 1.1 Avertissements : Le fichier Version.txt précise l'environnement dans lequel l API a été compilée et testée. L'installation de l API sur tout

Plus en détail

SÉCURISATION DES CONNEXIONS À DISTANCE SUR LES RÉSEAUX DE CONTRÔLE

SÉCURISATION DES CONNEXIONS À DISTANCE SUR LES RÉSEAUX DE CONTRÔLE PUBLICATION CPA-2011-102-R1 - Mai 2011 SÉCURISATION DES CONNEXIONS À DISTANCE SUR LES RÉSEAUX DE CONTRÔLE Par : François Tremblay, chargé de projet au Centre de production automatisée Introduction À l

Plus en détail

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Création d'un site dynamique en PHP avec Dreamweaver et MySQL Création d'un site dynamique en PHP avec Dreamweaver et MySQL 1. Création et configuration du site 1.1. Configuration de Dreamweaver Avant de commencer, il est nécessaire de connaître l'emplacement du

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Proxy et reverse proxy. Serveurs mandataires et relais inverses Serveurs mandataires et relais inverses Qu'est-ce qu'un proxy? Proxy = mandataire (traduction) Un proxy est un service mandataire pour une application donnée. C'est à dire qu'il sert d'intermédiaire dans

Plus en détail

Réf. : S2I-CIELL2-PI-1.0. Version : 1.0. Auteurs : S2I-TOULON

Réf. : S2I-CIELL2-PI-1.0. Version : 1.0. Auteurs : S2I-TOULON Application CIELL2 PROCEDURE D INSTALLATION Réf. : S2I-CIELL2-PI-1.0 Version : 1.0 Auteurs : S2I-TOULON S2I-CIELL2-PI-1.0 mardi 10 juin 2003 Page 2/23 Installation Serveur Web Liste des différents modules

Plus en détail

Prototype de canal caché dans le DNS

Prototype de canal caché dans le DNS Manuscrit auteur, publié dans "Colloque Francophone sur l Ingénierie des Protocoles (CFIP), Les Arcs : France (2008)" Prototype de canal caché dans le DNS Lucas Nussbaum et Olivier Richard Laboratoire

Plus en détail

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date : 2014-05-29

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date : 2014-05-29 FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date : 2014-05-29 FOIRE AUX QUESTIONS Confidentiel Titre du document : Monetico

Plus en détail

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

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

Sage CRM. 7.2 Guide de Portail Client

Sage CRM. 7.2 Guide de Portail Client Sage CRM 7.2 Guide de Portail Client Copyright 2013 Sage Technologies Limited, éditeur de ce produit. Tous droits réservés. Il est interdit de copier, photocopier, reproduire, traduire, copier sur microfilm,

Plus en détail

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

TP réseau Android. Bidouilles Tomcat. a) Installer tomcat : il suffit de dézipper l'archive apache-tomcat-8.0.15-windowsx64.zip. TP réseau Android Ce TP utilise tomcat 8, sous windows et des.bat windows. On peut trouver ce serveur web et conteneur d'applications web à http://tomcat.apache.org/download-80.cgi. Il se trouve dans l'archive

Plus en détail

Application de lecture de carte SESAM-Vitale Jeebop

Application de lecture de carte SESAM-Vitale Jeebop Application de lecture de carte SESAM-Vitale Jeebop Présentation Le module de lecture de carte SESAM-Vitale Jeebop est une application Java Web Start, c'est à dire une application Java qui se télécharge

Plus en détail

Supplément de renseignements : Examens d applications et pare-feux d applications web clarifiés Normes : Normes en matière de sécurité des données de

Supplément de renseignements : Examens d applications et pare-feux d applications web clarifiés Normes : Normes en matière de sécurité des données de Supplément de renseignements : Examens d applications et pare-feux d applications web clarifiés Normes : Normes en matière de sécurité des données de la PCI (PCI DSS) Version : 1.2 Date : Octobre 2008

Plus en détail

MISE EN PLACE DU FIREWALL SHOREWALL

MISE EN PLACE DU FIREWALL SHOREWALL MISE EN PLACE DU FIREWALL SHOREWALL I. LA MISSION Dans le TP précédent vous avez testé deux solutions de partage d une ligne ADSL de façon à offrir un accès internet à tous vos utilisateurs. Vous connaissez

Plus en détail

Table des matières. 2011 Hakim Benameurlaine 1

Table des matières. 2011 Hakim Benameurlaine 1 Table des matières 1 SERVEUR APACHE... 2 1.1 INTRODUCTION... 2 1.2 INSTALLATION ET CONTROLE du service APACHE... 3 1.3 CONFIGURATION DE BASE DU SERVEUR HTTP... 5 1.3.1 Directives globales... 7 1.3.2 Directives

Plus en détail

Configurer Squid comme serveur proxy

Configurer Squid comme serveur proxy LinuxFocus article number 235 http://linuxfocus.org Configurer Squid comme serveur proxy Résumé: par D.S. Oberoi L auteur: D.S. Oberoi vit à Jammu, aux Indes et rencontre des problèmes

Plus en détail

Utilisation de Jakarta Tomcat

Utilisation de Jakarta Tomcat ISI 1022 : Déploiement d applications Web Jean-Noël Sorenti. Année 2002/2003 Déploiement d application Web Utilisation de Jakarta Tomcat ISI 1022 : 1 ISI 1022 : Déploiement d applications Web Une application

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5 Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5 Machine virtuelle Machine virtuelle Machine virtuelle VMware ESX Network Shutdown Module

Plus en détail