2014-04-03 27 views
13

Tworzę serwer REST API z Node.js i Express + MongoDB. Ten interfejs API będzie miał później różnych klientów mobilnych (iOS, Android) i być może aplikację internetową. Potrzebuję użytkowników do zalogowania się w celu wykonania niektórych żądań interfejsu API. Nie ma aplikacji innych firm, z którymi chcę się połączyć (bez Facebooka, Google itp.). Nie chcę też zmuszać użytkowników do odwiedzania strony internetowej lub czegokolwiek podobnego, aby mogli się zalogować.Strategia uwierzytelniania dla interfejsu API REST i aplikacji mobilnej

Z tego, co widziałem w moich wielu wyszukiwaniach na SO, najlepszym rozwiązaniem byłoby umożliwienie użytkownikom logowania się przy użyciu pełnych danych uwierzytelniających, wysłanie im tokena w zamian i wykorzystanie tego tokena do weryfikacji przyszłych wniosków do czasu wygaśnięcia.

Jednak nie jestem pewien, jak to wdrożyć. Jestem bardzo zdezorientowany wszystkimi różnymi strategiami. Czy odbywa się to z podstawowym uwierzytelnianiem przez HTTPS, z OAuth, OAuth 2.0, ...? Po prostu nie wiem, co używać. Poza tym, naprawdę nie chcę wymyślać tutaj koła, nie dlatego, że jestem leniwy, ale głównie ze względów bezpieczeństwa. Czy istnieje biblioteka, której mogłabym użyć, aby to zaimplementować? Słyszałem o paszporcie, ale nie mogłem zrozumieć, czy jest to wykonalne, czy nie. Brzmi to jak ogólna rzecz, na pewno istnieje proste rozwiązanie.

Dzięki!

+1

Spróbuj: http://stackoverflow.com/questions/17397052/nodejs-passport-authentication-token –

+0

Lepiej zapytać o rekomendacje dotyczące oprogramowania i biblioteki w [Software Recommendations Stack Exchange] (http: //softwarerecs.stackexchange. com /). –

Odpowiedz

0

Uważam, że trzeba skonfigurować proces uwierzytelniania na podstawie Token na serwerze, aby można było wysyłać żądania od różnych typów klientów (Android, iOS, Internet itp.). Niestety, dokumentacja Passport (i samouczki oparte na paszporcie) wydaje się być skierowana wyłącznie do "aplikacji internetowych", więc nie sądzę, że powinieneś używać jej do tych celów.

Zrobiłem coś podobnego po tej wielkiej tutorialu: http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543

Część klienta w tym tutorialu jest oparty na angularjs, ale można łatwo zastosować te same zasady w telefonie klienta (jest to tylko kwestia dokonywania żądań HTTP w tym token pobierany podczas publikowania w "/ signin" lub "/ authenticate").

Powodzenia!

8

Teraz możesz używać Passport.js z JWT (Janson Web Token) z Passport-JWT. Jest dość łatwy w użyciu.

Po zalogowaniu użytkownika wysyłany jest token do użytkownika. Token zawiera dane o użytkowniku, takie jak identyfikator (oczywiście zakodowany). Na kolejnych prośbach (przynajmniej tam, gdzie wymagana jest autoryzacja) upewnisz się, że klient wysyła token. Na serwerze możesz zobaczyć, kto wysłał żądanie (i np. Sprawdzi autoryzację użytkownika), po prostu patrząc na token. Aby uzyskać więcej informacji na temat pracy JWT check this out.

Istnieje kilka sposobów wysłania tokena. Wystarczy spojrzeć na dokumenty i będzie jasne. Jeśli nie, pomógł mi również this.

Powiązane problemy