Web

Stateless Server 특징과 종류

Bonita SY 2019. 4. 10. 09:16
728x90
반응형

Stateless Server

 

  • 특징
    1. 토큰 인증 방식 - 토큰을 사용하여 사용자를 식별
    2. 각 요청은 이전 요청과 독립적으로 수행
    3. 주로 REST API에서 많이 사용
    4. 서버는 어떤 상태도 저장하지 않고, 세션 데이터를 유지할 필요 없음
  • 장점
    • 여러 서버를 사용해도 사용자를 식별할 수 있기 때문에 서버 확장성에 용이
  • 종류
    • 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

출처

 

728x90
반응형