권한 인증방식

서버 인증 방식과 토큰 인증 방식


 

1. 서버 인증 방식 (Cookie , Session)

기존의 인증 시스템은 서버 기반의 인증 방식으로, 서버 측에서 사용자들의 정보를 기억하고 있어야 한다. 사용자들의 정보를 기억하기 위해서는 세션을 유지해야 하는데, 메모리나 디스크 또는 데이터베이스 등을 통해 관리한다. (Sateful)

 

 

2. 토큰 인증 방식 (JWT)

토큰 기반의 인증 방식은 인증받은 사용자들에게 토큰을 발급하고, 서버에 요청을 할 때 헤더에 토큰을 함께 보내도록 하여 유효성 검사를 한다. 이러한 시스템에서는 더이상 사용자의 인증 정보를 서버나 세션에 유지하지 않고 클라이언트 측에서 들어오는 요청만으로 작업을 처리한다 (Stateless)

 

 

JWT 란? 


 

JWT(JSON Web Token)는 정보를 JSON 객체 형태로 주고 받기 위해 표준규약에 따라 생성한 암호화된 토큰

 

 

JWT 구조


 

헤더(Header)

JWT 웹 토큰의 헤더 정보

- typ : 토큰의 타입, JWT만 존재

- alg : 알고리즘 방식을 지정하며 서명(Signature) 및 토큰 검증에 사용 

 

정보(Payload)

실제 토큰으로 사용하려는 데이터(Claim)가 담기는 부분

등록된 클레임(Registered Claim), 공개 클레임(Public Claim), 비공개 클레임(Private Claim)

 

서명(signature)

헤더(Header)와 정보(Payload)를 합친 후 Secret 키와 함께 Header의 해싱 알고리즘으로 인코딩

 

 

JWT 동작 원리


 

서버 기반 인증 방식 (session, cookie)

 

토큰 기반 인증 방식 (JWT)

 

토큰 기반 인증 방식은 사용자 인증 완료 이후 토큰을 발급한다. 클라이언트쪽에서는 전달받은 토큰을 저장해두고 서버에 요청을 할 때마다 해당 토큰을 서버에 함께 전달한다. 이후 서버는 토큰을 검증하고 응답한다.

 

 

 

JWT 필요성


 

API 호출 및 기능별 등 권한 체크 시 마다 DB 조회 및 쿠키를 전달하지 않고 추가 저장소가 필요 없기 때문에 서버 부하 및 취약점을 없앨수 있다. 또한 여러 디바이스 및 도메인에서도 토큰만 유효하다면 인증을 정상적으로 처리할 수 있다. 

 

 

 

참고

mangkyu.tistory.com/56

tansfil.tistory.com/58

sanghaklee.tistory.com/47

www.opennaru.com/opennaru-blog/jwt-json-web-token/

covenant.tistory.com/201

m.blog.naver.com/PostView.nhn?blogId=shino1025&logNo=221568544633&proxyReferer=https:%2F%2Fwww.google.com%2F

'기타' 카테고리의 다른 글

GIT  (0) 2021.03.07
알림 관련 프로세스 (FCM, Web Socket, SSE)  (0) 2020.08.16
Template Engine  (0) 2020.08.15
Database CRUD 타입 및 사용 방법  (0) 2020.08.09
springboot 테스트 코드 작성법과 TDD  (0) 2020.08.08

Tags

Read Next