Implementing a simple RMI Application over the Internet (using and comparing HTTP tunneling, RMI Proxy)
|
|
- Raphaël Turgeon
- il y a 8 ans
- Total affichages :
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) 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étailRMI 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étailWeb 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étailRMI. 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étailArchitecture 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étailTous 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étailJava - 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étailExtension 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étailA. 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étailINTRODUCTION 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étail2. 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étailJava 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étailApplication 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étailL3 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étail2 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étailHTTP 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étailServeur 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étailTAGREROUT 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étailMettre 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étailInstallation 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étailJavaServer 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étailarcopole 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étailFirewall 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étailIntergiciel - 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étailCette 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étailNetwork 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étailRemote 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étailProjet 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étailJava 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étailServeur 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étailInté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étailPour 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étailDis 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étailCompte 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étailLe 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étailRemote 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étail1. 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étailMANUEL 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étailMANUEL 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étailTP1. 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étailTP 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étailFileMaker 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étailTP1 : 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étailavast! 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étailLangage 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étail1. 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étailUtilisation 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étailIntroduction 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étailProgrammer 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étailProtection 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étailJava 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étail24/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étailProgrammation 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étailHé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étailAvant-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étailCours 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étailINTERNET 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étailKAJOUT 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étailProgrammation 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étailTUTORIAL 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étailFormation 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étailFileMaker 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étailQuelques 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étailJava 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étailLa 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étailMandataires, 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étailIntroduction à 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étailChapitre 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étailSé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étailInstitut 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étailPatrons 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étailDocumentation 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étailServeur 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étailFirewall 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étailA 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étailCalcul 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étailFORMATION 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étailJOnAS 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étailLES 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étailLe 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étail4. 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étailE-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étailSÉ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étailCré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étailMise 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étailProxy 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étailRé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étailPrototype 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étailFOIRE 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étailInstitut 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étailSage 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étailTP 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étailApplication 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étailSupplé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étailMISE 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étailTable 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étailConfigurer 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étailUtilisation 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étailPremiers 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étailNetwork 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