Wyjaśnienie działania OAuth2

0

Cześć i czołem.

Uznałem ostatnio, że wystarczy zabezpieczania moich API przy użyciu zwykłego tokena i zacząłem czytać o OAuth2. Napisałem sobie prostego CRUD-a w Laravelu przy użyciu Laravel Passport i wszystko działa, ale nie bardzo rozumiem co stoi za zabezpieczeniem autoryzacji.

Otóż mam np. endpoint GET, powiedzmy /api/users/ który ma mi zwrócić wszystkich userów. Jeśli zrobię to bez wysyłania bearer tokena, to dostaję oczywiście 401 Unauthorized. Token uzyskuję wysyłając zapytanie POST na /oauth/token/, gdzie przesyłam client_id, client_secret, grant_type, username i password, a w odpowiedzi dostaję token ważny rok, dzięki czemu serwer może mnie zidentyfikować.

I tu pojawiają się moje wątpliwości:

  1. Kiedy powinien być generowany client_secret? W momencie jak rejestruje się nowy użytkownik, to serwer powinien generować nowego client_secret powiązanego z ID nowego użytkownika?
  2. Mając napisane SPA w jakimś React czy Vue, jak powinienem uzyskiwać i przechowywać Token? W momencie logowania przesyłam login i hasło, a serwer przesyła to sobie dalej i w odpowiedzi zwraca mi token?
  3. Jeśli tak, to gdzie mam przechowywać ten token? LocalStorage, Store?
  4. Co jeśli ktoś niepowołany ukradnie ten token? Będzie miał wtedy pełne pole do działania tak samo, jak gdyby znał login i hasło?
0
czysteskarpety napisał(a):

https://sekurak.pl/oauth-2-0-jak-dziala-jak-testowac-problemy-bezpieczenstwa/

Czyli jeśli dobrze rozumiem, powinienem w aplikacjach SPA korzystać z Client credentials flow? Wtedy dostaję w odpowiedzi JSON z tokenem i jest to jedyna metoda pomijająca consent screen?

1 użytkowników online, w tym zalogowanych: 0, gości: 1