2012-09-05 11 views
12

Die REST API für Mongolab ist cool. Ich kann das für Analysen in meiner Website direkt mit dem folgenden Javascript verwenden, das auf der Support-Seite von Mongolab zur Verfügung gestellt wird. Nur wenn ich verstehen kann, wie die Authentifizierung tatsächlich funktioniert. Der in der URL erwähnte API-Schlüssel könnte leicht von jedem kopiert werden, der die HTML-Quelle anzeigen würde. Das Kontrollfeld von Mongolab bietet keine Registrierung für meine Website an, die mir versichern würde, dass der API-Schlüssel nur dann validiert wird, wenn er von meiner Domain kommt. Wie funktioniert diese Authentifizierung?Wie authentifiziert Mongolab REST 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" }); 

Antwort

11

Ausgezeichnete Beobachtung und große Frage.

Derzeit haben alle API-Schlüssel Lese- und Schreibzugriff auf die Datenbanken, die dem Benutzerkonto zugeordnet sind, und jeder Agent, der über einen API-Schlüssel verfügt, kann eine solche Anforderung erfolgreich ausführen.

Wie Sie sehen, ist dieser grundlegende Pass-Schlüssel nicht mit einer feinkörnigen Sicherheit konzipiert.

Wir arbeiten jedoch an einer Reihe neuer REST API-Sicherheitsfunktionen, die genau darauf ausgerichtet sind.

Kontaktieren Sie uns unter [email protected], wenn Sie sich für Details interessieren.

+0

Sie scheinen auf diesem für eine lange Zeit zu arbeiten, während ich, dass es zu schätzen wissen sind Entwickler andere Möglichkeiten, sich dies tun können, eine geschätzte Zeitskala würde nützlich sein. – Neil

+0

Ich würde gerne ein bisschen mehr darüber in Bezug auf die Planung hören. Gibt es einen Link zu den "neuen REST-API-Sicherheitsfeatures", so dass ich lesen kann, wie sie funktionieren und möglicherweise mit meinen 2cts zusammenpassen? – iwein

+0

Gibt es ein Update dazu? – SlowAndSteady

-1

Sie haben einen API-Schlüssel für die HTTP-Anfrage an Ihre Datenbank mit ihrer REST-API. Zum Beispiel, wenn ein Benutzer anmelden möchte, mache ich eine Anfrage mit einem GET-Methode wie folgt aus:

https://api.mongolab.com/api/1/databases/name_db/collections/users/put_your_params_like_username_and_pw?apiKey=xxxxxxxxx

Und dann analysieren Sie die Antwort auf diese Anfrage. Es ist nicht die sicherste DB der Welt, aber es wird besser.

Wenn Sie weitere Informationen mögen ich darüber in meinem Blog sprechen: http://lolapriego.com/blog/?p=16

1

Ich mag MongoLab Service für mein erstes AngularJS App mit MongoDB verwenden, aber MongoLab ist nicht bereit für die Produktion mit einer Web-Anwendung, die möchte vom Frontend auf die MongoDB zugreifen.

Es ist sehr einfach, den API-Schlüssel im Netzwerkverkehr des Browsers zu erhalten (siehe Screenshot unten, der apiKey ist dort im Klartext) und dann kann jeder vollen Zugriff auf die DB haben. Es wäre also kein Problem, mit der MongoDB herumzuspielen.

Ich habe noch keinen Workaround für MongoLab gefunden. Im Moment denke ich, ich werde einen anderen Service wie https://www.dreamfactory.com/

Ich habe es noch nicht im Detail versucht, aber es sieht gut aus für eine AngularApp mit MongoDB und ich muss überprüfen, wie sie die Sicherheit der API implementiert. Auf den ersten Blick sieht es so aus, als würde es mit Sitzungstoken arbeiten, um die Anfragen an die Datenbank zu sichern.

Screenshot network traffic MongoLab credentials