Kiwi-Trip Application de tourisme pour Android



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

Créer et partager des fichiers

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

Tour d horizon des différents SSO disponibles

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

TigerPro CRM Application mobile

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

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

SITE WEB E-COMMERCE ET VENTE A DISTANCE

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

Joomla! Création et administration d'un site web - Version numérique

GLPI (Gestion Libre. 2 ième édition. Nouvelle édition. de Parc Informatique)

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

Programmation Web. Madalina Croitoru IUT Montpellier

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

Documentation Honolulu 14 (1)

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

MANUEL UTILISATEUR. Application 4trip

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

LemonLDAP::NG / SAML2. Xavier GUIMARD (Gendarmerie Nationale) Clément OUDOT (Groupe LINAGORA)

Description de la maquette fonctionnelle. Nombre de pages :

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

Guide d utilisation. Version 1.1

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

Compte Rendu d intégration d application

CONTACT EXPRESS 2011 ASPIRATEUR D S

L accès à distance du serveur

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

Application de lecture de carte SESAM-Vitale Jeebop

Hébergement de sites Web

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

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Introduction. aux architectures web. de Single Sign-On

inviu routes Installation et création d'un ENAiKOON ID

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

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

Service d'authentification LDAP et SSO avec CAS

Atelier Le gestionnaire de fichier

Banque de données d offres & carte web interactive d offres

Sage CRM. 7.2 Guide de Portail Client

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

Qu est ce que Visual Guard. Authentification Vérifier l identité d un utilisateur

Formation. Module WEB 4.1. Support de cours

Edutab. gestion centralisée de tablettes Android

Qu'est ce qu'une Fédération d'identités? Définitions Fonctionnement de base Fonctionnement détaillé Les principaux composants

Protection des protocoles

Formation en Logiciels Libres. Fiche d inscription

Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales

Le stockage local de données en HTML5

Livre Blanc WebSphere Transcoding Publisher

Administration du site

Serveur de travail collaboratif Michaël Hoste -

Formation : WEbMaster

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

MESSAGERIE BUREAU AGENDA VIRTUEL. Votre nouvelle messagerie COLLABORATIVE GUIDE PRATIQUE. Membre de

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

ESPACE COLLABORATIF SHAREPOINT

Android 4 Les fondamentaux du développement d'applications Java

1. Installation du Module

Architecture et infrastructure Web

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

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

Devenez un véritable développeur web en 3 mois!

Bases de données et interfaces Génie logiciel

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Objet du document. Version document : 1.00

Manuel du composant CKForms Version 1.3.2

Maarch V1.4

Alfresco et TYPO3 Présenté par Yannick Pavard dans le cadre des rencontres WebEducation Février 2008

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

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Espace de travail collaboratif

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

CAHIER DES CHARGES SITE WEB : Steve Mind Magicien Close-up & Mentaliste - 1 -

Comment utiliser mon compte alumni?

Gestion d'un parc informatique avec OCS INVENTORY et GLPI

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

GPI Gestion pédagogique intégrée

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

Optimiser pour les appareils mobiles

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Introduction à. Oracle Application Express

Manuel d utilisation de la plate-forme de gestion de parc UCOPIA. La mobilité à la hauteur des exigences professionnelles

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

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

JOnAS Day 5.1. Outils de développements

Petite définition : Présentation :

Application web de gestion de comptes en banques

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

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Guide de l utilisateur du Centre de gestion des licences en volume LICENCES EN VOLUME MICROSOFT

Keyyo Guide de mise en service CTI / API / TAPI Keyyo

Gestion collaborative de documents

Transcription:

Master 2 - Projet Kiwi-Trip Application de tourisme pour Android Auteurs : Pierre Martin Fabien Monnet Tuteur de projet : Christophe Lang Année 2012-2013 1

Introduction I. Présentation du projet existant 1. Fonctionnalités a. L application b. Le site internet 2. Solutions techniques a. MySQL b. Java EE c. Communication application - serveur d. Sauvegarde des traces 3. Cahier des charges II. Gestion des médias 1. Ajout d image depuis l application a. Fonctionnalité b. Développement 2. Récupération des données sur le serveur 3. Ajout d image depuis le site internet 4. Visualisation des photos sur le site internet 5. Visualisation des photos sur l application III. Lissage et filtrage de la trace GPS 1. Points incohérents 2. Réduction du nombre de points obtenus 3. Gestion de l arrêt de l utilisateur IV. Système d authentification sécurisé 1. L authentification à l heure actuelle 2. Système d authentification Kerberos 3. Système d authentification CAS 4. LemonLDAP::NG V. Visite interactive 1. Visualisation de voyages 2. Visualisation de points d intérêts VI. Interface d administration de points d intérêts 1. Administration sur le site internet 2. Visualisation sur l application Conclusion 2

Introduction Android est un système d exploitation pour smart-phones et tablettes. Il a été développé par Open Handset Alliance qui est dirigé par Google et d autres compagnies de logiciel et de télécommunication. Il a été lancé en 2007 et il est aujourd hui le système utilisé par le plus grand nombre de dispositifs (Tablettes et téléphones). Android permet à l utilisateur de téléphoner, d envoyer différentes sortes de messages, recevoir des emails, prendre des photos ainsi que des vidéos, aller sur internet etc. Android propose également un grand nombre d application diverses et développés par d autres utilisateurs où d autres compagnies car Google offre aux développeurs la possibilité de créer facilement des applications grâce au SDK gratuit. Android est écrit en Java, et le SDK est une version modifiée de Java. Un grand nombre de smart-phones possède la fonctionnalité du GPS et Android l utilise afin de permettre aux utilisateurs d avoir des applications GPS afin de se localiser où encore de suivre un itinéraire. Le GPS est très utilisé lors de voyage, vous spécifiez une adresse où vous souhaitez vous rendre et vous n avez ensuite qu à suivre le chemin que l application vous fournit. Cela est très utile lors d un voyage en terre inconnue, mais cela implique de connaître tout de même les endroits intéressant à visiter. Mais pourquoi ne serait-il pas possible d avoir une application qui permet de trouver des lieux intéressants et qui vous aide à vous y rendre? C est cette question qui nous a amené à créer le projet Kiwi-Trip. Une application communautaire qui permet aux utilisateurs de réaliser des parcours ou des voyages en utilisant la géolocalisation (sauvegarde de la trace GPS), et de les partager avec les autres ainsi que de guider les utilisateurs à trouver les lieux intéressants. Kiwi-Trip est composé de deux parties : Une application pour Android et un site internet. Ce type d application existe mais elles se focalisent souvent sur une activité comme le sport et la plupart du temps sont payantes. Runner où mtrip par exemple sont deux applications qui ressemble à Kiwi-Trip mais sont chères et n insistent pas sur l aspect communautaire. Le projet Kiwi-Trip a démarré l an dernier lors du projet tutoré de Master 1. Durant notre Master 2, nous avons voulus poursuivre sur ce projer afin de l améliorer. Ce rapport présentera tout d abord le projet existant puis expliquera les différentes modifications que nous y avons apporté. 3

I. Présentation du projet existant 1. Fonctionnalités a. L application L application doit permettre à un utilisateur de sauvegarder ses parcours et d ajouter des points d'intérêts. Une fois sauvegardé, les parcours et les points d'intérêts, sont accessibles en ligne afin des les partager avec d autres utilisateurs. Les fonctionnalités réalisés sont les suivantes : Création d un compte utilisateur Afin d accéder à l application, il faut tout d abord créer un compte. Il est possible de créer un compte directement depuis l application. L utilisateur doit saisir au minimum son adresse email, un nom d utilisateur et un mot de passe. Il peut également renseigner son nom de famille, son prénom, sa date de naissance, sa ville ainsi qu une description. Le compte est créé pour l application mais également pour le site internet. Les informations sont sauvegardées sur le serveur. mais également sur le téléphone afin de permettre à l utilisateur de ne pas être obligé de renseigner la page de login à chaque fois qu il ouvre l application. Dans ce cas, lorsqu il ouvre l application, celle ci contacte le serveur afin de vérifier le nom d utilisateur et le mot de passe. Si l utilisateur souhaite se connecter avec un autre compte, il peut supprimer ces informations dans les préférences de l application. 4

Création d un parcours en utilisant la géolocalisation GPS ainsi que mise en ligne de parcours L utilisateur a la possibilité de créer un parcours en démarrant le service de traçage GPS sur une page de l application qui affiche la GoogleMap. L application sauvegarde tous les points où l utilisateur va dans la base de donnée locale. Les informations sauvegardées pour un point GPS sont la latitude, la longitude et l altitude. L utilisateur peut ajouter un point d intérêt sur son parcours. L utilisateur a également la possibilité de stopper le service quand il le souhaite. A ce moment, il peut ensuite uploader son parcours sur le server où poursuivre le traçage GPS. Sur la map, il peut également visualiser la trace qu il a effectué jusqu à l instant présent ainsi que les points d intérêts. Création de points d'intérêts La création d un point d intérêt peut se faire de deux façons. Premièrement, l utilisateur veut ajouter un point d intérêt sans effectuer un parcours. Dans ce cas, le point d intérêt n est lié à aucun parcours. La deuxième façon est d ajouter un point d intérêt durant le traçage GPS d un parcours. Le point d intérêt est alors lié au parcours réalisé dans le même temps. La création d un point d intérêt contacte directement le serveur pour sauvegarder le point d intérêt. Si c est 5

une création durant un parcours, le serveur renvoie à l application l identifiant du point d intérêt dans la base de donnée afin de pouvoir l associer lorsque l utilisateur partage son parcours. b. Le site internet Les principales fonctionnalités proposées par l application sont également faisable sur le site web, on peut ajouter un point d intérêt, créer un voyage, en modifier un existant, ajouter des photos etc... Les fonctionnalités réalisés sont les suivantes : Création d un compte utilisateur De même que pour l application, l utilisateur rentre ses informations personnelles et son compte est créé, il est nécessaire de rentrer au moins les champs nom d utilisateur, email et mot de passe pour créer un compte. Le login se fait ensuite grâce au nom d utilisateur et du mot de passe. Création et modification d un parcours 6

Il est possible de créer un voyage directement sur le site, en réalisant le tracé à la main en cliquant directement sur une map sur tous les points composant le parcours. Au moment de la création du voyage, l utilisateur doit renseigner les champs décrivant ce dernier : Nom du voyage Descritption Difficulté (entre 1 et 5) Catégorie La longueur du parcours est calculée automatiquement à chaque ajout d un nouveau point. Une fois le voyage enregistré, l utilisateur peut le retrouver dans la liste de tous les voyages. L ajout de points d intérêts à un voyage se fait sur la page d édition de voyage, il suffit de placer un marqueur sur la map, saisir son nom et sa description et le point d intérêt est automatiquement lié au voyage. Cette page permet également de modifier les informations relatives à ce voyage. On peut également éditer la trace composant le voyage, ajouter des points et en supprimer. 7

Parcours de tous les voyages Cette page permet de visualiser sous forme d une liste tous les voyages créés et enregistrés dans la base de données. Pour l instant tous les voyages contenus dans la base sont affichés la fonction de filtre n a pas encore été développée. Cette fonctionnalité pourra être rapidement implémentée car il suffira de modifier la requête SQL effectuée au moment de rapatrier tous les voyages en ne sélectionnant qu un titre voulu ou une catégorie spécifique. Un clic sur un des voyages mène au détail de ce voyage. La page de détail d un voyage affiche sous la même forme que ci dessus l image du voyage ainsi que les informations essentielles mais en plus affiche la trace sur une map. La liste des points d'intérêts associé à ce voyage est également affichée. Pour chacun de ces points on voit la photo principale ainsi que les informations de base. 8

