Czym jest rotacja tokena odświeżania i dlaczego jest ważna?
Zanurzmy się w temat i porozmawiajmy o tym, dlaczego rotacja tokena odświeżania jest skutecznym sposobem ochrony bezpieczeństwa twoich tokenów odświeżania.
Co to jest token odświeżania?
Token odświeżania to specjalny rodzaj tokena, który jest używany do uzyskania nowego tokena dostępu, gdy obecny token dostępu wygaśnie. Zapoznaj się z naszym wcześniejszym wpisem Zrozumienie tokenów w OIDC, aby dowiedzieć się więcej.
Podczas wprowadzenia wspomnieliśmy również, że w Logto, aby chronić bezpieczeństwo twojego tokena odświeżania, domyślnie wdrożyliśmy mechanizm „rotacji tokena odświeżania”.
Ale czym dokładnie jest „rotacja tokena odświeżania”? Jakie korzyści przynosi naszym użytkownikom końcowym? Zanurzmy się w temat!
Co to jest rotacja tokena odświeżania?
Rotacja tokena odświeżania to mechanizm, który unieważnia poprzedni token odświeżania i wydaje nowy, gdy token odświeżania jest używany do uzyskania nowego tokena dostępu. Ten mechanizm zapewnia, że token odświeżania jest odnawiany przed wygaśnięciem.
Dlaczego potrzebujemy rotacji tokena odświeżania?
Tokeny odświeżania mają przedłużony okres życia, zazwyczaj wynoszący tygodnie lub nawet miesiące. A ponieważ możemy uzyskać nowe tokeny dostępu za pomocą tokena odświeżania, token odświeżania staje się także atrakcyjnym celem dla atakujących. Dlatego, zgodnie z OAuth 2.0 BCP, serwer autoryzacji musi podjąć jedną z następujących środków, aby zapobiec takim atakom.
- Wydawanie tokenów odświeżania z ograniczeniem nadawcy: klient podpisuje i dostarcza podpis (
Sec-Token-Binding
) w nagłówku żądania odświeżania, w ten sposób wydany token odświeżania jest kryptograficznie powiązany z określonym klientem. Jednak obecnie tylko niektóre natywne aplikacje są z ograniczeniem nadawcy, a większość nowoczesnych SPA i aplikacji mobilnych to aplikacje publiczne. - Rotacja tokena odświeżania: serwer autoryzacji wydaje nowy token odświeżania (zwykle przy wymianie na nowy token dostępu) i unieważnia poprzedni. To zmniejsza ryzyko przecieku tokena.
Najlepsze praktyki implementacji rotacji tokena odświeżania
W Logto, gdy użytkownik zostaje pomyślnie zalogowany, najpierw tworzony jest obiekt Grant
w bazie danych, a następnie wydany token odświeżania będzie miał odniesienie grantId
i wskazuje na pierwszy obiekt Grant.
Za każdym razem, gdy dochodzi do rotacji tokena odświeżania, poprzedni token odświeżania zostanie oznaczony jako zużyty, a serwer autoryzacji Logto wyda nowy token odświeżania z tym samym grantId
.
Załóżmy, że poprzedni token odświeżania został ujawniony, wtedy zarówno legalny klient, jak i atakujący mogliby go użyć do wymiany na token dostępu. I bez względu na to, kto to zrobił, ujawniony token odświeżania musiał zostać obrócony i oznaczony jako zużyty. Kto z nich użyje zużytego tokena odświeżania jako drugi, poinformuje serwer autoryzacji o naruszeniu. Serwer autoryzacji cofnie wszystkie tokeny odświeżania z tym samym grantId
.
W opisanym powyżej przypadku, po uruchomieniu alarmu, legalny klient może ponownie uwierzytelnić się tylko poprzez ponowne zalogowanie, aby uzyskać nowy token odświeżania. Atakujący natomiast straci kontrolę nad twoim systemem i zostanie zablokowany na zewnątrz.
Kiedy następuje rotacja tokena odświeżania?
W Logto, domyślne działanie rotacji tokena odświeżania definiuje:
- Jeśli klient ma ograniczenie nadawcy lub jest niepubliczny (np. aplikacje internetowe renderowane po stronie serwera), rotacja tokena odświeżania następuje, gdy osiągnie 70% swojego całkowitego czasu życia (TTL).
- Jeśli klient jest klientem publicznym (np. jedno-stronicowe aplikacje internetowe), rotacja tokena odświeżania odbywa się za każdym razem, gdy jest używany do wymiany na token dostępu. Odpowiedź wymiany tokena zwróci zarówno nowy token dostępu, jak i nowy token odświeżania.
Jak mogę włączyć/wyłączyć rotację tokena odświeżania w Logto?
W konsoli administracyjnej Logto przejdź do Admin Console > Applications i wybierz aplikację, dla której chcesz włączyć/wyłączyć rotację tokena odświeżania. Na stronie szczegółów aplikacji, przejdź do zakładki „Ustawienia zaawansowane” i przewiń na dół, aby znaleźć przełącznik oraz inne przydatne ustawienia.
Jeśli wyłączysz przełącznik, twój token odświeżania nigdy nie zostanie obrócony, dopóki nie wygaśnie. Dlatego gorąco zalecamy zawsze włączanie rotacji tokena odświeżania.
Podsumowanie: Czym jest rotacja tokena odświeżania i dlaczego jest ważna?
Rotacja tokena odświeżania to najlepsza praktyka, która zapewnia bezpieczeństwo twojego tokena odświeżania w aplikacji. Unieważnia poprzedni token odświeżania i wydaje nowy, gdy token odświeżania jest używany do uzyskania nowego tokena dostępu. Ten mechanizm zmniejsza ryzyko przecieku tokena i zapewnia bezpieczeństwo twojego tokena odświeżania.
Logto stosuje najlepsze praktyki branżowe i zawsze stawia bezpieczeństwo użytkowników jako najwyższy priorytet.
Mam nadzieję, że ten blog dobrze wyjaśnia twoje wątpliwości dotyczące mechanizmu rotacji tokena odświeżania. Daj nam znać, jeśli coś jest nadal niejasne. Twoje opinie i sugestie są zawsze mile widziane!
Wypróbuj Logto już dziś i ciesz się bezpieczniejszym doświadczeniem uwierzytelniania.