svisch
@svisch

Как произвести валидацию JWT токена с помощью public.key?

Здравствуйте. Пытаюсь сделать авторизацию через JWT токены с алгоритмом RS256 (а именно инструментом keycloak). Дошел до этапа валидации токена на сервере, либо в браузере. Если процесс генерации подписи токена весьма понятен:
RSASHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload), PRIVATE.KEY)

В тоже самое время вообще непонятен алгоритм проверки подписи и актуальности access_token с помощью Public.key. И нигде особо нет информации. Находил библиотеки, но показано лишь как валидировать токены с помощью уже готовых методов. Хотелось бы знать алгоритм самому. И вообще, что проверяется публичным ключок - сам токен или его подпись. И если подпись, то при ее валидности потом декодируется вручную payload токена и вычисляется по меткам времени его валидность. Или как то по другому?

И еще, пользуясь случаем спрошу - где лучше производить валидацию токена в случае SPA приложения: на фронтенде при каждом запросе к серверу, либо же на бэкэенде получаю при каждом запросе access_token с фронта?
Спасибо!
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
И вообще, что проверяется публичным ключок - сам токен или его подпись.

Подпись в самом JWT (JWS).

при ее валидности потом декодируется вручную payload токена и вычисляется по меткам времени его валидность

Всё верно.

где лучше производить валидацию токена в случае SPA приложения: на фронтенде при каждом запросе к серверу, либо же на бэкэенде получаю при каждом запросе access_token с фронта?

На сервере, куда делаются защищённые запросы, естественно. Валидировать токен на фронте бесполезно, а отсутствие валидации на сервере означает, что сервер будет не защищён. Любой злоумышленник сможет авторизоваться под любым пользователем отправив свой JWT.

Единственное, что стоит проверять на фронте, это срок действия токена. Если он истёк, нужно получить новый токен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы