728x90
반응형
Stateless Server
- 특징
- 토큰 인증 방식 - 토큰을 사용하여 사용자를 식별
- 각 요청은 이전 요청과 독립적으로 수행
- 주로 REST API에서 많이 사용
- 서버는 어떤 상태도 저장하지 않고, 세션 데이터를 유지할 필요 없음
- 장점
- 여러 서버를 사용해도 사용자를 식별할 수 있기 때문에 서버 확장성에 용이
- 종류
- JWT, OAuth
JWT
- 구조
- Header 또는 JOSE Header
- value
- typ : 토큰의 타입을 지정, "JWT"
- arg : 해싱 알고리즘을 지정, 주로 HMAC SHA256 또는 RSA 사용
- 해당 알고리즘은 토큰을 검증 시 사용되는 signature 부분에서 사용
- value를 base64 인코딩하여 생성
- Payload 또는 JWT Claim Set
- 토큰의 body로 토큰의 포함할 내용을 넣음
- value를 base64 인코딩하여 생성
- Signature
- 토큰의 위변조를 막기 위해 헤더에서 지정한 해싱 알고리즘으로 헤더와 페이로드 값을 비밀키를 사용해서 암호화하여 base 64로 인코딩하여 생성
- Process
- 특징
- 웹표준(RFC 7519)을 따름
- 토큰 자체가 사용자 정보를 가지고 있음
- 토큰 내 정보를 담는 것은 웹 개발자가 정할 수 있음
- JSON 객체를 사용
- self-contained 방식
- 토큰을 다양한 암호화 알고리즘으로 암호화가능
- 토큰이 검증됐다는 것을 증명하는 signature 포함
- 주로 request header에 위치
- 장점
- 기존의 기본 인증인 아이디와 비밀번호 기반보다는 상대적으로 보안이 강화됨
- 상태와 상관없이 다양한 서버에 폭넓게 사용 가능 -> 서버 확장성
- 세션 관리가 필요없으므로 서버의 리소스를 줄일 수 있음
- C, Java, Python, C++, R, C#, JavaScript 등 대부분의 주류 프로그래밍 언어에 지원됨
- 단점
- 토큰 내 사용자 정보를 포함하고 있어 보안이 취약할 수 있음
- 토큰 내 정보가 많을 수록, 토큰 자체 사이즈가 방대해질 수 있음
- 대표 사용 예
- Google IoT Cloud
출처
- https://jwt.io/
- https://www.quora.com/What-is-a-stateless-server
- https://blog.outsider.ne.kr/1160
- https://ko.wikipedia.org/wiki/OAuth
- https://blog.msalt.net/251
- https://velopert.com/2389
- https://www.quora.com/What-is-the-difference-between-Stateful-and-Stateless-Server
- https://brownbears.tistory.com/34
- https://gist.github.com/LeoHeo/c9678154b1dadd85add5862b30e969f8
- https://bcho.tistory.com/999
- http://www.opennaru.com/opennaru-blog/jwt-json-web-token/
728x90
반응형
'Web' 카테고리의 다른 글
compiler VS interpreter (0) | 2020.09.28 |
---|---|
CORS(Cross-Origin Resource Sharing / 교차 출처 자원 공유) (0) | 2020.09.23 |
HTTP 응답 상태 코드 (Response Status Code) (0) | 2020.07.15 |
[HTML5] Local Storage, Session Storage란? (0) | 2019.07.26 |
Stateful Server의 특징과 종류 (0) | 2019.04.10 |