2. Solutions techniques a. MySQL Tant au niveau du site qu'au niveau de l'application, il est nécessaire de sauvegarder un grand nombre de données, informations sur les utilisateurs, sur un voyage, sur un point d'intérêts etc. La présence d'une base de données est donc indispensable, notre choix s'est naturellement porte vers système de gestion de base données mysql. En effet, nous avions déjà précédemment utilisé cet outil et sommes assez familier avec. De plus il est gratuit, très largement utilise de par le monde et donc très bien documenté. Mysql est facilement utilisable avec Java, en utilisant le connecteur JDBC, il a donc été assez simple de l'intégrer a notre environnement de développement. Explications de la conception de la base de données Nous avons structures dans une base toutes les données utiles et essayant d'avoir une pensée très large qui permette de faire évoluer le système sans totalement changer la base. Par exemple, il n'est possible d'associer que des photos a un point d'intérêts mais par la suite, il serait bien de pouvoir y associer des vidéos ou commentaires audio. Nous avons donc crée une table MEDIAS ainsi qu'une table MEDIAS TJ (table de jointure) reliées aux tables TRIPS et POIS. Ainsi nous n'aurons aucune modifications a faire lorsque nous désirerons inclure ces nouveaux types de médias. b. Java EE Le site web réalisant un certain nombre de traitements, notamment des connexions a la base de données, la question du serveur web est très importante. Notre choix s'est tourne vers JavaEE d'un point de vue purement pédagogique. En effet, nous connaissions déjà le langage php qui aurait été une autre alternative mais nous avons choisi de découvrir les fonctionnalités cote serveur de Java : Servlets et JSP. Définition Servlet (Journaldunet) : Programme Java qui s'exécute dynamiquement sur le serveur Web et permet l'extension des fonctions de ce dernier, typiquement : accès a des bases de données, transactions d'e-commerce, etc. Une servlet peut être chargé automatiquement lors du démarrage du serveur Web ou lors de la première requête du client. Une fois charges, les servlets restent actifs dans l'attente d'autres requêtes du client. Définition JSP (Journaldunet) : Extension de la technologie Java Servlet de Sun qui permet de programmer simplement l'affichage de contenus dynamiques sur le Web. JSP consiste en une page HTML incluant du code Java qui s'exécutera soit sur le serveur Web, soit sur le serveur d'application. Le langage HTML décrit la manière dont s'affiche la page, le code Java servant a effectuer un traitement, par exemple récupérer les informations nécessaires pour effectuer une requête dans une base de données. Les pages faisant simplement un appel a la base de données sont des pages JSP. La structure de base de la page n'est autre que du code HTML "classique", puis les éléments variant sont insérés dynamiquement par des fonctions Java. Les pages plus complexes nécessitant une 9

intervention de l'utilisateur sont des pages jsp également mais le traitement ne s'effectuant pas au chargement de la page (il s'effectue suite a une action de l'utilisateur), elle font appel a une servlet qui leur renvoie les données demandées. Cet appel est un appel asynchrone réalisé par l'objet javascript XMLHTTPRequest, cette technique est appelée Ajax. Principe Ajax (Wikipedia) : En utilisant Ajax, le dialogue entre le navigateur et le serveur se déroule la plupart du temps de la manière suivante : un programme écrit en langage de programmation JavaScript, incorpore dans une page web, est exécute par le navigateur. Celuici envoie des demandes de calcul au serveur Web, puis modifie le contenu de la page actuellement affichée par le navigateur Web en fonction du résultat reçu du serveur, évitant ainsi la transmission et l'affichage d'une nouvelle page. Cette méthode permet en effet d'éviter le rechargement de la page a chaque action de l'utilisateur, ce qui est assez lourd, notamment lorsque les actions sont fréquentes comme lors de la création d'un voyage. c. Communication application - serveur Lors de son utilisation, l'application enregistre beaucoup d'informations, notamment la liste des points d'une trace, ainsi que le nom, la description d'un voyage, et de même pour un point d'intérêt. Ces informations sont stockées en local sur le téléphone puis, sont transmises au serveur, il fallait donc trouver un moyen efficace de communiquer entre l'application et le serveur. Après quelques recherches, nous nous sommes dirigés vers une solution, l'appel d'une page sur le serveur par la méthode HTTP POST. La solution consiste a lui envoyer les données nécessaires a la composition de la réponse et réceptionner cette dernière. Pour cela, un protocole a dû être définit. Il fallait des données structurées et donc il y avait la possibilité de se baser sur XML qui est facile a lire et reconnu par tous les langages informatiques. Cependant, ayant déjà vu ce format lors de l'apprentissage de licence, il était intéressant de voir d'autres formats de données. C'est pour cette raison que JSON a été choisi, moins facile a lire mais également moins verbeux que XML (Les balises XML sont redondantes). Les éléments de JSON : - Un objet : contient des objets ou des variables. - Une variable scalaire : Number, String, Boolean. - Un tableau. - Les valeurs littérales : null, true, false, "chaîne de caractères", et les valeurs numériques. 10

