본문 바로가기

개발(합니다)/방법론

Stateless와 Stateful 그리고 JWT 특징

반응형

REST API 사용을 목표로 토큰 인증을 염두해두었고 JWT(Json Web Token)을 사용하기로 했습니다.

인증 방식과 JWT에 대해 간단히 정리합니다.


Stateless와 Stateful


Stateful는 기존 방식으로 로그인 시 서버에서 유저의 session을 저장하는 형태입니다.

Stateless은 session 없이 인증 하는 방식으로 유저와 서버가 서로를 인식하는 수단을 공유하는 형태입니다.


REST API에서 지향하는 바는 Stateless이고 토큰 인증 방식을 사용합니다.

로그인 API로 아이디와 패스워드를 인증하고 토큰을 유저에게 발행합니다.

가장 많이 사용하는 패키지는 JWT이다.


Stateful의 한계

1. Session의 한계 : 서버의 무리가 감

2. Scale out의 문제 : 서버 확장이 어려움

3. 플랫폼 다양화 : web, mobile 요청 처리 어려움

4. CSRF의 문제 : 세션 보안 문제

5. CORS의 문제 : 도메인 리소스 문제

6. REST API : Stateless 지향



JWT(JSON Web Token)의 특징

1. Claim based Token
    Claim : 사용자의 데이터를 인코딩, 실 정보
3. JSON 포맷의 웹 토큰 인증
4. 정보와 회원 인증에 주로 사용하며 OAuth와 REST API가 대표적
5. 플랫폼(Web, Mobile) 다양화


콤마(.)를 구분하여 세 가지 데이터 형태로 변환하여 클라이언트와 서버 간의 인증을 합니다.


header :  토큰에 대한 설명을 담고 있습니다.

payload : 전송하는 데이터/claim을 담고 있습니.

signature : 토큰 무결성을 검증하는 해쉬을 담고 있습니다.


JWT는 암호화 하지 않은 문자열 데이터이므로 중요한 정보를 담아서는 안됩니다.





stateful과 stateless는 각각의 장단점이 있으므로 꼭 stateful이 안좋다고 할 수는 없습니다.

상황에 맞게 사용하면 됩니다.

반응형