У меня есть причина, чтобы сгенерировать токен доступа и обновить sh токен для пользователя и сохранить его в базе данных.
Как TokenStore
Я использую JdbcTokenStore
(кстати. 1) это лучший метод?)
Мой текущий код:
User u= getOrCreateUser(payload.getEmail());
DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
defaultTokenServices.setTokenStore(tokenStore);
String clientId = "acme";
boolean approved = true;
OAuth2Request oAuth2Request = new OAuth2Request(Map.of(), clientId,
parseUserAuthorities(u), approved, Set.of("SCOPE_READ", "SCOPE_WRITE"),
Set.of("/"), null, Set.of("code"), Map.of());
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(u, null, parseUserAuthorities(u));
OAuth2Authentication auth = new OAuth2Authentication(oAuth2Request, authenticationToken);
OAuth2AccessToken accessToken = defaultTokenServices.createAccessToken(auth);
tokenStore.storeAccessToken(accessToken, auth);
// tokenStore.storeRefreshToken(accessToken.getRefreshToken(), auth);
System.out.println(accessToken.getRefreshToken());
return accessToken;
Приведенный выше код генерирует токен доступа и также сохраняет его в базе данных. Но,
Это правильное решение? Ток refre sh равен нулю, почему? Если я использую этот сгенерированный токен для конечной точки, где только может быть аутентифицированный запрос, у меня нет access. Не лучше ли реализовать токен JWT вместо этого?