Exemple de fichier JSON : { "menu": "Fichier", "commandes": [ { "title": "Nouveau", "action":"createdoc" }, { "title": "Ouvrir", "action": "OpenDoc" }, { "title": "Fermer", "action": "CloseDoc" } ] } Plusieurs librairies sont par ailleurs disponibles en JAVA an de créer ou parser un fichier JSON. Le choix s'est porté sur la librairie Jackson qui permet également de faire correspondre sans grande difficultés un fichier JSON avec une classe JAVA. Ceci est très utile dans notre cas lorsqu'il faut créer des fichiers relativement longs comme un voyage avec tous ses points de passage associés. d. Sauvegarde des traces En ce qui concerne la sauvegarde des traces sur le serveur, comme vu précédemment, on ne sauve pas tous les points d'une trace dans la base de données : en effet, une trace de taille moyenne, environ 5 kms sauvegardée par l'application comptera pas loin de 500 points, ce qui aurait très rapidement fait des tables énormes et disproportionnées. De plus nous avions prévu d'intégrer la possibilité d'exporter ses voyages aux formats standards tels que le format gpx des gps Garmin, ce qui nous a amené a stocker les traces directement au format gpx dans dossier sur le serveur prévu a cet effet. Chaque chier gpx portant le nom de trace i.gpx ou i est le numéro d'id du voyage dans la base de données. Definition (Wikipedia) : GPX (GPS exchange Format) est un format de fichier permettant l'échange de coordonnées GPS. Ce format permet de décrire une collection de points utilisables sous forme de "waypoint", "track" ou "route". Ce format est ouvert. Ce format étant basé sur XML il suffit d'avoir un parseur XML pour pouvoir effectuer tous les traitements nécessaires de création/modification ou de lecture de fichiers. Nous avons choisi ici DOM qui est intégré à Java. A chaque création de voyage un fichier correspondant est créé, et à chaque vue sur la map d'un voyage le fichier correspondant est lu par le serveur. 11

3. Cahier des charges L objectif de notre projet est d apporter des améliorations tant sur l application que sur le site internet. Différents modules de travail ont étés définis. Voici leur contenus : 1. Gestion des médias - Permettre à l utilisateur d ajouter des photos sur l application concernant un point d intérêt et sur le site internet concernant un point d intérêt et un voyage. 2. Lissage de la trace GPS - Suppression des points superflus enregistrés lors du traçage de l utilisateur afin d avoir une trace plus fluide et plus lisse. 3. Sécurité et authentification des utilisateurs - Gestion des droits utilisateurs, - Sécurisation de l accès aux données. 4. Visite interactive - Donner à l utilisateur des informations sur le lieu dans lequel il se trouve (points d intérêts aux alentours). 5. Interface d administration de points d intérêts - Permettre à la personne responsable d un lieu de configurer l affichage des informations concernant ce lieu (ex : Horaires, prix, plan, adresse). La suite du rapport détaille point par point le travail réalisé. 12

II. Gestion des médias Afin de fournir à l utilisateur des fonctionnalités suffisamment complètes pour qu il ait envie de partager ses voyages, nous avions pour idée dans la première partie du projet d offrir à l utilisateur d ajouter des médias concernant ses voyages. C est une fonctionnalité majeure du projet car les photos peuvent êtres couplées aux voyages mais également aux points d'intérêts définis par les utilisateurs. Ce qui donne une idée plus précise sur le lieu à découvrir. Autre que du texte de description. Nous avons donc décidé de l inclure dans cette deuxième partie du projet. Comme dit précédemment, les images peuvent êtres associées soit à un voyage, soit plus précisément à un point d intérêt. L'objectif est donc double : - Permettre à l utilisateur d illustrer son voyage en y ajoutant des photos sur le site internet. - Permettre à l utilisateur, lorsqu il définit un nouveau point d intérêt, aussi bien sur l application que sur le site internet, d y ajouter des photos. De même, l utilisateur doit pouvoir ensuite visualiser les photos sur le site internet et sur l application mobile. 1. Ajout d image depuis l application a. Fonctionnalité Pour fournir à l utilisateur de plus amples fonctionnalités, nous avons décidé de permettre à l utilisateur d ajouter des photos relatives à un point d intérêt depuis l application mobile. De ce fait, lorsqu un utilisateur souhaite créer un point d intérêt (lors d un parcours où non), il a également la possibilité d uploader directement une photos. b. Développement La communication entre l application mobile et le serveur de la base de donnée qui enregistre les données des utilisateurs s articule autour du format JSON. Par exemple, lorsque l utilisateur crée un point d intérêt, l application envoie à une page web (plus précisément une servlet) les informations relatives à ce point et la page va ensuite enregistrer les informations dans la base de données. 13

Les informations prennent la forme suivante : { "iduser " : "1", "name " : "La citadelle", "description ": "Une citadelle de Vauban", "categorie ": "3", "subcategorie ": "2", "longitude ": "47.14541", "latitude ": "6.01777'", "altitude ": "300" } Cependant, l envoie d une image sur le serveur ne peut s effectuer de la même manière. Nous avons tout d abord réfléchis à la forme que prendrait notre requête. Afin de pouvoir transmettre l image sur le canal de connexion, cela exige un encodage. Pour cela, l encodage Base64 peut être utilisé. Base64 est un codage de l information utilisant 64 caractères qui est utilisé principalement pour la transmission de messages. L intérêt de l'encodage base64 se trouve dans la représentation de données binaires. Lorsque l on veut représenter des données binaires (comme dans notre cas une image) dans un document textuel (dans notre cas notre requête). Cependant, cette solution n a pas été satisfaisante pour la raison suivante : L encodage en base64 augmente considérablement la taille des données du fait des caractères de codages. Ce qui se traduit dans notre cas par une photo tronquée. Signifiant que le serveur ne recevait pas toutes les données que l application lui envoyait qui étaient apparemment trop importantes. 14

Nous avons donc pensé compresser l image afin de réduire sa taille. Mais afin d obtenir une image non tronquée, la qualité de l image compressé n était pas satisfaisante. Après de nouvelles recherches, nous nous sommes donc tourné vers une autre solution : La méthode Multipartpost. C est une méthode différente de la méthode POST d envoi d informations (utilisée précédemment) et qui est destinée à être utilisée lorsque la requête nécessite des données binaires à envoyer comme le contenu d'un fichier. Dans notre cas, une image. Apache fournit une implémentation de cette méthode coté client ainsi que coté serveur. La requête est composée de deux types de paramètres, StringPart et FilePart. Dans notre cas, nous définissons un paramètre FilePart qui contient le fichier correspondant à l image ainsi que plusieurs paramètres StringPart correspondants aux informations liées à l image comme l id de l utilisateur, l id du point d interêt lié à l image et la description. 15

