Skip to content

Commit 6b624c7

Browse files
committed
refactor(security): update deprecated jwts methods
1 parent 9f4ec53 commit 6b624c7

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed
Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package com.todo.todoapi.security;
22

33
import java.nio.charset.StandardCharsets;
4-
import java.security.Key;
54
import java.time.Duration;
65
import java.time.Instant;
76
import java.util.Date;
87

8+
import javax.crypto.SecretKey;
9+
910
import io.jsonwebtoken.Claims;
1011
import io.jsonwebtoken.ExpiredJwtException;
11-
import io.jsonwebtoken.Header;
1212
import io.jsonwebtoken.Jws;
1313
import io.jsonwebtoken.JwtParser;
1414
import io.jsonwebtoken.Jwts;
1515
import io.jsonwebtoken.MalformedJwtException;
16-
import io.jsonwebtoken.SignatureAlgorithm;
1716
import io.jsonwebtoken.UnsupportedJwtException;
1817
import io.jsonwebtoken.security.Keys;
1918
import org.springframework.beans.factory.annotation.Value;
@@ -36,19 +35,23 @@ public JwtTokenProvider(
3635
}
3736

3837
public final String generateAccessToken(final String username) {
39-
Key key = initializeKey(jwtSecret);
38+
SecretKey key = initializeKey(jwtSecret);
4039
Instant now = Instant.now();
4140
Instant expiry = now.plus(Duration.ofHours(12));
4241

4342
return Jwts.builder()
44-
.setHeaderParam("typ", Header.JWT_TYPE)
45-
.setSubject(username)
46-
.setIssuedAt(Date.from(now))
47-
.setExpiration(Date.from(expiry))
48-
.setIssuer(jwtIssuer)
49-
.setAudience(jwtAudience)
50-
.setNotBefore(Date.from(now))
51-
.signWith(key, SignatureAlgorithm.HS256)
43+
.header()
44+
.type("JWT")
45+
.and()
46+
.subject(username)
47+
.issuedAt(Date.from(now))
48+
.expiration(Date.from(expiry))
49+
.issuer(jwtIssuer)
50+
.audience()
51+
.add(jwtAudience)
52+
.and()
53+
.notBefore(Date.from(now))
54+
.signWith(key, Jwts.SIG.HS256)
5255
.compact();
5356
}
5457

@@ -59,14 +62,14 @@ public final String getUsername(final String jwtToken) {
5962

6063
public final boolean validateToken(final String jwtToken) {
6164
try {
62-
Key key = initializeKey(jwtSecret);
65+
SecretKey key = initializeKey(jwtSecret);
6366

64-
Jwts.parserBuilder()
67+
Jwts.parser()
6568
.requireIssuer(jwtIssuer)
6669
.requireAudience(jwtAudience)
67-
.setSigningKey(key)
70+
.verifyWith(key)
6871
.build()
69-
.parseClaimsJws(jwtToken);
72+
.parseSignedClaims(jwtToken);
7073
return true;
7174
} catch (MalformedJwtException
7275
| ExpiredJwtException
@@ -76,7 +79,7 @@ public final boolean validateToken(final String jwtToken) {
7679
}
7780
}
7881

79-
private Key initializeKey(String jwtSecret) {
82+
private SecretKey initializeKey(String jwtSecret) {
8083
try {
8184
return Keys.hmacShaKeyFor(jwtSecret.getBytes(StandardCharsets.UTF_8));
8285
} catch (Exception e) {
@@ -85,10 +88,10 @@ private Key initializeKey(String jwtSecret) {
8588
}
8689

8790
private Claims getJwtClaims(final String jwtToken) {
88-
Key key = initializeKey(jwtSecret);
91+
SecretKey key = initializeKey(jwtSecret);
8992

90-
JwtParser parser = Jwts.parserBuilder().setSigningKey(key).build();
91-
Jws<Claims> jwt = parser.parseClaimsJws(jwtToken);
92-
return jwt.getBody();
93+
JwtParser parser = Jwts.parser().verifyWith(key).build();
94+
Jws<Claims> jwt = parser.parseSignedClaims(jwtToken);
95+
return jwt.getPayload();
9396
}
9497
}

0 commit comments

Comments
 (0)