[네트워크] 세션기반 인증방식_토큰기반 인증방식

DEV_HOYA·2023년 12월 12일
0

CS

목록 보기
35/55
post-thumbnail

📌 세션기반인증방식

  • HTTP의 특징 중 하나는 stateless하다.
  • 즉, HTTP 요청을 통해 데이터를 주고 받을 때, 요청이 끝나면 요청한 사용자의 정보를 유지하지 않는 특징이 있다.

✅ 세션

  • 서버와 클라이언트의 연결이 활성화된 상태

✅ 세션ID

  • 웹 서버 또는 DB에 저장되는 클라이언트에 대한 유일한 ID

⭐ 세션 기반 로그인 프로세스


✅ 단점

  • 사용자의 상태에 관한 데이터를 서버에 저장했을 때 로그인 중인 유저의 수가 늘어난다면 서버의 메모리에 과부하가 일어남
  • DB중 RDBMS에 저장한다면 직렬화 및 역직렬화에 관한 오버헤드가 발생

📌 토큰기반인증방식

  • state를 모두 토큰 자체만으로 처리하며 토큰을 처리하는 한 서버를 두고 다른 컨텐츠를 제공하는 서버는 모두 stateless하게 만드는 것
  • 토큰은 주로 JWT토큰을 활용
  • 로그인 시, access token과 refresh token이 발급됨

⭐ JWT(Json Web Token)

  • JSON객체로 인코딩되며 메시지 인증, 암호화에 사용됨
  • 헤더 : 토큰 유형과 서명 알고리즘, base64URL로 인코딩
  • 페이로드 : 데이터, 토큰 발급자, 토큰 유효기간, base64URL로 인코딩
  • 시그니처 : (인코딩된 헤더 + 페이로드) + 비밀키를 기반으로 헤더에 명시된 알고리즘으로 다시 생성한 값

✅ 장점

  • 사용자 인증에 필요한 모든 정보는 토큰 자체에 포함되기 때문에 별도의 인증 저장소가 필요없다
  • 다른 유형의 토큰과 비교했을 때 경량화되어있음
  • 디코딩했을 때 JSON이 나오기 때문에 JSON을 기반으로 쉽게 직렬화, 역직렬화가 가능

✅ 단점

  • 토큰이 비대해질 경우 서버과부하에 영향을 줌
  • 토큰을 탈취당할 경우 디코딩했을때 데이터를 볼 수 있음

✅ access token

  • 수명을 짧게 설정
  • 로그인 유지
  • Bearer 을 앞에 둬서 토큰기반인증방식이라는 것을 알려주어야 함
  • HTTPS를 사용
  • 쿠키에 저장한다면 sameSite : 'Strict'
  • url에 토큰을 전달하면 안됨

✅ refresh token

  • 수명을 길게 설정
  • access token이 만료되거나 사용자가 새로고침을 한 경우, access token을 재발급 하기위해 사용됨(access token의 단점 보완)

0개의 댓글