ํ๋ก์ ํธ๊ฐ ๊ฑฐ์ ๋ง๋ฌด๋ฆฌ๋์ด ์ค๋์ ํผ์ ๊ฐ๋จํ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ํด๋ณด๊ณ ๊ฐ์ธ๊ณต๋ถ๋ฅผ ํ๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์ ์ธ์ฆ ๋ถ๋ถ์ ๊ตฌํํ๋ฉฐ ๊ณ ์๋ ํ๊ณ ์์ง๋ ๋ง์ ๋ค์ง ์๋ ๋ถ๋ถ์ด ๋ง์์ ์ดํ Spring ์ผ๋ก ๋์ด๊ฐ๋ฉด ์ข ๋ ์ ๊ตฌํํ ์ ์๋๋ก spring์์ jwt๋ฅผ ๋ค๋ฃจ๋ ์ฐ์ต์ ํ๋ค.
Java์์ JWT๋ฅผ ์ํด ์ ๊ณต๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํฌ๊ฒ 2๊ฐ๊ฐ ์๋ค.
auth0
์์ ๋ง๋ Java JWT
์ okta
์์ ๋ง๋ jjwt
๊ฐ ์๋ค.
okta
์ jjwt
๋ถํฐ ๊ฐ๋จํ๊ฒ ์์๋ณด์.
[ Maven ]
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
[ Gradle ]
implementation 'io.jsonwebtoken:jjwt-api:0.11.2'
Claim
์์ฑ๋ฐฉ๋ฒ
Strint jwtToken = Jwts.builder().addClaims()
.Map.of(
"exp",
"key1", "value1",
"key2", "value2", ...
)
.signWith(SignatureAlgorithm.HS256, "JWT_SECRET_KEY")
.compact();
Payload
ํ์ฑ๋ฐฉ๋ฒ (ํ ํฐ ๋์ฝ๋ฉ)
Jws<Claims> jwt = Jwts.parser()
.setSigningKey("JWT_SECRET_KEY")
.parseClaimsJws(jwtToken);
๋ค์์ผ๋ก auth0
์ Java JWT
๋ฅผ ๊ฐ๋จํ๊ฒ ์์๋ณด์.
[ Maven ]
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.18.2</version>
</dependency>
[ Gradle ]
implementation 'com.auth0:java-jwt:3.18.2'
Claim
์์ฑ๋ฐฉ๋ฒ
String jwtToken = JWT.create()
.withSubject("subject"
.withExpiresAt(new Date(System.currentTimeMillis() + ... )
.withClaim("key2", "value2")
.sign(Algorithm.HMAC256("JWT_SECRET_KEY"));
Payload
ํ์ฑ๋ฐฉ๋ฒ (ํ ํฐ ๋์ฝ๋ฉ)
DecodedJWT jwt = JWT.require(Algorithm.HMAC256("JWT_SECRET_KEY"))
.build()
.verify(jwtToken);
Java JWT
๋ jjwt
์ ๋ค๋ฅด๊ฒ key ์์ด ํ ํฐ์ ๋์ฝ๋ฉํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
์ฆ ํ ํฐ ๊ฒ์ฆ์ ์คํจํด๋ Claim์ ๋ณด๊ณ ํ์ํ๋ค๋ฉด ์๋ง๊ฒ ์๋ต์ ๋ด๋ ค์ค ์ ์๋ค๋ ๊ฒ์ด๋ค.
DecodedJWT token = JWT.decode(jwtToken)
token.getClaims()