Mongodb: проблема безопасности аутентификации пользователя на стороне клиента - PullRequest
1 голос
/ 25 июня 2011

Я использую драйвер Mongodb Java для своего клиентского приложения Java.ему нужно подключиться к удаленно работающему серверу mongodb.

Я обеспокоен тем, что кто-то может декомпилировать jar, узнать IP-адрес сервера mongodb и получить к нему доступ.но пользователь должен иметь права на чтение и запись.Должен ли я создать базу данных для каждого пользователя и аутентифицировать их?или создать коллекцию пользователей самостоятельно?

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

Кстати, db.authenticate требует char [] в качестве пароля .... так что db.authenticate () не работает.

Еще одним решением, о котором я подумал, было использование сервера-посредника, который будет подключаться только к mongodb.Приложение будет подключаться к серверу-посреднику через HTTP POST.

Однако мне нужно напрямую хранить объекты Java, сериализованные в JSON, на mongodb, поэтому использование сервера-посредника усложняет задачу.

Ответы [ 3 ]

2 голосов
/ 25 июня 2011

Если вы развертываете код на клиентах, вы можете создать пользователя для каждой базы данных и попросить его ввести его или включить в качестве ресурса в ваше приложение (уникальное для каждого пользователя).

Обычно люди не выставляют свою базу данных напрямую своим (ненадежным) клиентам.Пусть люди создадут REST / Remote-API для этой цели, где каждая функция приложения требует аутентификации и может быть авторизована.

0 голосов
/ 24 августа 2012

Противоречивая практика безопасности заключается в том, чтобы жестко кодировать учетные данные - просто не делайте этого. Слой веб-сервиса - лучший способ сделать это, как сказал Скотт.

Я пошел на конференцию пользователей MongoDB, где мне сказали, что они работают на сторонних системах аутентификации (Active Directory / ldap и т. Д.). Как только это станет доступно, вы сможете использовать такие вещи, как встроенная проверка подлинности Windows и т. Д. (При условии, что драйверы это поддерживают) или, по крайней мере, проверка подлинности по паролю с использованием LDAP

.
0 голосов
/ 31 мая 2012

Аутентификация должна выполняться с помощью "admin" db.Вместо этого используйте следующее:

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