2012-09-05 19 views
12

Interfejs API REST dla programu Mongolab jest świetny. Mogę użyć tego do analizy na mojej stronie bezpośrednio, używając poniższego javascripta, podanego na stronie wsparcia Mongolab. Tylko jeśli rozumiem, jak działa uwierzytelnianie. Klucz API wspomniany w adresie URL może być łatwo skopiowany przez każdego, kto mógłby zobaczyć źródło html. Panel kontrolny Mongolab nie oferuje żadnej rejestracji dla mojej strony internetowej, która zapewniałaby, że klucz API zostanie zatwierdzony tylko jeśli pochodzi z mojej domeny. Jak działa to uwierzytelnianie?W jaki sposób uwierzytelnia się REST API Mongolab

$.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" }); 

Odpowiedz

11

Doskonała obserwacja i świetne pytanie.

Obecnie wszystkie klucze API mają uprawnienia do odczytu i zapisu do baz danych powiązanych z kontem użytkownika, a każdy agent posiadający klucz API może z powodzeniem wysyłać takie żądania.

Jak zauważyłeś, ten bardzo prosty klucz nie został zaprojektowany z myślą o jakimkolwiek drobiazgowym zabezpieczeniu.

Pracujemy jednak nad partią nowych funkcji bezpieczeństwa REST API, których celem jest właśnie to.

Skontaktuj się z nami pod adresem [email protected], jeśli chcesz omówić szczegóły.

+0

Wydaje się, że pracuje nad tym od dłuższego czasu, podczas gdy ja sobie sprawę, że istnieją inne sposoby programiści mogą to zrobić sami, szacowana skala czasowa byłaby przydatna. – Neil

+0

Chciałbym usłyszeć trochę więcej na ten temat w zakresie planowania. Czy istnieje link do "partii nowych funkcji bezpieczeństwa REST API", więc mogę przeczytać, jak będą działać i ewentualnie ważą z moimi 2ktami? – iwein

+0

Czy jest jakaś aktualizacja w tej sprawie? – SlowAndSteady

-1

Masz klucz API do wykonywania żądania http do DB za pomocą ich REST API. Na przykład, jeśli użytkownik chce się zalogować I złożyć zamówienie z metody GET tak:

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

A potem analizować odpowiedzi na tę prośbę. Nie jest najbezpieczniejszym DB na świecie, ale jest coraz lepszy.

Jeśli chcesz uzyskać więcej informacji o tym mówię w moim blogu: http://lolapriego.com/blog/?p=16

1

Chciałbym skorzystać z usługi MongoLab dla mojego pierwszego angularjs aplikacji z MongoDB, ale MongoLab nie jest gotowy do produkcji z aplikacji internetowej, która chce uzyskać dostęp od strony początkowej do MongoDB.

Bardzo łatwo jest uzyskać klucz API w ruchu sieciowym przeglądarki (patrz zrzut ekranu poniżej, apiKey jest tam w postaci zwykłego tekstu), a następnie każdy może mieć pełny dostęp do bazy danych. Więc mylące się z MongoDB nie byłoby problemu.

Nie znalazłem jeszcze rozwiązania tymczasowego dla MongoLab. W tej chwili, myślę, że będę używał innej usługi, takiej jak https://www.dreamfactory.com/

Nie próbowałem jej jeszcze szczegółowo, ale wygląda świetnie na AngularApp z MongoDB i muszę sprawdzić, w jaki sposób zaimplementowano zabezpieczenia interfejsu API. Na pierwszy rzut oka wygląda na to, że działa z tokenami sesji, aby zabezpieczyć żądania do bazy danych.

Screenshot network traffic MongoLab credentials

Powiązane problemy