Как аутентифицируется API-интерфейс Mongolab REST
API REST для монголаба классный. Я могу использовать это для аналитики на своем веб-сайте напрямую, используя следующий javascript, предоставленный на странице поддержки Mongolab. Только если я смогу понять, как работает аутентификация. Ключ API, упомянутый в URL-адресе, может быть легко скопирован любым, кто просмотрит источник html. Панель управления Mongolab не предлагает регистрации для моего сайта, которая бы заверила меня, что ключ api будет проверен только в том случае, если он поступит из моего домена.
Как работает эта проверка подлинности?
$.ajax( { url: "https://api.mongolab.com/api/1/databases/my-db/collections/my-coll?apiKey=myAPIKey",
data: JSON.stringify( { "x" : 1 } ),
type: "POST",
contentType: "application/json" } );
Ответы
Ответ 1
Отличное наблюдение и большой вопрос.
В настоящее время все ключи API имеют доступ на чтение и запись к базам данных, связанным с учетной записью пользователя, и любой агент, обладающий ключом API, может успешно выполнить любой такой запрос.
Как вы заметили, этот самый базовый ключ доступа не разработан с учетом какой-либо мелкозернистой безопасности.
Однако мы работаем над пакетом новых функций безопасности REST API, направленных именно на это.
Свяжитесь с нами по адресу [email protected], если вам будет интересно обсудить детали.
Ответ 2
Я хотел бы использовать сервис MongoLab для своего первого приложения AngularJs с MongoDB, но MongoLab не готов к производству с веб-приложением, которое хочет получить доступ с передней стороны к MongoDB.
Очень легко получить ключ API в сетевом трафике браузеров (см. снимок экрана ниже, apiKey находится там в обычном тексте), а затем любой может иметь полный доступ к БД. Так что беспорядок с MongoDB не будет проблемой.
Я еще не нашел обходного пути для MongoLab. На данный момент я думаю, что буду использовать другую услугу, например https://www.dreamfactory.com/
Я еще не пробовал это подробно, но он отлично смотрится для AngularApp с MongoDB, и мне нужно проверить, как они реализовали безопасность api. На первый взгляд, похоже, что он работает с токенами сеанса для обеспечения запросов к базе данных.
![Screenshot network traffic MongoLab credentials]()
Ответ 3
У вас есть ключ API для выполнения HTTP-запроса в вашу БД, используя их REST API. Например, если пользователь хочет войти в систему, я делаю запрос с помощью метода GET следующим образом:
https://api.mongolab.com/api/1/databases/name_db/collections/users/put_your_params_like_username_and_pw?apiKey=xxxxxxxxx
И затем вы анализируете ответ на этот запрос. Это не самая безопасная БД в мире, но она становится лучше.
Если вы хотите получить больше информации, я расскажу об этом в своем блоге: http://lolapriego.com/blog/?p=16