Toutes ces informations sont ensuite récupérées sur le serveur. 2. Récupération des données sur le serveur Coté serveur la librairie Apache FileUpload a donc été utilisée, cette librairie est assez simple à utiliser et très bien documenté avec une javadoc très complète. On teste si la requête est bien une requête multipart et si c est le cas on la traite. On itère sur tous les items de cette requête, d un coté sont récupérés les attributs (isformfield), de l autre les datas (ici notre image). On crée ensuite sur le serveur un fichier grâce à l item contenant notre image. Sur le serveur, l image n est pas stockée dans le répertoire web du site, elle l est dans un dossier à part entière. Ainsi pour accéder à une image, depuis le site ou l application, il faut passer par une servlet créée à cet effet. Cela permet de bien séparer la partie site et la partie donnée. De plus s il sévérait qu une trop grande quantité d image encombre le serveur et qu il faille déporter le stockage des images sur un autre serveur, tout serait déjà en place, il suffirait de modifier l url dans la servlet de récupération des images. 16

3. Ajout d image depuis le site internet L implémentation de la fonction d upload d images a été d abord mise en place sur l application puis sur le site Internet. La récupération du fichier image et des données correspondantes (id de l utilisateur, id du POI/Trip) ainsi que le traitement associé étant déjà en place il a été très simple de développer cette partie d upload depuis le site Internet. Il a suffit d utiliser la même servlet de récupération et de respecter le même protocole. Cette fonctionnalité du site web est accessible sur les pages edit_poi et edit_trip est est juste constituée d un formulaire html ayant comme propriété d encodage multipart/form-data. <form action="../uploadpic" method="post" enctype="multipart/form-data"> Ce formulaire contient lui même un champ input de type file permettant à l utilisateur de choisir l image qu il souhaite ajouter. L id de l utilisateur et du POI/Trip est stocké dans des champs input de type hidden généré par le serveur à l envoi de la page. 4. Visualisation des photos sur le site internet Visualisation détaillée d un point d intérêt 17

La possibilité d ajouter plusieurs photos pour un point d intérêt ou pour un voyage a engendré une adaptation graphique sur le site internet. Une page de visualisation détaillée d un POI a été ajoutée, cette page affiche les informations de ce point : nom, description, catégorie et sous catégorie. Toutes les images relatives à ce point d intérêt sont également visible en miniature sur cette page ainsi que tous les commentaires associés, il est possible pour chaque utilisateur identifié d ajouter un commentaire. Un clic sur une image miniature ouvre un slideshow permettant d afficher l image à sa taille réelle et de naviguer entre toutes les images en taille réelle. L utilisateur créateur de ce point d intérêt peut le modifier grâce à un lien le redirigeant sur la page adéquat. Cette page ressemble à la page de visualisation ci-dessus à la seule différence que chaque information est éditable, il peut changer la catégorie, la description et ajouter des photos. Le nom d un point d intérêt ne peut être changé. Visualisation de tous les points d intérêts 18

Il est possible de visualiser directement sur la map tous les points d intérets enregistrés. La localisation de chacun sous forme d un marqueur ainsi que les informations essentielles s affichant dans une info-bulle lorsque l on clique sur le marqueur, un lien vers la page de détail des points d'intérêts est également présent dans cette info-bulle. 19

5. Visualisation des photos sur l application Lorsque l utilisateur effectue une recherche de point d intérêt ou de voyage comme par exemple avec la fonctionnalité What s arround qui permet de visualiser les différents points d intérêts proche de la localisation de l utilisateur, la liste de points d intérêts correspondants s affiche. Lors de cette visualisation, l application envoie une requête au serveur afin de récupérer les informations relatives aux points d intérêts ou aux voyages. La gestion de l affichage des images doit donc être associé à cette requête. Cependant, le fait de récupérer toutes les images de chaque point peut prendre un certain temps. C est pourquoi une méthode a été trouvée afin d afficher les images de manière asynchrone sans pénaliser l utilisateur dans la visualisation. L application affiche donc une liste sans les images et ensuite, l application va récupérer une à une les images de chaque item de la liste et les afficher dans le même temps. 20

21

Cette méthode est réalisation grâce à une classe de Android : AsyncTask qui permet de réaliser des tâches de manière asynchrone, à la manière des Threads. L avantage de l AsyncTask est sa simplicité d utilisation et d implémentation. Le Thread secondaire est créé automatiquement et la communication entre les différents Threads est simplifiée. 22

