JWT Json Web Token
2023. 2. 9. 11:08ㆍgongbu
- 인증에 필요한 정보들을 암호화 시킨 JSON 토큰
- JWT토큰(Access Token)을 HTTP 헤더를 통해 전송하고, 서버에서 사용자를 식별하는 방식
- 기본적으로 Access Token, Refresh Token 두개로 이중인증하여 토큰 탈취로 인한 보안문제를 방지한다
JWT 구조
- Header, Payload, Signature 로 구성되어 있으며 각 요소는 "." 으로 구분되어 있다
- Header : 토큰 정보(암호화 알고리즘, 토큰타입)
{
"alg" : "HS256",
"typ" : "JWT"
}
- Payload : 내용(제목, 사용자, 토큰 발급시간)등의 "데이터" - 여기 있는거 말고 다른것도 들어갈 수 있음
(ex) iss : 발급자, aud : 대상자, nbf : 토큰 활성 날짜 , exp : 토큰 만료시간 , jti : 토큰 식별자 등)
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
- Signature(전자서명)
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
)
Access Token, Refresh Token
- 기본적으로 같은 형식을 가진 JWT 토큰이다.
- 저장위치와 수명, 사용방식이 다르다
- Access Token : 접근에 사용되는 토큰, 수명 짧음, 클라이언트에 저장
- Refresh Token : Access Token 재발급, 수명 길다, 데이터베이스에 유저정보와 같이 저장
Access Token | 차이 | Refresh Token |
짧음 | 수명 | 길다 |
서버 접근 | 사용 | Access Token 재발급 |
클라이언트 / 서버 | 저장위치 | 클라이언트 / 데이터 베이스 |
- 작동 흐름
서버에서 클라이언트에 웹 화면 제공
클라이언트에서 서버에 로그인 시도
서버에서 사용자에게 토큰 발급
클라이언트에서 서버로 Access Token 이용 서버 접근
서버에서 클라이언트로부터받은 Acces Token 확인 후 해당 Access Token에 알맞은 응답
- Access Token의 기한이 만료된 경우
클라이언트에서 Refresh Token 이용하여 서버에 Access Token 재발급 요청
서버에서 클라이언트에게 AccessToken 재발급
'gongbu' 카테고리의 다른 글
페이징(Paging) 방식 request , response (0) | 2023.02.11 |
---|---|
[Node.js][Express] express 공부 2 - request 종류 (path parmeter, query string, body parameter)(+ CRUD) (0) | 2023.02.10 |
REST API 규칙(임시) (0) | 2023.02.02 |
[JavaScript][jQuery] 문자열 대입연산자(?) 선택 (0) | 2023.02.02 |
[Spring] RequestMapping 404에러 (해결) (0) | 2023.01.31 |