18
18
import org .springframework .security .core .userdetails .UserDetailsService ;
19
19
import org .springframework .stereotype .Service ;
20
20
21
- import java . security . Key ;
21
+ import javax . crypto . SecretKey ;
22
22
import java .time .Instant ;
23
23
import java .time .temporal .ChronoUnit ;
24
24
import java .util .Date ;
@@ -34,7 +34,7 @@ public class JwtTokenProvider {
34
34
35
35
private final UserDetailsService userDetailsService ;
36
36
private final UserService userService ;
37
- private Key key ;
37
+ private SecretKey key ;
38
38
39
39
@ PostConstruct
40
40
public void init () {
@@ -44,14 +44,16 @@ public void init() {
44
44
public String createAccessToken (final Long userId ,
45
45
final String username ,
46
46
final Set <Role > roles ) {
47
- Claims claims = Jwts .claims ().setSubject (username );
48
- claims .put ("id" , userId );
49
- claims .put ("roles" , resolveRoles (roles ));
47
+ Claims claims = Jwts .claims ()
48
+ .subject (username )
49
+ .add ("id" , userId )
50
+ .add ("roles" , resolveRoles (roles ))
51
+ .build ();
50
52
Instant validity = Instant .now ()
51
53
.plus (jwtProperties .getAccess (), ChronoUnit .HOURS );
52
54
return Jwts .builder ()
53
- .setClaims (claims )
54
- .setExpiration (Date .from (validity ))
55
+ .claims (claims )
56
+ .expiration (Date .from (validity ))
55
57
.signWith (key )
56
58
.compact ();
57
59
}
@@ -63,13 +65,15 @@ private List<String> resolveRoles(final Set<Role> roles) {
63
65
}
64
66
65
67
public String createRefreshToken (final Long userId , final String username ) {
66
- Claims claims = Jwts .claims ().setSubject (username );
67
- claims .put ("id" , userId );
68
+ Claims claims = Jwts .claims ()
69
+ .subject (username )
70
+ .add ("id" , userId )
71
+ .build ();
68
72
Instant validity = Instant .now ()
69
73
.plus (jwtProperties .getRefresh (), ChronoUnit .DAYS );
70
74
return Jwts .builder ()
71
- .setClaims (claims )
72
- .setExpiration (Date .from (validity ))
75
+ .claims (claims )
76
+ .expiration (Date .from (validity ))
73
77
.signWith (key )
74
78
.compact ();
75
79
}
@@ -94,31 +98,30 @@ public JwtResponse refreshUserTokens(final String refreshToken) {
94
98
95
99
public boolean validateToken (final String token ) {
96
100
Jws <Claims > claims = Jwts
97
- .parserBuilder ()
98
- .setSigningKey (key )
101
+ .parser ()
102
+ .verifyWith (key )
99
103
.build ()
100
- .parseClaimsJws (token );
101
- return ! claims .getBody ().getExpiration ().before (new Date ());
104
+ .parseSignedClaims (token );
105
+ return claims .getPayload ().getExpiration ().after (new Date ());
102
106
}
103
107
104
108
private String getId (final String token ) {
105
109
return Jwts
106
- .parserBuilder ()
107
- .setSigningKey (key )
110
+ .parser ()
111
+ .verifyWith (key )
108
112
.build ()
109
- .parseClaimsJws (token )
110
- .getBody ()
111
- .get ("id" )
112
- .toString ();
113
+ .parseSignedClaims (token )
114
+ .getPayload ()
115
+ .get ("id" , String .class );
113
116
}
114
117
115
118
private String getUsername (final String token ) {
116
119
return Jwts
117
- .parserBuilder ()
118
- .setSigningKey (key )
120
+ .parser ()
121
+ .verifyWith (key )
119
122
.build ()
120
- .parseClaimsJws (token )
121
- .getBody ()
123
+ .parseSignedClaims (token )
124
+ .getPayload ()
122
125
.getSubject ();
123
126
}
124
127
0 commit comments