III. Lissage et filtrage de la trace GPS La trace GPS créée lors d un parcours d un utilisateur peut comporter certaines anomalies dûes notamment à la précision du GPS. Par exemple, si l utilisateur effectue une ligne droite lors de son parcours, la trace obtenue ne le sera pas pour autant (c est à dire que les points ne seront pas alignés). Les points GPS que le téléphone récupère comportent une marge d erreur. La précision du GPS allant de 10 à 100 mètres. Une autre chose peut être reproché au résultat obtenue, le nombre de points GPX récupérés par le téléphone peut être conséquent. Cela peut rapidement atteindre le millier de points pour un parcours de 10km par exemple. Ceci étant, ce qui est important pour l utilisateur, ce n est pas tant le nombre de points récupérés mais plutôt que la visualisation globale de la trace soit cohérente et assez précise pour la suivre. Dans ce sens, il est possible de simplifier la trace en supprimant des points qui seraient superflus. Par exemple sur une ligne droite, il est possible de supprimer les points intermédiaires sans pour autant perdre en précision. Un dernier point sur lequel il est possible d obtenir des incohérences, c est lorsqu un utilisateur s arrête lors de l enregistrement d une trace. Dans ce cas, le téléphone enregistre toujours les points GPS toujours avec une marge d erreur. Ce qui donne une incohérence au niveau de la trace. Cela se traduit par une sorte de gribouillis sur la représentation de la trace. 1. Points incohérents Pour le premier point, il est difficile de trouver une solution. Certains logiciel de représentation de trace sur une carte ou encore les systèmes GPS utilisés dans les voitures repositionnent la plupart du temps la position de l utilisateur sur la route la plus proche. Mais cette solution implique une base de données conséquente. De plus, dans notre cas, l utilisateur ne se trouve pas forcément près d une route (comme lors d une randonnée) et il est difficile de connaître son parcours. La question est difficile, comment savoir si un point possède une erreur où est-ce que c est une position où l utilisateur s est rendu? Nous n avons pas mis en place de solution pour ce type d information. 2. Réduction du nombre de points obtenus L objectif de cette partie est de réduire le nombre de points obtenus tout en conservant une cohérence et une précision correcte sur la trace résultante afin de permettre un affichage rapide et d optimiser le stockage. Pour cela, l algorithme de Douglas-Peucker peut être implémenté. Cet algorithme permet la simplification d une polyligne par la suppression de noeud. L algorithme fonctionne de manière récursive. 23

Au premier appel de la fonction, on lui passe le premier point et le dernier point de la polyligne (dans notre cas, la trace correspondante au parcours de l utilisateur). L algorithme détermine le point le plus éloigné du segment formé par ces deux points puis décide : - Si cette distance est inférieure à un seuil que l on a fixé auparavant, l algorithme supprime tous les points compris entre ces deux points. - Si cette distance est supérieure au seuil, on appel de manière récursive l algorithme sur les deux sous parties de la polyligne. C est à dire, la sous partie du premier point au point le plus éloigné et la sous partie du point le plus éloigné au dernier point. La complexité de cet algorithme est nlog(n). Pour que l algorithme soit efficace, il faut fixer une valeur de seuil. Après quelques test, nous avons pensé qu un valeur de 7 mètres est correct. Cela n enlève pas trop de précision tout en réduisant le nombre de points considérablement. Par exemple, sur un parcours d environ 5km, 742 points ont étés enregistrés. Après avoir appliqué l algorithme, nous arrivons à un total de 140 points. 24

Avant Après 25

3. Gestion de l arrêt de l utilisateur Lorsque l utilisateur s arrête, les points GPS continuent à être enregistrés. Cependant, cela représente ensuite un amas de points rapprochés sur la trace qui ne donne pas d information supplémentaire sur celle-ci. On pourrait penser à première vue que la méthode de suppression des points peut palier à ce problème. Cependant, il est difficile de trouver un seuil pour lequel ces points seraient supprimés tout en conservant une trace globale assez précise. Nous avons décidé d implémenter un algorithme qui s exécute lors de l enregistrement des points GPS sur le mobile. Lorsqu un nouveau point GPS est détecté et avant de l enregistrer, cet algorithme regarde les trois derniers points enregistrés précédemment sur la trace puis les compare avec le dernier point arrivant. Si les trois points précédent sont dans un rayon assez proche du derniers (le rayon est définit avec un seuil), alors le point n est pas enregistré. IV. Système d authentification sécurisé 1. L authentification à l heure actuelle Le projet ayant une grande part communautaire, il est amené à gérer les utilisateurs ainsi que leur profil. Chaque utilisateur, pour pouvoir utiliser l application web ainsi que l application mobile est amené à s identifier en entrant son login ainsi que son mot de passe associé. Comme expliqué précédemment, les données relatives aux utilisateurs sont stockées dans une base de données MySQL, les mots de passe étant stockés sous forme chiffrée, grâce à l algorithme MD5. Ainsi, que ce soit au niveau de l application ou du site web, le mot de passe saisi par l utilisateur est transmis chiffré au serveur. Cela assure que même si une personne malveillante venait à intercepter le paquet contenant le mot de passe chiffré, elle ne pourrait pas retrouver le mot de passe utilisateur de base. Une relative sécurité est garantie par ce procédé mais il est loin d être infaillible. En effet, bien qu il soit quasiment impossible de retrouver le mot de passe directement à partir du mot de passe chiffré, en effectuant une opération de type brute-force on peut tester toutes les possibilités de mot de passe et les comparer à la chaîne chiffrée trouvée, ce procédé est très long mais possible. Nous avons souhaité mettre en place un système d authentification différent permettant d offrir plus de sécurité. 2. Système d authentification Kerberos Le protocole Kerberos est issu du projet «Athena» du MIT, mené par Miller et Neuman. La version 5 du protocole Kerberos a été normalisée par l'ietf dans les RFC 1510 (septembre 1993) et 1964 (juin 1996). 26

L'objet de Kerberos est la mise en place de serveurs d'authentification (AS pour Authentication Server), permettant d'identifier des utilisateurs distants, et des serveurs de délivrement de tickets de service (TGS, pour Ticket Granting System), permettant de les autoriser à accéder à des services réseau. Les clients peuvent aussi bien être des utilisateurs que des machines. La plupart du temps, les deux types de services sont regroupés sur un même serveur, appelé Centre de Distribution des Clés (ou KDC, pour Key Distribution Center). (Commentcamarche.net) Ce système permet de s affranchir de la saisie de mot de passe par l utilisateur, et ainsi offrir un maximum de sécurité dans le protocole d authentification, l utilisation de la part du client de mot de passe trop simple étant la faille la plus courante dans un système d'authentification. Explication du fonctionnement : Comme expliqué précédemment, ce système repose sur un échange de clé secrètes et de ticket. L utilisateur qui souhaite contacter un service envoie son identifiant au serveur de clé (KDC) qui lui retourne un ticket initial contenant une clé qui servira à chiffrer ses communications avec le service, ainsi qu un ticket d accès à ce service. Ce ticket initial est chiffré avec la clé secrète de l utilisateur connue de lui seul. Pour l instant, la partie administration du site ne comporte qu une page qui est comprise sur le site lui-même, on peut penser que par la suite, cette partie deviendra une entité à part entière, de même que différents modules pourraient se greffer au projet. L utilisateur, qui utilise plusieurs modules doit être loggé sur chacun des modules, donc saisir à chaque fois son mot 27

