@IvanN777

Как проверить Jwt(Keycloak) на валидность?

Как проверить что JWT не скомпромитирован?
На вход я получаю токен с информацией о user

***
Первое что пришло на ум
String[] chunks = token.split("\\.");
Base64.Decoder decoder = Base64.getUrlDecoder();

String palyload = new String(decoder.decode(chunks[1]));
String header = new String(decoder.decode(chunks[0]));

String unsignedToken = new String(Base64.getEncoder().encode(header)) + '.' + new String(Base64.getEncoder().encode(payload));
HMAC-SHA256(unsignedToken, SECRET_KEY)


Однако SECRET_KEY надо еще получить c Keyckloak.
В правильном ли направлении я иду?
Если да, то никто не знает как получить этот секрет.
-------------------------------------------------------
Возможно есть другой, более правильный способ проверить токен доступа.

P.S. Можете скидывать материал или доку. Стараюсь разобраться в материале, но пока тону в нем.
  • Вопрос задан
  • 758 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Приложение должно знать SECRET_KEY, он не должен передаваться по сети. Ну, и лучше взять готовую библиотеку для работы с JWT, а не изобретать велосипед.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
JWT токены идут с подписью (JWS), в твоём случае Keycloak хранит секретный ключ и подписывает любые токены.

Далее приложение сперва достаёт информацию о сертификате. В Keycloak есть есть специальный эндпойнт. Используя эту информацию, а именно публичный ключ, происходит валидация подписи.

Самостоятельно это делать не обязательно, есть море готовых библиотек.
Ответ написан
Ваш ответ на вопрос

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

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