Jestem nieco zdezorientowany, jak poprawnie i bezpiecznie uwierzytelniać użytkowników za pomocą mojego REST API oraz zapewnić i opcję uwierzytelniania za pomocą innych dostawców OAuth 2.0 (np. Facebook, Google itp.).Uwierzytelnianie użytkownika za pośrednictwem mojego REST API i Facebooka
Scenariusz
użytkownicy korzystają z aplikacji internetowych, które powinny spożywać mego odpoczynku API. Użytkownicy powinni mieć możliwość logowania i wykonywania operacji CRUD zarówno przy użyciu nazwy użytkownika/hasła, jak i przy użyciu usług innych dostawców, takich jak Facebook. Będę używał SSL do szyfrowania ruchu na stronie internetowej i API.
Nie biorąc pod uwagę usług obcych stron trzecich i studiując różne pytania już zadane tutaj na SO, myślałem o obsłudze uwierzytelniania użytkownika, jak na zdjęciu.
Technologie i aktualny pomysł
REST API jest napisane przy użyciu JS używając NodeJS i Express. WebApp zapewniona przez inną instancję NodeJS to głównie AngularJS z szablonami, które zużywają interfejs API REST.
Mój obecny pomysł to pozwolić WebApp obsługiwać sekwencji logowania i pozwolić Facebook zapisać swój token w moim DB za pomocą wywołania zwrotnego. Ale to rozwiązanie powoduje zbyt wiele obejścia problemu!
Pytania
- jest sekwencją uwierzytelniania przedstawiona na obrazie jest prawidłowy?
- W jaki sposób powyższa sekwencja uwierzytelniania jest porównywana z przepływem poświadczeń hasła właściciela zasobu w OAuth2.0? Czy warto zamiast tego używać OAuth2.0?
- Jak mogę zintegrować logowanie przez strony trzecie (np. Facebook)? Wszelkie sugestie lub (lepszy) przykład?
Referencje
Login with facebook and using oauth 2.0 for authentication of REST api calls
i wiele innych tutaj na SO :)