jwt
Json Web Token์ ์ค์๋ง
์ธ์  ๋์ ์ ํ์ ์ธ์ฆ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ ์ด๋ค ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ์ฌ์ฉํ๋ ๋ฏ.
JWT ๊ตฌ์ฑ์์
.์ ๊ตฌ๋ถ์๋ก 3๊ฐ์ง ๋ฌธ์์ด๋ก ๊ตฌ์ฑ๋์ด์์.[ํค๋header].[๋ด์ฉpayload].[์๋ช signature]ํค๋
alg,typ๋๊ฐ์ง ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์.alg : ํด์ฑ ์๊ณ ๋ฆฌ์ฆ์ ๋งํจ.
typ : ํ ํฐ ํ์
๋ด์ฉ
์ ๋ณด๋ค์ด ๋ค์ด๊ฐ ์๋ ๋ถ๋ถ.
๋ณดํต claim ์ด๋ผ ๋ถ๋ฅธ๋ค.
name, valueํ ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์.ํด๋ ์์, registered, public, private ํด๋ ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์.
ํด๋ ์
๋ฑ๋ก๋ ํด๋ ์
ํ ํฐ์ ๋ด๊ธฐ๋ ์ ๋ณด๋ค์ ์ด๋ฆname์ด ์ด๋ฏธ ์ ํด์ง ํด๋ ์.
์ด๋ฌํ ์ ํด์ง ํด๋ ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ฐ๋ฐ์๊ฐ ์ ํํ๋ฉด ๋จ.
์์
iss: ํ ํฐ ๋ฐ๊ธ์ (issuer)
sub: ํ ํฐ ์ ๋ชฉ (subject)
aud: ํ ํฐ ๋์์ (audience)
exp: ํ ํฐ์ ๋ง๋ฃ์๊ฐ (expiraton), ์๊ฐ์ NumericDate ํ์์ผ๋ก ๋์ด์์ด์ผ ํ๋ฉฐ (์: 1480849147370) ์ธ์ ๋ ํ์ฌ ์๊ฐ๋ณด๋ค ์ดํ๋ก ์ค์ ๋์ด์์ด์ผํฉ๋๋ค.
nbf: Not Before ๋ฅผ ์๋ฏธํ๋ฉฐ, ํ ํฐ์ ํ์ฑ ๋ ์ง์ ๋น์ทํ ๊ฐ๋
์
๋๋ค. ์ฌ๊ธฐ์๋ NumericDate ํ์์ผ๋ก ๋ ์ง๋ฅผ ์ง์ ํ๋ฉฐ, ์ด ๋ ์ง๊ฐ ์ง๋๊ธฐ ์ ๊น์ง๋ ํ ํฐ์ด ์ฒ๋ฆฌ๋์ง ์์ต๋๋ค.
iat: ํ ํฐ์ด ๋ฐ๊ธ๋ ์๊ฐ (issued at), ์ด ๊ฐ์ ์ฌ์ฉํ์ฌ ํ ํฐ์ age ๊ฐ ์ผ๋ง๋ ๋์๋์ง ํ๋จ ํ  ์ ์์ต๋๋ค.
jti: JWT์ ๊ณ ์  ์๋ณ์๋ก์, ์ฃผ๋ก ์ค๋ณต์ ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ์ฌ ์ฌ์ฉ๋ฉ๋๋ค. ์ผํ์ฉ ํ ํฐ์ ์ฌ์ฉํ๋ฉด ์ ์ฉํฉ๋๋ค.๊ณต๊ฐ ํด๋ ์
URI ํ์์ผ๋ก ์ด๋ฆ์ด ์ง์ด์ง ํด๋ ์
์? ์ถฉ๋ ๋ฐฉ์ง๋ฅผ ์ํด.
์์ :
"https://velopert.com/jwt_claims/is_admin": true
๋น๊ณต๊ฐ ํด๋ ์
๋ฑ๋ก๋, ๊ณต๊ฐ๋ ํด๋ ์๋ ์๋, ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ํ์์ ์ํด์ ์ฌ์ฉ๋๋ ํด๋ ์ ์ด๋ฆ์ ๋งํจ
์๋ง๋ ์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ด ํด๋ ์ ํ๋๋ง์ ์ฌ์ฉํ๋ฉด ๋ ๋ฏ.
์๋ช
์๋ช ์ ํค๋์ ์ธ์ฝ๋ฉ๊ฐ๊ณผ ์ ๋ณด์ ์ธ์ฝ๋ฉ ๊ฐ์ ํฉ์น ํ, ๋น๋ฐํค๋ก ํด์ฌํ์ฌ ์์ฑ
์๋ฐ์์ JWT ์์ฑ๊ณผ ๊ฒ์ฆ ๊ณผ์ 
์ด๋ค ํด๋ ์๋ค(claim)์ ์ฌ์ฉํ ์ง ์ ํ๊ณ , JWT ํ ํฐ ์์ฑ
JWT๋ฅผ ์ํธํ(signWith) ์๋ช ํ์ฌ JWS๋ฅผ ๋ง๋ฌ.
์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๊ฒ์ธ์ง๋ ์ ํด์ผํ๊ณ
JWT ์์ถ(compact)
์ฃผ์ํด์ผํ  ์ 
ํ ํฐ์๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ฉด ์๋จ.
์? ๋ณ์กฐ์ ๊ฐํ ๊ฒ์ด์ง, ๋ณด์์ ๊ฐํ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์
์ด๋ฅผ ์ํด์, ์ ํจ๊ธฐ๊ฐ, ์์ฑ๊ธฐ๊ฐ, ๊ถํ๋ฑ์ ์ค์ ํ๋ ๊ฒ.
์ฐธ๊ณ
https://jwt.io/
https://velopert.com/2389
https://medium.com/@OutOfBedlam/jwt-%EC%9E%90%EB%B0%94-%EA%B0%80%EC%9D%B4%EB%93%9C-53ccd7b2ba10
Last updated
Was this helpful?