Chciałbym zaimplementować uwierzytelnianie oparte na JWT w naszym nowym interfejsie API REST. Ale skoro wygaśnięcie jest ustawione w tokenie, czy można go automatycznie przedłużyć? Nie chcę, aby użytkownicy musieli logować się co X minut, jeśli w tym okresie aktywnie korzystali z aplikacji. To byłaby ogromna awaria UX.
Ale przedłużenie ważności powoduje utworzenie nowego tokena (i stary jest nadal ważny, aż do wygaśnięcia). A generowanie nowego tokena po każdym żądaniu wydaje mi się głupie. Brzmi jak problem z bezpieczeństwem, gdy więcej niż jeden token jest ważny jednocześnie. Oczywiście mógłbym unieważnić stary używany przy użyciu czarnej listy, ale musiałbym przechowywać tokeny. Jedną z zalet JWT jest brak pamięci.
Odkryłem, jak Auth0 to rozwiązało. Używają nie tylko tokenu JWT, ale także tokenu odświeżania: https://docs.auth0.com/refresh-token
Ale ponownie, aby to zaimplementować (bez Auth0) musiałbym przechowywać tokeny odświeżania i zachować ich wygaśnięcie. Jaka jest zatem prawdziwa korzyść? Dlaczego nie mieć tylko jednego tokena (nie JWT) i zachować datę ważności na serwerze?
Czy są inne opcje? Czy użycie JWT nie jest odpowiednie dla tego scenariusza?