de passe et son login. Ceci est contraignant pour l utilisateur qui doit sans cesse saisir ces informations, et de plus le risque d oubli de la part de l utilisateur est plus important. 3. Système d authentification CAS Le Central Authentication Service (CAS) est un système d'authentification unique (SSO) pour le web développé par l'université Yale, partenaire majeur dans le développement de uportal. Ce logiciel est implanté dans plusieurs universités et organismes dans le monde. (Wikipedia) Son intérêt est qu une fois authentifié sur un site Web, et on est alors authentifié sur tous les sites Web qui utilisent le même serveur CAS. Il évite de s'authentifier à chaque fois qu'on accède à une application en mettant en place un système de ticket. 4. LemonLDAP::NG Le projet LemonLDAP::NG est un projet de CAS distribué avec gestion centralisée des droits. Il est composé d une suite logicielle libre reposant sur le serveur web Apache. Il a été écrit entièrement en langage Perl par Xavier Guimard, et utilise les mod-perl pour communiquer avec Apache. Ce projet est soutenu par la gendarmerie nationale française et est le logiciel de sso le plus utilisé dans les administrations françaises. Le logiciel est censé être capable de gérer plus de 200.000 utilisateurs, il est également utilisé dans certaines entreprises privées. Quelques références : - Gendarmerie nationale : plus de 100.000 utilisateurs, - Université de Limoges : plus de 17.000 utilisateurs, - Ministère de la justice : plus de 7.000 utilisateurs... et bien d autres. 28

Explication du fonctionnement : 1. Lorsqu un utilisateur souhaite contacter un service web, sa requête est interceptée par le handler 2. Les cookies SSO ne sont pas détectées donc le handler redirige l utilisateur vers le portail d authentification 3. L utilisateur envoie ses informations d authentification au portail 4. Le portail vérifie les informations d authentification 5. Si l authentification est validée, le portail récupère les informations de l utilisateur 6. Le portail créé une session pour sauvegardé les informations de l utilisateur 7. Le portail récupère la clé de session 8. Le portail créé les cookies SSO avec la clé de session associée 9. L utilisateur est redirigé vers l application vers le service web demandé 10. Le handler récupère la session utilisateur depuis le cookie 11. Le handler stocke les données utilisateur dans son cache 12. Le handler vérifie les règles d accès et envoie les headers au service web demandé 13. Le service web répond au handler 14. Le handler répond à l utilisateur. 29

Le projet est actuellement en développement, et est bien documenté sur son site officiel lemonldap-ng.org. Nous nous somme donc lancé dans l installation de ce logiciel en local pour les phases de test. L installation s est effectué sur une machine Ubuntu 10.04 similaire à la version présente sur le serveur. L installation s est effectuée avec quelques soucis liés à des problèmes de package debian au niveau des mod-perl notamment mais a finalement pu être finalisée. Cependant une fois installé et l accès à la page de démonstration effectif, les configurations se sont avérés plus problématiques. Tout d abord Lemonldap::ng fonctionne de base avec le serveur Apache simple, notre site web fonctionnant sous Apache Tomcat, une installation d un plugin supplémentaire était nécessaire. De plus, au niveau du stockage des données utilisateurs, lemonldap::ng fonctionne de base avec une annuaire de type LDAP alors que nos données sont stockées dans une base de données de type MySQL, il est normalement très simple de le changer la configuration du logiciel pour le faire utiliser une base de données mais cela s est avéré plus compliqué que prévu. Le site officiel est très bien documenté en ce qui concerne les premiers pas d installation mais beaucoup moins au niveau de la configuration qui suit. De plus il y a très peu de documents traitant de ce sujet sur Internet. Nos connaissances assez limités en terme d administration système ainsi que de sécurité de base on fait que nous avons préféré mettre cette partie de coté afin de ne pas perdre trop de temps et nous concentrer sur d autre point essentiels du projet. Cette partie de recherche effectuée nous a permis d améliorer nos connaissances au niveau de la sécurité en assimilant les techniques d utilisation de tickets du protocole Kerberos notamment. Nous avons également pu découvrir un outil de SSO libre, gratuit et qui semble très efficace, avec un peu plus de temps nous aurions sûrement réussi à le coupler avec notre site web. 30

V. Visite interactive Afin de permettre à l utilisateur une utilisation plus grande de l application, nous avons décidé d implémenter la partie visualisation des voyages et des points d'intérêts sur l application. De cette manière, il n aura pas forcément besoin de se rendre sur le site pour visualiser des parcours réalisés par d autres utilisateurs. De plus, nous avons commencé à penser à une visite interactive qui permettrait à l utilisateur d être averti sur son mobile des points d intérêts présents dans un périmètre autour de sa position. 1. Visualisation de voyages Concernant la visualisation des voyages sur l application, nous avons déterminé le protocole de communication entre l application et le serveur et développé l affichage d une liste de voyage ainsi que l affichage des détails concernant un voyage. Lorsque l utilisateur souhaite voir les voyages des autres, il se rend sur la page Trips et la liste de tous les voyages disponibles s affiche. Puis, il peut cliquer sur un voyage en particulier afin de voir plus d informations. Il voit ainsi les différentes informations à propos du voyage et peut ensuite visualiser le voyage sur la carte où encore voir les points d intérêts associés à ce voyage. La récupération des données du serveur relatives aux voyages s effectue une seule fois, lorsque l utilisateur charge la liste des voyages. Ce qui permet une plus grande fluidité dans la navigation des résultats de la recherche de voyages. 31

