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