Замена устаревшей Spring Security JwtHelper - PullRequest
2 голосов
/ 02 мая 2020

Я использую класс org.springframework.security.jwt.JwtHelper из org.springframework.security:spring-security-jwt:1.1.0.RELEASE для декодирования токенов JWT, например,

Jwt jwt = JwtHelper.decode(accessToken);
String claims = jwt.getClaims();

Перечисленные выше классы устарели, а комментарий об устаревании указывает на Spring Security OAuth 2.0 Migration Руководство .

В этом руководстве не говорится о какой-либо замене JwtHelper.

Я нашел класс JwtDecoders, который создает JwtDecoder в новом spring-security-oauth2 проекте. Но JwtDecoders требует передачи issuer.

Поскольку я не могу sh проверить токен, есть ли простая альтернатива? В противном случае я могу разделить токен на . и base64-декодировать и использовать любую библиотеку JSON для разбора.

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Замена, используемая в Spring Security - nimbus-jose-jwt . Если вы не используете Spring Boot, вам нужно выбрать версию, в противном случае Spring Boot выберет ее для вас.

<dependency>
    <groupId>com.nimbusds</groupId>
    <artifactId>nimbus-jose-jwt</artifactId>
</dependency>

Вы можете просто использовать ее так:

import com.nimbusds.jwt.JWTParser;

....

JWT jwt = JWTParser.parse(accessToken)
Header = jwt.getHeader();
JWTClaimsSet jwtClaimSet = jwt.getJWTClaimsSet();
0 голосов
/ 03 мая 2020

Если вы хотите sh, чтобы избежать дополнительной зависимости (например, nimbus-jose-jwt), не стесняйтесь раскошелиться или скопировать этот небольшой служебный класс: JwtUtils. java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...