Session, JWT 로그인

김태완·2023년 7월 23일
0

프론트엔드

목록 보기
29/30

인증과 인가

  • 인증 : 로그인을 해서, 해당 계정을 인증하는것
  • 인가 : 인증된 계정으로 허락된 서비스를 사용할수있는것 (ex. 인증받은 토큰을 가지고 mypage내용을 볼수있는것)

Session 로그인

서버에 로그인된 사용자들의 고유한 ID정보를 서버의 session에 담아두는것

장점

  • 서버에서 세션으로 관리하기때문에 클라이언트에서 직접 조작하기가 힘들고 서버측에서 만료 로그아웃 재인증등을 통제를 할 수 있다.

단점

  • 서버에서 상태를 관리해야하므로 stateless하지 못하다.
  • 이로인해 서버에 부하를 주고 확장성에 불리하다.

JWT 로그인

jwt는 헤더, 페이로드, 서명 세 부분으로 이루어져있음.

  • 헤더 : type="jwt"는 고정, alg는 사용된 알고리즘 기법
  • 페이로드 : 만료기간, 관리자정보 권한,등 원하는값들
  • 서명

서버는, Access 토큰을 받으면 서버에서 가지고있는 비밀키 + 헤더 + 페이로드 를 가지고 인코딩을 한뒤, 해당 서명과 동일한지를 판단함.

access 토큰과 refresh 토큰이 있다.

  • Access 토큰은 비교적 짧은 Expire를 가진 인가를 위한 토큰
  • Refresh 토큰은 비교적 긴 Expire를 가지고 Access토큰을 재발급 하기 위한 토큰.

장점

  • 서버에서 정보를 관리하지않기때문에 클라이언트와 서버가 독립적이고 stateless하여 확장성에 좋음

단점

  • 보안적인 측면에서 토큰 탈취라는 문제가 있다. 만료시간 관리를 잘 해야한다
  • 토큰을 검증하는 추가적인 로직이 필요하다

요약

session기반 로그인은 확장성이 낮고, 서버에 부담이 있지만 보안에 강하고 서버에 통제권을 가진다.
jwt토큰기반 로그인은 확장성이 높고 서버에 부담이 없지만, 토큰유출이라는 보안적인 문제가 있을수있고 서버측에서 통제가 힘들다.

profile
프론트엔드개발

0개의 댓글