Server

JWT Authentication이란 (JSON Web Token)

이소금 2021. 11. 17. 23:53
반응형

JWT Authentication (JSON Web Token)

  1. 로그인 방식에는 인증(Authentication) / 인가(Authorization) 두가지 방법이 있음
    1. 인증 방식 : 로그인 아이디 - 패스워드를 통해 접근 가능
      1. 단점
        1. db 저장된 사용자 계정의 해시값 > 사용자 암호를 알고리즘으로 계산한 값과 일치하는지 확인하는 과정 > 무겁고 오래 걸리는 작업
        2. 요청마다 아이디, 패스워드 전송 > 보안상 위험
    2. 인가 방식 : 사용자가 한번 인증을 받고난  지속적으로 접근
      1. 세션(Session) 방식
        1. 전통적 기법, 서버 기반 인증 방법
        2. 세션 id 사용 > 사용자의 로그인 지속되는 상태를 지칭해서 '세션'이라 통칭
          1. 방식
            1. 로그인 성공 > 세션 발행
            2. 세션 브라우저(크롬에 session id 쿠키 설정), 서버 메모리에도 저장
            3. 인가 요청 서버에 세션값 같이 보냄
            4. 서버는 메모리에 저장된 , 세션값 비교 맞으면 authorization
          2. 단점
            1. 세션이 서버에 저장되어 계속 따라다님 > 다중 접속 메모리 부족(이해 안감)
            2. 서버 재부팅 메모리 휘발 > 전면 로그인 필요
            3. 확장성 측면) 서버 분산 세션 유지 불안정 > 서버 확장 어려움
      2. JWT (Json Web Token)
        1. ** 세션처럼 로그인 시마다 로그인 지속 상태를 계속 트래킹 하고 있을 없으니 아예 로그인 시에 암호화 토큰을 발행하여 해당 토큰을 가지고 접속 시도를 때마다 로그인과 같은 접근 권한을 주는것, 그렇지만 안전을 위해 토큰을 암호화 하여 db 보관
        2. 사용자 로그인 토큰 발행 > (세션과 다르게) 서버가 기억하고 있지 않음
          1. 시간에 따라 상태값 변경 = stateful (ex. 세션)
          2. 시간에 따라 상태값 변경 X = stateless (ex. JWT)
        3. 토큰은 3가지 데이터를 이어붙인 형태로 암호화 되어 발행
          1. 헤더: 알고리즘( 서명 값을 만드는 사용될 알고리즘이 지정)
          2. 페이로드: 토큰이 갖는 데이터
          3. 서명 :  1 헤더에 정의된 알고리즘을 통해 암호화한 비밀 값으로 서버만 알고 있음
반응형

'Server' 카테고리의 다른 글

Burp Suite Community Edition 사용법  (0) 2024.01.19
PostgreSQL: 맥 psycopg2 설치 에러 해결법  (0) 2019.10.04