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

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

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

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

Похожие вопросы