728x90

JWT는 JSON Web Token 방식을 의미한다. 

 

토큰이란? 

 

- 클라이언트가 서버에 접속을 하면, 서버에서 클라이언트에 인증되었다는 "토큰" 을 부여

- 세션은 서버의 메모리를 사용해야 하지만, 토큰은 클라이언트에 저장이 되어 서버의 부담을 덜 수 있다.

- 토큰 자체에 데이터가 들어있다.

- 앱과 서버가 통신 할 때 가장 많이 사용된다. ( 쿠키와 세션이 없기 때문 )

 

1. 사용자가 로그인을 하고, 서버는 사용자에거 유일한 토큰을 발급

2. 클라이언트는 토큰을 저장해 둔 뒤, 서버에 요청시 토큰을 포함해서 요청

3. 서버는 토큰을 검증하고 응답

 

단점

- 토큰 자체의 데이터가 길어, 네트워크 부하 가능성이 있다.

- 중요한 정보는 담을 수 없다

- 탈취를 당하면 대처하기 어렵다.

 

 

 

JWT 란?

 

- 인증에 필요한 정보들을 암호화시킨 JSON 토큰을 의미한다.

 

JWT = Header + Payload + Signature

 

 

 

Header : JWT 에서 사용할 타입 + 해시 알고리즘의 종류

 

Payload : 서버에서 첨부한 사용자 권한 정보와 데이터

                  보통 Registered claims + Public claims + Private claims

 

Signature : Header, Payload 를 Base64 URL-safe Encode 를 한 이후 Header 에 명시된 해시함수를 적용하고, 

                    개인키(Private Key)로 서명한 전자서명

 

 

1. 사용자가 로그인 인증 요청

2. 서버는 Header, PayLoad, Signature 을 정의 하고 이를 암호화한 JWT 를 생성

3. JWT 를 쿠키에 담아 클라이언트에게 발금

4. 클라이언트는 JWT 를 로컬 스토리지에 저정함

5. 클라이언트는 요청시 JWT 를 포함해서 요청을 보냄

 

장점

- 데이터 위변조를 막을 수 있다.

- 별도의 저장소가 필요 없다.

- 서버는 StateLess 한 상태가 가능하다.

- 토큰을 기반으로 다른 로그인 시스템에 접근, 권한 공유가 가능하다.

728x90

'🟢 개념 정리 > CS' 카테고리의 다른 글

RESTful 서비스란?  (0) 2023.03.27
Access Token과 Refresh Token  (0) 2023.03.25
쿠키, 세션  (0) 2023.03.22
RSA  (0) 2023.03.22
OAuth  (0) 2023.03.20

+ Recent posts