TeChn4K Posté(e) 16 novembre 2009 Share Posté(e) 16 novembre 2009 Bonjour à tous ! Je suis entrain de réaliser un logiciel qui aura besoin de synchroniser les données locales avec une base hébergée sur un serveur distant. Pour la gestion des données locales, aucun souci à ce niveau là, mais pour ce qui est de se connecter à une base distante et de l'interroger, je ne sais pas trop vers où me diriger. Auriez-vous des informations à ce sujet ? Des pistes à explorer ? Ou encore mieux, des tutos, des exemples ? Merci d'avance ! TeChn4K Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Androc Posté(e) 16 novembre 2009 Share Posté(e) 16 novembre 2009 Il faudrait plus de détails : quel est le type de BDD ? tu veux te connecter directement dessus ? Par le biais d'une interface web ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 16 novembre 2009 Auteur Share Posté(e) 16 novembre 2009 Je n'ai pas encore ces infos. J'essaye de prendre un peu d'avance sur les points que je ne connais pas. Le devis devrait être envoyé au client la semaine prochaine, il nous renverrait alors toutes ces infos après validation. Dans ce cas, je reviendrais quand j'en saurais un peu plus ! Merci Androc. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 25 novembre 2009 Auteur Share Posté(e) 25 novembre 2009 J'en sais un peu plus sur la base distante que je vais interroger. Ce sera une BDD de type MySql, hébergée sur un serveur distant auquel je me connecterai directement. j'ai, ce weekend, réussi à taper dans une base locale via un DatabaseHelper. Est-ce avec la même classe que je dois me tourner pour une base distante, de n'importe quel type ? Merci de vos conseils ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Androc Posté(e) 25 novembre 2009 Share Posté(e) 25 novembre 2009 Techniquement je ne saurais pas te répondre, ne développant pas encore sous Android. En revanche maintenant que tu sais précisément à quoi tu dois te connecter tu dois pouvoir faire une recherche plus précise sur le forum ou dans le SDK et trouver ton bonheur. Si DatabaseHelper te permet de te connecter à un MySQL sur ta machine en locale (à moins que tu ne parles de ton téléphone lorsque tu parles de "locale") je ne vois pas pourquoi tu n'arriverais pas à te connecter à distance. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 25 novembre 2009 Share Posté(e) 25 novembre 2009 en local c'est SQLite, pas MySQL. Par contre tu peux surement implémenter un jar jdbc pour interroger la BDD MySQL Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Androc Posté(e) 25 novembre 2009 Share Posté(e) 25 novembre 2009 en local c'est SQLite, pas MySQL. Oui je sais mais comme il n'était pas clair je me suis demandé si le DatabaseHelper dont il se sert n'était pas multi bdd et donc que son test sur un téléphone n'aurait pas été concluant. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 26 novembre 2009 Auteur Share Posté(e) 26 novembre 2009 Oui, quand je parle de base locale, j'entends bien la base Sqlite d'Android. Ce n'était pas clair :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Androc Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 Pour commencer tes tests un peu plus proche de la réalité tu devrais t'installer un MySQL sur ta machine. Déjà si tu arrives à interroger une base, même bidon, tu auras déjà un peu progressé car tu tiendras l'outil qu'il te faut. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Galize Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 Je ne crois pas qu'Android embarque les drivers odbc pour interroger directement une BDD mySQL. Le plus propre est de séparer la couche persistance des données et accès distant aux données, afin de ne pas dépendre de la base utilisée. C'est à dire, mettre un serveur entre la base et le téléphone qui s'occupera d'interroger la base et de fournir les données dans un format pratique pour le téléphone. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 Pourquoi ne pô monter une WebService simple sur le serveur en question pour faire le lien C'est la solution la plus simple et la plus sécurisé aussi Ou même un script PHP ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
feust Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 Pourquoi ne pô monter une WebService simple sur le serveur en question pour faire le lienC'est la solution la plus simple et la plus sécurisé aussi Ou même un script PHP ? +1 fluckysan,mais apres faut parser,mais jpense pas que sa soit trop dur Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 Pourquoi ne pô monter une WebService simple sur le serveur en question pour faire le lienC'est la solution la plus simple et la plus sécurisé aussi Ou même un script PHP ? +1 fluckysan' date='mais apres faut parser,mais jpense pas que sa soit trop dur[/quote'] Hum je crois que je me suis mal exprimé Je pensais mettre en place un WebService ou un script PHP dans ce sens : Le mobile envoît une requête au serveur via un httpRequest avec les paramètres qui vont bien (que ce soir lors de la récupération de données pour MAJ locale ou de l'envoie de données pour MAJ du serveur), le WebService comprend la requête et envoit le résultat ou MAJ la BDD serveur Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
feust Posté(e) 27 novembre 2009 Share Posté(e) 27 novembre 2009 ah ok pas reveillé dsl Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 3 décembre 2009 Auteur Share Posté(e) 3 décembre 2009 (modifié) Ok, après avoir fouillé un peu partout, la meilleure façon de synchroniser une BDD locale Android avec une BDD distante serait que : Le serveur distant génère un XML pour que l'appli Android le parse et rentre les infos dans la table. Mais j'aimerai sécuriser un minimum cela pour que n'importe qui ne puisse pas accéder à mes données. Avez vous une idée pour qu'Android puisse checker une page demandant au moins un mot de passe ? En gros que le téléphone soit authentifié avant que le serveur renvoi le fichier xml ? Pareil pour l'ajout d'une info : une httpRequest sur le serveur distant avec en paramètre les infos à ajouter. Mais pour le sécuriser ? Je peux envoyer dans un des paramètre le mdp chiffré en sha1 ? Merci pour vos pistes ! Modifié 3 décembre 2009 par TeChn4K Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Androc Posté(e) 3 décembre 2009 Share Posté(e) 3 décembre 2009 Si tu attaques une BDD distante directement tu devras donner un login/mdp pour te connecter. En revanche, selon le type de BDD tu peux ne pas avoir de mécanisme de sécurité suffisant (mot de passe certes, mais en clair sur le réseau). Tu peux essayer d'utiliser les facilités SSL afin d'encapsuler ton protocole de communication. Car au final, tout dépend de qui ou de quoi tu veux te protéger ? - Un type qui sait que ton service tourne et qui veut requêter en se faisant passer pour un téléphone ? Mot de passe suffisant dans ce cas qu'il soit passé en clair ou pas sur le réseau. - Un type qui écoute sur la ligne. Dans ce cas que ton mot de passe soit en clair ou chiffré tu seras marron car il pourra rejouer le mot de passe. Il faudra passer par un mécanisme de graine aléatoire à ajouter au mot de passe à chaque authentification ou quelque chose de plus robuste. - Un type qui peut manipuler la ligne et dans ce cas il te faudra un vrai mécanisme d'authentification qui résiste aux attaque de type man in the middle et même là ... c'est chaud :) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
titimoby Posté(e) 3 décembre 2009 Share Posté(e) 3 décembre 2009 Ok, après avoir fouillé un peu partout, la meilleure façon de synchroniser une BDD locale Android avec une BDD distante serait que :Le serveur distant génère un XML pour que l'appli Android le parse et rentre les infos dans la table. Mais j'aimerai sécuriser un minimum cela pour que n'importe qui ne puisse pas accéder à mes données. Avez vous une idée pour qu'Android puisse checker une page demandant au moins un mot de passe ? En gros que le téléphone soit authentifié avant que le serveur renvoi le fichier xml ? Pareil pour l'ajout d'une info : une httpRequest sur le serveur distant avec en paramètre les infos à ajouter. Mais pour le sécuriser ? Je peux envoyer dans un des paramètre le mdp chiffré en sha1 ? Merci pour vos pistes ! Je ne vois aucune impossibilité technique à embarquer le driver JDBC dans ton appli Android. Il s'agit d'un jar comme un autre après tout. De là tu auras les mécaniques de sécurité incluses dans toute requete JDBC, notament la gestion user/password. S'il te semble plus aisé de passer par un accès web, tu peux soit utiliser des requetes HTTPS à ta propre sauce, soit mettre en place un webservice sécurisé lui aussi. Tu te retrouve dans ce cas avec ta connection base de donnée au niveau de ton serveur HTTP et tout redevient très classique. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 3 décembre 2009 Auteur Share Posté(e) 3 décembre 2009 Moi j'avais pensé mettre en place un script php sur le serveur distant qui en fonction de certains paramètres (dont user/mdp) me renverrait ma bdd distante sous forme d'xml, m'ajouterait un champs dans ma base, m'en supprimerait, etc etc. Après je suis ouverte à toute autre proposition. Ma seule condition étant que ce ne soit pas accessible à n'importe qui (surtout la suppression d'un champ ...) Disons que niveau sécurité, je n'ai pas non plus besoin d'un truc hyper blindé. Ce ne sont pas des infos sensible, mais quand même ;) Selon vous, quel est le meilleur moyen point de vue "facilité de mise en œuvre/niveau de sécurisation" ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 3 décembre 2009 Share Posté(e) 3 décembre 2009 avec jdbc tu te connecte de manière classique à la bdd, suivant comment elle est configurée (login et mdp). Mais faire un webservice comme tu le dis est une bonne solution aussi. Si tu peux faire le travail coté serveur c'est pas plus mal, bien au contraire. Les 2 ne me paraissent pas très compliqués (enfin je vois pas de grosse contrainte). Je vote pour le webservice Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
titimoby Posté(e) 3 décembre 2009 Share Posté(e) 3 décembre 2009 avec jdbc tu te connecte de manière classique à la bdd, suivant comment elle est configurée (login et mdp).Mais faire un webservice comme tu le dis est une bonne solution aussi. Si tu peux faire le travail coté serveur c'est pas plus mal, bien au contraire. Les 2 ne me paraissent pas très compliqués (enfin je vois pas de grosse contrainte). Je vote pour le webservice si tu n'as pas de gros volumes, le webservice sera très facile à sécuriser : tu le développe avec un systeme de mot de passe, et quand tu le met en prod, tu le met dans ta zone https. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 3 décembre 2009 Auteur Share Posté(e) 3 décembre 2009 si tu n'as pas de gros volumes, le webservice sera très facile à sécuriser : tu le développe avec un systeme de mot de passe, et quand tu le met en prod, tu le met dans ta zone https. Tu pourrais expliciter un peu plus ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Androc Posté(e) 3 décembre 2009 Share Posté(e) 3 décembre 2009 (modifié) En gros je pense que ce titimoby voulait dire c'est que tu mets en place un service HTTPS (HTTP Sécurisé via SSL) et que tu t'authentifies par cette page mais qu'ensuite tu n'es pas forcément obligé de continuer tout en HTTPS (même si c'est "mieux", ainsi quelqu'un qui écoute sur la ligne ne verra rien de ton échange avec le serveur). Modifié 3 décembre 2009 par Androc Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
titimoby Posté(e) 3 décembre 2009 Share Posté(e) 3 décembre 2009 Les webservices sont pour moi un outil que j'ai un peu oublié, ce qui explique mon manque de clarté. Je m'en excuse. Androc, a un peu clarifié et je l'en remercie. En y réfléchissant, je n'ai peut être pas indiqué la piste la plus simple. En effet, il est possible de développer un webservice "normal" puis de le déployer après dans un container utilisant WS-Security. Seul l'environnement de déploiement final change. Ma clarté du jour étant un peu juste, je me permet de t'envoyer sur le site suivant que j'ai trouvé assez clair et concret. http://jean-noel.vandelanoitte.fr/securiser-un-web-service La librairie WSS4J sera ton amie me semble t'il. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
TeChn4K Posté(e) 4 décembre 2009 Auteur Share Posté(e) 4 décembre 2009 Merci Timimoby pour tes pistes sur les Webservices Java. Mais je pense plutôt le faire en php. Je n'ai pas assez de connaissance en développement Java pour prétendre en faire/implémenter un (quelques contraintes techniques aussi : serveur web mutualisé) ... Une question pour éclaircir les choses sur les webservices : Peu importe les librairies utilisées coté serveur et coté client tant qu'elles utilisent SOAP pour communiquer ? Peu importe les langages également ? Il faut juste que soit utilisé le protocole SOAP de sorte que la partie client et la partie serveur soient totalement distinctes ? Si non : Ba j'ai rien compris alors ! :D Si oui : - KSOAP m'a l'air d'être pas mal coté client pour Android. J'ai réussi à trouver quelques exemples assez rapidement. - Ensuite pour le serveur (php obligatoirement), il me faut trouver le bon webservice, je n'ai pas encore fouillé. Je demande l'avis du public ;) Je sors un peu du sujet d'Android, désolé, mais je pense qu'il est bon pour tous développeurs (moi le premier) souhaitant faire communiquer sont appli avec un serveur de bien éclaircir ces points. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
dekans Posté(e) 4 décembre 2009 Share Posté(e) 4 décembre 2009 sinon tu le fais en REST, c'est le plus simple coté client peut-être. Parser du xml c'est intégré dans l'API Android Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.