Cześć,
chciałem się zapytać jaka jest faktyczna idea refresh tokenu w JWT i OAuth 2.0? W jakim dokładnie celu się go stosuje? Niektórzy piszą, że to kwestia bezpieczeństwa - na wypadek, gdyby token dostępu został wykradziony, ale ten argument chyba jest słaby, bo refresh token również można wykraść.
Bardziej sensowny jest argument, że refresh token można unieważnić / zmienić uprawnienia etc, ale czy jest w ogóle potrzeba jego stosowania?
Moje wątpliwości wynikają z poniższych wniosków:
Jeśli dobrze rozumiem, zasada działania wygląda to tak:
logujemy się na stronie -> otrzymujemy token dostępu, który ma krótki czas życia, oraz refresh token, który ma bardzo długi czas życia -> jak upłynie określony czas token dostępu wygasa i trzeba go odnowić za pomocą refresh tokenu. Wysyłamy więc refresh token do serwera, który go weryfikuje np. czy nie został anulowany, a jeśli nie to otrzymujemy nowy token dostępu.
Ale czy nie wygodniej zrobić to tak:
logujemy się na stronie -> otrzymujemy token dostępu, który ma krótki czas życia -> po stronie serwera zapisujemy czy token użytkownika może być przedłużany ewentualnie do kiedy, jakie ma uprawnienia etc. -> gdy token dostępu wygasa to po stronie serwera sprawdzamy czy możemy go odnowić a jeśli tak to przesyłamy nowy token dostępu z aktualnymi dostępami.
W obu przypadkach, gdy token dostępu wygasa musimy zweryfikować czy możemy wygenerować nowy token a jeśli tak to z jakimi uprawnieniami. Różnica jest tylko taka, że moje rozwiązanie pomija stosowania refresh tokenu.
Będę bardzo wdzięczny za informację czy moje rozumowanie jest właściwe, a jeśli nie to gdzie popełniam błąd, ewentualnie jakie inne korzyści wynikają z refresh tokenu?
Z góry dziękuję za pomoc.