Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 JWT-token offline decoder  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Привет.

Нужна оффлайновая тулза для просмотра содержимого JWT-token.
Большинство тулов что я видел - предполагают что вы копи-пастите содержимое в некий веб-ресурс.
Хотелось-бы найти оффлайновый вариант.

Спасибо.
10 июл 20, 16:34    [22165383]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
dakeiras
Member

Откуда:
Сообщений: 549
JJWT
https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt/0.9.1

Нужно небольшой код написать будет, но там всё просто.

Jwt jwt = Jwts.parser().setSigningKey(publicKey).parse(jwtString)
10 июл 20, 17:07    [22165409]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
dakeiras
Member

Откуда:
Сообщений: 549
Тулза мне не попадалась оффлайновая, если кто знает - мне тоже интересно узнать.
10 июл 20, 17:08    [22165413]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Пару проектов назад мы кажется использовали эту тулзу https://bitbucket.org/connect2id/nimbus-jose-jwt/wiki/Home

Есть в ней консоль или нет - я не знаю. Но возможно мне удасться собрать из нее такой себе cli-вариант.
10 июл 20, 17:21    [22165419]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
Sergunka
Member

Откуда: Bay Area, CA
Сообщений: 2281
mayton
Привет.

Нужна оффлайновая тулза для просмотра содержимого JWT-token.
Большинство тулов что я видел - предполагают что вы копи-пастите содержимое в некий веб-ресурс.
Хотелось-бы найти оффлайновый вариант.

Спасибо.


Вроде как настрогали под линуксом CLI навроде этих
https://gist.github.com/thomasdarimont/46358bc8167fce059d83a1ebdb92b0e7
https://www.npmjs.com/package/jwt-cli

я точно не помню, но у нас были рекомендации пользоваться исключительно локальными тулами
10 июл 20, 23:36    [22165549]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Оба решения - не pure java.
Первая ссылка косвенно использует нативный инструмент jq. Его надо качать и ставить (если у вас - windows).

Второе - ссылается на пакеты npm. Это node. Тоже вобщем чужеродная для java технология.
11 июл 20, 15:06    [22165694]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Как-то так вобщем-то. По жлобски.

   public static void main(String[] args) throws IOException, ParseException {
        SignedJWT signedJWT = SignedJWT.parse((IOUtils.toString(new FileInputStream(args[0]), StandardCharsets.UTF_8)));
        System.out.println(signedJWT.getJWTClaimsSet());
    }


демо-Ключик с сайта jwt.io

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c


Декодируется

$ ./jwt-cli sample.jwt
{"sub":"1234567890","name":"John Doe","iat":1516239022}
15 июл 20, 17:47    [22168032]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
SpringMan
Member

Откуда:
Сообщений: 207
Ну для такого результа можно было и как-то так )
        String jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c";
        var jwtJsons = jwt.split("[.]");
        var jwtHeader = new String(Base64.getDecoder().decode(jwtJsons[0].getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
        var jwtPayload = new String(Base64.getDecoder().decode(jwtJsons[1].getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
        System.out.println(jwtHeader);
        System.out.println(jwtPayload);

А так вся возня в зашированной/подписанной части
15 июл 20, 17:54    [22168050]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Я-бы предпочел использовать API который предлагают здесь.

compile group: 'com.nimbusds', name: 'nimbus-jose-jwt', version: '8.19'


Я вывел payload секцию. А если надо будет цифровые подписи проверять - то головняк...
15 июл 20, 18:02    [22168064]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
dakeiras
Member

Откуда:
Сообщений: 549
чем не устроил JJWT? Его оч. умные люди делают кстати.

И не забывайте что токен может быть compact и zip.
Лучше руками не парсить его.

Сообщение было отредактировано: 16 июл 20, 20:06
16 июл 20, 20:09    [22168840]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
dakeiras
чем не устроил JJWT? Его оч. умные люди делают кстати.

И не забывайте что токен может быть compact и zip.
Лучше руками не парсить его.

Приаттачте к форуму еще какие варианты бывают.
16 июл 20, 21:00    [22168864]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
mayton
Member

Откуда: loopback
Сообщений: 47971
Посмотрел https://github.com/jwtk/jjwt

Я не могу сказать что не устраивает. Возможно устроит. Но я следую принципу минимализма. Если nimbus-jose
решает мою задачу - то он годится. Брать другую библиотеку просто так я не хочу. Если будет кейс
когда нимбус не справится или будет с чем-то не совместим - то я обязательно проверю альтернативный
вариант.
16 июл 20, 21:57    [22168880]     Ответить | Цитировать Сообщить модератору
 Re: JWT-token offline decoder  [new]
dakeiras
Member

Откуда:
Сообщений: 549
понял, оки.
17 июл 20, 11:49    [22169137]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить