IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

JDBC pour Android


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 254
    Par défaut JDBC pour Android
    Bonjour,


    J'ai une application desktop écrite en Java qui se connecte à une base de données PostgreSQL via JDBC.

    Maintenant je voudrais pouvoir consulter certaines données via une application mobile Android.

    Je n'ai jamais rien écrit pour Android et j'aurais besoin d'aide.

    Suite à mes recherches voici qlq questions/observations.

    Bien que techniquement possible, il est fortement déconseillé d'utiliser une connexion JDBC "classique" parce que le login/mot de passe seraient exposés...Ok je comprends.

    Il faut utiliser une API pour ce connecter...Ok

    On parle souvent API REST...mais comment mettre ça en place très concrètement ?
    Mais dans ce cas il faut faire des appels "particuliers" et on reçois les données en JSON (par exemple)...j'ai jamais travailler avec ça.
    Je n'ai pas envie/le temps d'apprendre encore des technologies supplémentaires.

    Il n'y a pas une solution de connexion sécurisée qui me permettrait ensuite de faire du JDBC comme j'en ai l'habitude ?
    Bref, une solution qui ne s'occuperait QUE de la partie connexion.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Bien que techniquement possible, il est fortement déconseillé d'utiliser une connexion JDBC "classique" parce que le login/mot de passe seraient exposés...Ok je comprends.
    C'est exact. Il existe aussi le problème d'accès à la base. A partir du moment ou tu passe sur du mobile , il y'a de forte chance que tu sois en mobilité et donc hors du réseau de l'entreprise. JDBC impose donc d'ouvrir un port direct vers la bdd ce qu'en général on aime pas trop d'un point de vue sécurité.

    On parle souvent API REST...mais comment mettre ça en place très concrètement ?
    Tu peux le faire toi même ou utiliser un outils tout fait pour se genre de chose.
    Par exemple :
    https://github.com/PostgREST/postgrest
    https://github.com/prest/prest
    https://github.com/QBisConsult/psql-api

    Si tu veux le faire toi même il faut mettre en place un serveur web qui va exposer des URL qui vont en fonction des paramètres chercher des données dans la base et le retourner dans le format que tu veux.

    Mais dans ce cas il faut faire des appels "particuliers" et on reçois les données en JSON (par exemple)...j'ai jamais travailler avec ça.
    Je n'ai pas envie/le temps d'apprendre encore des technologies supplémentaires.
    Le JSON est juste un format , il est ce qu'était xml dans les années 2000 , autant dire que c'est incontournable aujourd'hui.

    Maintenant coté android il existe des librairie qui permettent d'abstraire complètement l'utilisation d'une API REST et de simplement retourner des POJO.
    Retrofit en est un exemple.
    http://www.vogella.com/tutorials/Retrofit/article.html

    Après rien ne t'interdit de faire du JDBC si ca te chante (et que les admin système l'autorise) , mais c'est pas la façon de faire. Perso je le déconseil ne serait ce que pour éviter que quelqu'un qui viendrait à décompiler l'appli mobile obtiennent l'architecture de la base, les mot de passes , etc ....
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 254
    Par défaut
    C'est fou...pourquoi ne pas pouvoir utiliser JDBC...ça fonctionne parfaitement bien...

    Donc pas question de faire un query SQL et récupérer ces données via des resultsets...

    Faut écrire une requête (qui n'a rien a voir avec du SQL), avec l'API xxx et récupérer les données (de la BDD SQL) dans le format à la mode...jusqu'à la mode suivante.

    C'est n'importe quoi...

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu peux aussi donner la clé de chez toi aux facteurs/livreurs au lieu de la clé de la boite au lettres.
    Ca fonctionne tout aussi bien

    Comme cela a été dit, tant que possible, on ouvre le moins de ports possibles vers l'extérieur.
    Généralement, les ports http/https.
    La base de données est souvent sur un serveur différent du serveur qui héberge le web service, pour éviter de l'exposer en direct.
    Imagine si tu as plusieurs applications et beaucoup de données de différentes sources dans ta base, tu n'aimerais pas qu'on puisse potentiellement avoir accès à tout.

    Je comprends ta frustration, mais écrire un webservice n'est pas très compliqué.
    Quelques lignes de php, node js et c'est fait, si tu trouves trop lourd de le faire en java.

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 254
    Par défaut
    Pour l'API de connexion pREST à l'air bien...je viens de faire un test et ça me renvoie bien les données en JSON.

    Reste à les lire...refaire les classes...

    Lire les données en JSON...avec quoi ?

    json.org ?


    PS : C'est en effet extrêmement frustrant de devoir refaire mes classes et de ne pas pouvoir faire de query SQL classiques...

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par genamiga Voir le message
    C'est n'importe quoi...
    Ce qui est n'importe quoi c'est de ne pas voir le risque de sécurité monumentale que représente une connexion JDBC sur un mobile.

    Json c'est pas une mode c'est LE format standard intéropérable utilisé par tout le monde (officiellement dispo depuis 2002). XML est enterré depuis des années.

    Lire les données en JSON...avec quoi ?
    json.org ?
    Oui.
    Encore une fois soit tu te cogne le client http et le parser json à la main (moyennement intéressant) soit tu passes par une lib tierce qui abstrait tout pour toi et qui te retourne des objets tout prêt (et y'a des chances que tu puisse réutiliser une bonne partie de tes classes métiers).
    Par exemple retrofit :
    http://square.github.io/retrofit/
    Un peu plus de détail : http://www.vogella.com/tutorials/Retrofit/article.html

    Si tu veux continuer à écrire des requêtes tu peux aussi regarder du coté de GraphQL au lieu de REST mais vu ton aversion pour la nouveauté , ca risque de vite te rebuter
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 254
    Par défaut
    Je comprend très bien qu'il faut sécuriser la connexion sur du mobile.

    Mais concrètement qu'est ce que ça apporte de changer la façon de récupérer les données ?

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Appli mobile en JDBC :

    Je décompile l'application : je récupère :
    - Le port de connexion à la base
    - L'architecture de la base
    - Identifiant / mdp de connexion à la base (puisque en général il n'aura pas été protégé correctement)

    Ma base est ouverte sur l'extérieur et donc potentiellement attaquable.
    Avec les identifiants et le port JDBC je peux venir faire des requêtes non prévue par le soft et potentiellement outrepasser des limitations mise en place par le logiciel.
    On peut imaginer un DDOS qui met à genoux toute mon organisation parce que la base est tombé


    Appli avec Web service :
    Je décompile l'application : je récupère :
    - Une clé API et ou identifiant d'accès au web service (puisque en général il n'aura pas été protégé correctemen
    - Éventuellement la structure des objets métiers

    Si mon appli est compromise à aucun moment ma base n'est en péril. Si je suis attaqué , au pire des cas je coupe le webservice et toute mon organisation interne peut continuer à travailler sur la base.
    A aucun moment un attaquant ne pourra venir faire une requête non prévue sur la base.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JDBC pour jdk1.5
    Par bonnefr dans le forum JDBC
    Réponses: 5
    Dernier message: 15/11/2005, 10h05
  2. JDBC pour Oracle
    Par krakatoe dans le forum Oracle
    Réponses: 9
    Dernier message: 13/10/2005, 17h36
  3. [Débutant(e)] Message d'erreur JDBC pour oracle
    Par krakatoe dans le forum JDBC
    Réponses: 1
    Dernier message: 14/09/2005, 16h44
  4. [JDBC] pilote JDBC pour MySQL
    Par michihala dans le forum JDBC
    Réponses: 5
    Dernier message: 05/08/2005, 08h33
  5. Pilote JDBC pour SQL Server
    Par david71 dans le forum JDBC
    Réponses: 6
    Dernier message: 21/01/2005, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo