Page 487 - MDP2022-3
P. 487
accessTokenValidityInSeconds,
@Value("${jwt.refresh-token-validity-in-seconds}") long
refreshTokenValidityInSeconds
){
this.secret = secret;
this.accessTokenValidityInMilliseconds = accessTokenValidityInSeconds * 1000;
this.refreshTokenValidityInMilliseconds = refreshTokenValidityInSeconds * 1000;
}
@Override
public void afterPropertiesSet() {
byte[] keyBytes = Decoders.BASE64.decode(secret);
this.key = Keys.hmacShaKeyFor(keyBytes);
}
public TokenDto createToken(Authentication authentication) {
String authorities = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(","));
Date now = new Date();
String accessToken = Jwts.builder()
.setSubject(authentication.getName())
.claim(AUTHORITIES_KEY, authorities)
.signWith(key, SignatureAlgorithm.HS512)
.setExpiration(new Date(now.getTime() +accessTokenValidityInMilliseconds))
.compact();
String refreshToken = Jwts.builder()
.setSubject(authentication.getName())
.claim(AUTHORITIES_KEY, authorities)
.signWith(key, SignatureAlgorithm.HS512)
.setExpiration(new Date(now.getTime() +refreshTokenValidityInMilliseconds))
.compact();
r e t u r n
TokenDto.builder().accessToken(accessToken).refreshToken(refreshToken).build();
}
// JWT 토큰에서 인증 정보 조회
public Authentication getAuthentication(String token) {
Claims claims = Jwts
.parserBuilder()
.setSigningKey(key)