Подтвердить что ты не робот

Как аутентифицируется 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" } );
4b9b3361

Ответ 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