Задать вопрос
@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. Можете скидывать материал или доку. Стараюсь разобраться в материале, но пока тону в нем.
  • Вопрос задан
  • 1576 просмотров
Подписаться 1 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    1C-программист: расширенный курс
    18 месяцев
    Далее
  • Skillbox
    Middle-разработчик игр на Unity
    3 месяца
    Далее
  • ProductStar
    Django + Python разработка
    2 месяца
    Далее
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Приложение должно знать SECRET_KEY, он не должен передаваться по сети. Ну, и лучше взять готовую библиотеку для работы с JWT, а не изобретать велосипед.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
JWT токены идут с подписью (JWS), в твоём случае Keycloak хранит секретный ключ и подписывает любые токены.

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

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

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