2011-06-25 8 views
1

J'utilise le pilote Java Mongodb pour mon application client Java. il doit se connecter au serveur mongodb fonctionnant à distance.Mongodb: problème de sécurité de l'authentification côté client

Je suis inquiet que quelqu'un puisse décompiler jar et trouver l'adresse IP au serveur mongodb et y accéder. mais l'utilisateur doit avoir un accès en lecture et en écriture. Dois-je créer une base de données pour chaque utilisateur et les authentifier? ou créer une collection d'utilisateur moi-même?

mongo = new Mongo("mongodb.server", 27017); 
       db = mongo.getDB("mydatabase"); 
       db.authenticate("test", "password"); 

BTW, le db.authenticate requiert char [] comme mot de passe .... de sorte que db.authenticate() ne fonctionne pas.

Une autre solution que j'ai pensé était d'utiliser un serveur intermédiaire qui se connectera à mongodb seulement. L'application se connecterait au serveur intermédiaire via HTTP POST.

Cependant, j'ai besoin de stocker directement les objets Java sérialisés en JSON sur mongodb, donc utiliser le serveur intermédiaire rend les choses difficiles.

Répondre

2

Si vous déployez du code sur des clients, vous pouvez créer un utilisateur par db et le faire entrer ou l'inclure en tant que ressource dans votre application (propre à chaque téléchargement d'utilisateur).

En général, les personnes n'exposent pas directement leur base de données à leurs clients (non approuvés). Peut-on créer des API REST/Remote-API à cette fin où chaque fonction de l'application nécessite une authentification et peut être autorisée.

0

Auth devrait être fait avec le "admin" db. Utilisez ce qui suit à la place:

mongo = new Mongo("mongodb.server", 27017); 
db = mongo.getDB("admin"); 
db.authenticate("test", "password"); 
db=mongo.getDB("mydatabase"); 
0

Il est contraire à la sécurité des bonnes pratiques de coder les informations d'identification, mais ne le faites pas. Une couche de service Web est la meilleure façon de s'y prendre, comme Scott l'a mentionné.

Je suis allé à une conférence d'utilisateur MongoDB et on m'a dit qu'ils travaillaient sur des systèmes d'authentification tiers (répertoire actif/ldap, etc.). Une fois que cela est disponible, vous pouvez utiliser des choses comme l'authentification intégrée Windows, etc. (en supposant que les pilotes le supportent), ou tout au moins l'authentification par mot de passe utilisant LDAP