[APPLICATON REPARTIE DE VENTE AUX ENCHERES]



Documents pareils
Remote Method Invocation (RMI)

RMI le langage Java XII-1 JMF

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation en Java (RMI)

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

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

Développement Logiciel

Projet CORBA : gestion de supermarchés

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)

Intergiciel - concepts de base

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

Composants Logiciels. Le modèle de composant de CORBA. Plan

Calcul Parallèle. Cours 5 - JAVA RMI

Programmation répartie RPC & RMI

Projet gestion d'objets dupliqués

CORBA. (Common Request Broker Architecture)

Conception de serveurs d'applications ouverts

SPECIFICATIONS TECHNIQUES : Gestion des Médicaments et des commandes de médicaments

OS Réseaux et Programmation Système - C5

Programmation réseau avec Java. 3/7 RMI, un peu de sécurité et CORBA

OpenPaaS Le réseau social d'entreprise

Le Modèle de Sécurité dans JAVA

Java - RMI Remote Method Invocation. Java - RMI

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

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Sécurisation des architectures traditionnelles et des SOA

Programmation Réseau SSH et TLS (aka SSL)

Alfstore workflow framework Spécification technique

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

Une introduction à la technologie EJB (2/3)

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Chapitre 10. Les interfaces Comparable et Comparator 1

JOSY. Paris - 4 février 2010

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Patrons de Conception (Design Patterns)

2 Chapitre 1 Introduction

Bases de données et interfaces Génie logiciel

Web Tier : déploiement de servlets

Java Naming and Directory Interface

Gestion distribuée (par sockets) de banque en Java

ENVOLE 1.5. Calendrier Envole

EJBCA PKI Open Source

Fédération de compte entre Votre compte Association (VCA) et l application de dépôt des comptes annuels des associations

Architecture Orientée Service, JSON et API REST

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Modèle client-serveur Plan. Modèle client-serveur. Modèle client-serveur définition. Modèle client-serveur communication par messages.

Corrigé des exercices sur les références

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Programmation par composants (1/3) Programmation par composants (2/3)

Synchro et Threads Java TM

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

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

1. DÉMARRER UNE SESSION SÉCURISÉE SUR LE MACINTOSH SESSIONS DES APPLICATIONS CLIENTES SUR LE MACINTOSH... 5

Législation. Loi anti-terrorisme

IRL : Simulation distribuée pour les systèmes embarqués

Robot de Téléprésence

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

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

Cisco CCVP. Gestion des comptes d utilisateurs

Chapitre 1 Windows Server

1. Présentation de WPA et 802.1X

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

SIMPLE CRM ET LA SÉCURITÉ

TP2 : Client d une BDD SqlServer

Contenu de la version 3.4 C I V I L N E T A D M I N I S T R A T I O N

INSTALLATION D UN PORTAIL CAPTIF PERSONNALISE PFSENSE

Auto-évaluation Programmation en Java

.NET remoting. Plan. Principes de.net Remoting

Etude critique de mécanismes de sécurité pour l architecture Jini

Projet de programmation (IK3) : TP n 1 Correction

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

IPS-Firewalls NETASQ SPNEGO

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

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

Programme des Obligations d épargne du Canada. Guide d utilisation du serveur FTPS. Version 2.4

EMV, S.E.T et 3D Secure

domovea Portier tebis

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

La carte à puce. Jean-Philippe Babau

Introduction aux. services web 2 / 2

L Authentification de Librex dans Active Directory (Kerberos)

L'AAA, késako? Bruno Bonfils, fr.org>, Novembre Sous ce terme d'apparence barbare est regroupé l'ensemble des concepts suivants :

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

Flux de données Lecture/Ecriture Fichiers

Cours 14. Crypto. 2004, Marc-André Léger

Authentifications à W4 Engine en.net (SSO)

Gestionnaire d'appareil à distance de Bell Foire aux questions

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

Un ordonnanceur stupide

