1) Вам не нужна весенняя защита. Просто используйте «io.jsonwebtoken.Jwts».
Вы можете использовать любое количество параметров для генерации токена JWT.
Вы можете использовать компонент внутри вашего загрузочного приложения Spring для генерации токена JWT.
Затем создайте службу токена, которая будет использовать этот компонент и выполните следующие действия: сгенерируйте токен доступа, проверьте токен доступа и обновите токен.
2)
Образец :
@Составная часть
public String createJwtToken (пользователь, тип TokenType, ClientKey clientKey) генерирует исключение InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException {
String userName = user.getUsername();
Date currentTime = new Date();
String token = Jwts.builder()
.setSubject(userName)
.claim(Constants.NAME_KEY, Constants.NAME_VALUE)
.claim(Constants.USER_TOKEN_KEY, clientKey.getKey())
.claim(Constants.SCOPE_KEY, Constants.SCOPE_VALUE)
.claim(Constants.TOKEN_TYPE, type.name())
.setIssuer(tokenIssuer)
.setHeaderParam(Constants.TOKEN_TYP, Constants.TOKEN_JWT)
.setHeaderParam(Constants.TOKEN_TYPE, type.name())
.setIssuedAt(currentTime)
.setExpiration(timeout(type))
.signWith(SignatureAlgorithm.HS256, key)
.compact();
return encrypt(token);
}
3) Каждый раз, когда вы генерируете токен в первый раз, вы генерируете 2 токена: accessToken и Refresh Token.
AccessToken недолговечен и скоро истекает. - скажем 5 минут.
Токен обновления имеет срок действия onger: например: 20 минут.
Назначение токена обновления состоит в том, что вы можете использовать токен обновления для генерации нового токена доступа.
Поэтому, когда срок действия вашего маркера доступа истекает, просто вызовите метод обновления маркера, передав ему токен обновления. Этот метод должен вернуть пользователя из redis с новым токеном доступа.
С уважением,
R Rai