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)
   482   483   484   485   486   487   488   489   490   491   492