Tutoriel d installation de Hibernate avec Eclipse

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

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

Certificat Big Data - Master MAthématiques

Design patterns. Design patterns - définition. Design patterns - avantages

Système de Virtualisation pour une application de gestion commerciale d entreprise

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Transcription:

2012 Polytech Nice- Sophia El Hajji Khalil Yousfi Hichem SI4 - Log [APPLICATON REPARTIE DE VENTE AUX ENCHERES]

Sommaire Architecture de l application... 3 Le Serveur... 3 Le Client... 4 Passage en CORBA... 4 Gestion de la sécurité... 5 JAAS... 5 SSL... 6 Difficultés rencontrées... 6 Limitations de notre projet... 6 Ressources à configurer... 7 Annexes... 8 IServiceBasic.idl... 8 Captures d écran... 10 2

Architecture de l application Notre application suit l architecture principale des approches Objet de système Client/serveur. Elle se compose d un serveur qui permet à l utilisateur d effectuer différentes actions relatif à son statut (Vendeur, acheteur ou simple utilisateur). Les donnés liées au système sont générés depuis et vers des fichiers binaires grâce à la sérialisation. Figure 1 - Structure globale Le Serveur On a utilisé deux interfaces : La première qui expose les méthodes basics, qui nécessite ne pas d authentification à savoir : public IService logon(string login,string password) throws RemoteException, LoginException ; public ArrayList<Enchere> getlistannonces(string motclef) throws RemoteException; public ArrayList<Enchere> getlistannonces() throws RemoteException; La seconde qui nécessite une authentification, avec les méthodes suivante : public int encherir(enchere enchere,int offre, IClient referenceclient,string nomclient) throws RemoteException ; public void deposerenchere(enchere enchere) throws RemoteException ; 3

La méthode logon(..) nous retourne la seconde interface pour nous permettre d appeler des méthodes plus intéressantes qui nécessitent une préalable authentification. Notre méthode logon(..) nous retourne a chaque appel qui réussi (c est à dire le l utilisateur arrive à s authentifier) une seul et même référence du stub correspondant à IService grâce au design pattern Singleton, pour permettre à tous les utilisateurs connectés d interagir avec le même objet Serveur même de façon concurrente, donc avoir accès à la même liste d offres. Pour gérer la concurrence on a définit les méthodes encherir(..) et deposerencher(..) en synchronized(..) pour gérer les accès simultanés et garder une cohérence au niveau des données. On a défini les méthodes des deux interfaces dans une seule classe Serveur. Nous avons fait attention de sauvegarder toutes les données après les appels des méthodes qui agissent sur les données partagés, ainsi on peut tout récupérer même si le serveur s éteint accidentellement. Le Client Notre client est un client lourd codé en Java Swing. Depuis ce client on peut accéder au méthodes distante des deux interfaces en fonction de notre profil (authentifié ou pas). Sans authentification on peut : Consulter la liste de toutes les annonces Faire une recherche avec des mots clefs sur cette liste Consulter des détails sur chaque offre. Saisir un nom et mot de passe en vue d une authentification Avec authentification on peut : Enchérir sur offre (Onglet Acheteur) Déposer une offre (Onglet Vendeur) Avoir des détails supplémentaires sur chacune des offres Se déconnecter Passage en CORBA Coté server : Il faut faire en sorte que l objet Serveur, dans notre cas celui qui implémente les «IService» et «IServiceBasic», extends «PortableRemoteObjetct» à la place de «UnicastRemoteObject». 4

