Генерация JWT в jjwt
Библиотека jjwt — популярная Java-реализация для работы с JWT. Текущая версия — 0.12.6.
Зависимости Maven
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.12.6</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.12.6</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.12.6</version>
<scope>runtime</scope>
</dependency>Начиная с jjwt 0.10.0 зависимость jaxb-api не нужна — библиотека использует java.util.Base64.
Создание токена
Jwts.builder()
.subject(user.getLogin())
.expiration(accessExpiration)
.signWith(jwtAccessSecret)
.claim("roles", user.getRoles())
.claim("firstName", user.getFirstName())
.compact();Валидация и парсинг
Jwts.parser()
.verifyWith(secret)
.build()
.parseSignedClaims(token)
.getPayload();Генерация ключей
SecretKey key = Jwts.SIG.HS512.key().build();
String base64Key = Encoders.BASE64.encode(key.getEncoded());Миграция с 0.11.x на 0.12.x
| Старый API (0.11.x) | Новый API (0.12.x) |
|---|---|
Jwts.parserBuilder() | Jwts.parser() |
.setSigningKey(key) | .verifyWith(key) |
.parseClaimsJws(token) | .parseSignedClaims(token) |
.getBody() | .getPayload() |
.setSubject() | .subject() |
.setExpiration() | .expiration() |
Keys.secretKeyFor(SignatureAlgorithm.HS512) | Jwts.SIG.HS512.key().build() |
Key в сигнатурах | SecretKey |
См. также
- Access и Refresh токены — жизненный цикл токенов