JWT

개발하는 구황작물·2022년 7월 29일
0

jwt

목록 보기
1/2

JWT(JSON Web Token)

JWT(JSON Web Token)
선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위해 고안된 인터넷 표준 인증 방식이다. JSON포맷을 암호화 하거나 서명하여 그 값을 Web Token으로써 인증 과정에 사용한다.

JWT 구조

  1. Header

이것이 어떤 종류의 토큰인지, 어떤 알고리즘으로 서명(sign)할지 적혀 있다.

{
"alg" : "HS256",
"typ" : "JWT"
}

이 JSON 객체를 base64방식으로 인코딩한다.

  1. Payload

서버에서 활용할 수 있는 유저의 정보가 담겨져 있다.
어떤 정보에 접근 가능한지에 대한 권한을 담거나 사용자 유저 이름 등 필요한 정보를 담을 수 있다. 이때 너무 민감한 정보는 담지 않는다.

{
"sub" : "someInformation",
"name" : "phillip",
"iat" : 151623391
}

위의 JSON 객체를 base64방식으로 인코딩한다.

  1. Signature

base64로 인코딩된 첫 번째, 두 번째 부분이 완성되면 Signature에서는 원하는 비밀 키(암호화에 추가할 salt)와 Header에 지정한 알고리즘을 사용하여 암호화한다.

ex)

HMACSHA256(base64UrlEncode(header) + '.' + base64UrlEncode(payload), secret);

JWT의 종류

  1. 엑세스 토큰(Access Token)

보호된 정보들(유저 이메일, 전화번호부, ...)에 접근할 수 있는 권한부여에 사용한다. 클라이언트가 처음 인증을 받게 될 때(로그인), 엑세스 토큰과 리프레시 토큰을 같이 받는데, 실제 권한을 얻는데 사용되는 토큰은 엑세스 토큰이다.

탈취 방지를 위해 비교적 짧은 유효 기간으로 설정해야 한다.

  1. 리프레시 토큰(Refresh Token)

Access Token은 탈취 위험 때문에 짧은 유효 기간을 가진다. 유효기간이 짧은만큼, 로그인을 여러 번 해야 하는 불편함이 발생 할 수 있다. 이러한 단점을 보완하기 위해 상대적으로 유효 기간이 긴 Refresh Token을 처음 인증시 Access Token과 같이 주어 Access Token 만료시 새로 발급을 해주는 열쇠 역할을 한다.

profile
어쩌다보니 개발하게 된 구황작물

0개의 댓글