Ensuite, se positionner dans le bin, puis générer les fichiers IDLs nécessaire grâce à la -- commande «rmic -idl projet.copyofserveur», on aura besoin principalement de «IServiceBasic.idl», c est celui qui expose les méthodes de recherche d annonces. Coté Client Pour générer le client CORBA, on fait appel à la commande «idlj fclient IServiceBasic.idl» Pour récupérer, le stub du serveur, on n utilise plus la méthode lookup, mais plutôt «(IServiceBasic) PortableRemoteObjetct.narrow(ObjRef, IServiceBasic.class)» Gestion de la sécurité Lors de l implémentation de l application, nous avons traité deux aspects liés à la sécurité. En effet, dans un premier temps nous nous sommes occupés de l authentification des utilisateurs. Il a ensuite fallu sécuriser l échange de données entre le client et le serveur. JAAS Pour authentifier les utilisateurs nous utilisons JAAS, une fois cette authentification effectuée par l objet serveur, une référence de l objet distant est retournée au client permettant ainsi à l utilisateur d accéder à des méthodes spécifique pour l achat et la vente d objet. (Le fait de consulter des annonces est permis pour les utilisateurs non authentifiés et à fortiori pou ceux qui le sont). Figure 2 JAAS Précisément c est la méthode logon(string username, String Password) et le module de Login qui permette cette authentification. Dans notre application nous négligeons 5

la partie de JAAS qui permet l autorisation et par exemple une notion d administrateur n est pas présente. SSL Pour sécuriser les données échangées nous utilisons les sockets sécurisées à l aide du pattern Factory. Il a aussi fallu générer un Keystore contenant un certificat qui permet l authentification mutuelle des 2 extrémités d un socket pour pouvoir ouvrir une session SSL. Pour ce nous avons utilisé la commande suivante «keytool -genkey keystore mykeystore.ks». Difficultés rencontrées Nous avons essayer d utiliser des images dans les enchères, mais nous avons pas réussi à les sérialiser, malgré que la class ImageIcon soit serializable, on a toujours pas compris pourquoi, peut être un erreur dans une misé à jour de l API java d après quelques forums. Mise à jour de l interface graphique quand des modifications sont apportés sur une enchère ou la liste des offres Permettre au serveur de contacter le meilleur offrant à la fin de l enchère Tester l application sur deux machine distante, le client d un coté et le serveur de l autre Mise en place du JAAS sur architecture, vu que notre objet distant Serveur implémente deux interfaces en même temps. Limitations de notre projet Nous ne pouvons pas supprimer une enchère une fois qu elle terminé. On ne peut pas faire montrer les enchères indéfiniment, une erreur de java.lang.numberformatexception est générée dès lors qu on dépasse les 10000000 euro! On ne vérifie pas le type des informations saisie pas l utilisateur, on suppose qu il saisi les bons types. On n as de base de données pour vérifier le login et le mot de passe, on test juste des valeurs dans une condition «if» 6

Ressources à configurer Au niveau du MainServeur -Djava.security.auth.login.config=login.conf -Djava.security.policy=server.policy - Djavax.net.ssl.keyStore=myKeystore.ks -Djavax.net.ssl.keyStorePassword=test1234 Au niveau du MainClient -Djavax.net.ssl.trustStore=myKeystore.ks Login et mot de passe Login : test mot de passe : test Login : test1 mot de passe : test 7

Annexes IServiceBasic.idl /** * projet/iservicebasic.idl * Generated by rmic -idl. Do not edit * jeudi 31 mai 2012 03 h 39 CEST */ #ifndef java_util_arraylist module java { module util { valuetype ArrayList; }; }; #endif #ifndef projet_iservice module projet { interface IService; }; #endif #include "javax/security/auth/login/loginex.idl" #include "orb.idl" #ifndef projet_iservicebasic #define projet_iservicebasic module projet { 8

interface IServiceBasic { ::projet::iservice logon( in ::CORBA::WStringValue arg0, in ::CORBA::WStringValue arg1 ) raises ( ::javax::security::auth::login::loginex ); ::java::util::arraylist getlistannonces( in ::CORBA::WStringValue arg0 ); readonly attribute ::java::util::arraylist listannonces; }; #pragma ID IServiceBasic "RMI:projet.IServiceBasic:0000000000000000" }; #include "java/util/arraylist.idl" #include "projet/iservice.idl" #endif 9

Captures d écran 10

11

12