32

Nous n avons pas développé le traitement de la requête côté serveur par manque de temps. Pour l instant, les données récupérées concernant les voyages sont des données écrites dans un fichier JSON que l on récupère sur le serveur. Pour terminer ce module, il faudrait contacter un page sur le serveur qui nous retournerait un fichier JSON du même type en allant chercher les données dans la base de données. 2. Visualisation de points d intérêts La visualisation des points d intérêts se base sur la même interface graphique que les voyages. Cependant, l utilisation est différente. L utilisateur ne pourra visualiser que les points d intérêts dans un rayon donné autour de sa localisation. Par la suite, nous souhaiterions définir des filtres sur les catégories (Restaurants, Hôtel, ) pour que l utilisateur utilise sont application comme une vraie base d informations communautaire. Ce module intitulé What s arround? envoie au serveur une requête de récupération des points d intérêts en précisant la localisation du téléphone. Le serveur va donc rechercher les points d intérêts dans la base de données qui sont proches de sa localisation et lui renvoyer les résultats. 33

VI. Interface d administration de points d intérêts Nous avons souhaité ajouté une touche officielle à ce projet. En effet n importe quel utilisateur peut ajouter un point d intérêt ce qui est bon pour la communauté. En revanche cela peut aussi être un mauvais point car un utilisateur malveillant peu très bien ajouter du contenu de mauvaise qualité voir dégradant pour certain site. Nous avons donc ajouté pour chaque point d intérêt une propriété d officialité. Chaque utilisateur peut être administrateur d un point d'intérêt, cela veut dire qu il se déclare propriétaire ou gérant de ce point d'intérêt, il fait une demande qui sera validée par l équipe du site et si elle est approuvée, il devient administrateur et le point est marqué comme officiel. Cela lui confère le droit d ajouter certaines information qui seront visibles sur la partie visualisation de l application. Ces informations supplémentaires sont : Les horaires Les tarifs Un plan Contact Cette partie n a pas pu être implémentée de part un manque de temps sur la fin du projet. Cependant le protocole a été mis en place. Sur le site web, la gestion d un utilisateur administrateur est en place, il a accès a du contenu supplémentaire sur une page d édition d un point d intérêt. Le principe est le suivant : L utilisateur sélectionne les données qu il souhait voir apparaître sur la page de visualisation au niveau de l application, renseigne les champs (horaires et tarifs par exemple) puis enregistre dans la base les données renseignées. Avec Android tout affichage d une activité (partie graphique) est géré par des fichiers xml, le principe était donc de concevoir dynamiquement ces fichiers xml sur le serveur en fonction des désirs et données de l utilisateur. Ces fichiers seraient ensuite liés aux point d intérêts concernés et à chaque requête de la part de l application, le serveur, en plus de transmettre les informations habituelles transmettrait ce fichier xml d interface graphique. Des recherches préalables nous ont montré que le chargement dynamique de ces fichiers xml est réalisable bien que plutôt complexe en apparence. Nous aurions souhaité pouvoir implémenter cette fonctionnalité qui aurait permis d ajouter de la personnalisation au contenu proposé mais la difficulté technique et le manque de temps nous en ont empeché. 34

Conclusion Ce projet était un projet ambitieux par la quantité de travail à fournir. Le résultat est plutôt satisfaisant car quasiment toutes les améliorations que nous avions prévues ont étés abordées. Il est maintenant possible d ajouter des photos depuis l application et depuis le site internet. Les recherches concernant l authentification nous ont montrés qu il était possible de mettre en place des systèmes sécurisés de connexion. Le lissage des traces GPS réalisées par l utilisateur depuis sont téléphone en utilisant la géolocalisation s est avéré efficace puisqu il est possible de réduire le nombre de points GPS enregistrés de près de 70% sans pour autant perdre trop de précision. Le module nommé visite interactive a permit d implémenter sur l application l affichage de voyages et de points d intérêts. Et il est donc maintenant possible pour un utilisateur de voir les points d intérêts les plus proches de sa position GPS. Cependant, dans un manque de temps, nous n avons pût que très peut développer la partie d administration de points d intérêts. Ce projet nous à apporté de nouvelles connaissances. Tant en matière de communication distante concernant des données de taille importantes (envoie d image sur le serveur depuis l application) qu en matière de sécurité avec l authentification des utilisateurs via un CAS où encore en algorithmique avec le lissage de la trace GPS. Nous aurions aimé aller plus loin sur l'authentification et réussir à mettre celle ci en place sur notre serveur. Malheureusement, le développement du module d ajout d image depuis l application ayant été plus long que prévu, nous avons préféré continuer et aborder toutes les améliorations. Nous nous sommes rendu compte que sur ce projet, tant sur le site que sur l application, si l on veut rendre un travail propre, cela demandait beaucoup de temps (mise en page). Nous avons pût grâce à ce projet réaliser un réel suivi puisque nous l avions commencé en Master 1. Ce projet a la particularité d avoir un domaine d application très large ce qui permet d avoir des perspectives intéressantes. Beaucoup de choses peuvent êtres réalisées encore. L authentification reste à mettre en place et la partie visite interactive mérite d être développée. En effet, cette partie peut devenir une réel attente d un utilisateur. Pouvoir recherche les points d intérêts près de sa position est un bonne chose mais il serait utile de pouvoir filtrer par catégories. Comme par exemple si l utilisateur souhaite voir les restaurants qu il y a autour de lui. De même, lorsqu il effectue une balade touristique, il serait bien qu il puisse définir sur son téléphone des notifications, qui lui permettront d être averti lorsqu il passe vers un lieu dont la catégorie fait partie de ses recherches. Il serait également important de fournir une interface graphique plus développée que celle présente actuellement. Tout ceci dans un soucis d améliorer l utilisation au quotidien. 35