본문 바로가기
기술면접

[기술면접] 240117 세션기반 인증과 토큰기반 인증, JWT, Refresh, Access Token

by studymode 2024. 1. 17.

17. 세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.

  • 세션 기반 인가는 사용자의 인증 정보가 서버의 세션 저장소에 저장되는 방식이다. 사용자의 정보를 서버의 세션 저장소에 저장하고, 사용자에게는 저장된 식별자인 Session ID를 발급한다. 발급된 ID는 브라우저에 쿠키 형태로 저장되지만, 실제 인증 정보는 서버에 저장된다. // 브라우저는 인증 절차를 마친 이후에 요청마다 HTTP Cookie헤더에 Session ID를 함께 서버로 전송한다. 서버는 요청을 전달받고, Session ID에 해당하는 세션 정보가 세션 저장소에 존재한다면 해당 사용자를 인증된 사용자로 판단한다. 
  • 세션 기반 인증이 인증 정보를 서버에 저장하는 방식이라면, 토큰기반 인증은 인증 정보를 클라이언트가 직접 들고 있는 방식이다. 이때 인증 정보가 토큰의 형태로 브라우저의 로컬 스토리지(혹은 쿠키)에 저장된다. 대표적인 토큰인 JWT의 경우 디지털 서명이 존재해 토큰의 내용이 위조 변조 되었는지 서버측에서 확인할 수 있다. //  토큰 기반 인증에서는 사용자가 가지고 있는 토큰을 HTTP의 Authorization 헤더에 실어 보낸다. 이 헤더를 수신한 서버는 토큰이 위변조 되었거나, 만료 시간이 지나지 않았는지 확인한 이후 토큰에 담겨 있는 사용자 인증 정보를 확인해 사용자를 인가한다. 

 

 

18. JWT, Refresh, Access Token에 대해서 설명해주세요.

  • JWT는 헤더, 내용, 서명으로 구성된다. 
  • 유효기간이 짧은 토큰을 발급받게 되면 사용자 입장에서 자주 로그인해야하고, 유효기간이 긴 토큰을 발급하면 보안에 취약하다는 약점이 있어, 이점을 보안하기 위해 Refresh Tocken을 사용한다.
  • Refresh Token은 Acess Tocken의 유효기간이 만료되었을때 새로 발급해주는 열쇠가 됩니다. 

발급 원리:

기본적으로 로그인 같은 과정을 Access Token과 Refresh Token을 모두 발급합니다. 

이때 Refresh Token만 서버측에 저장하며, Refresh Token과 Access Token을 쿠키 혹은 웹스토리지에 저장합니다.

사용자가 인증이 필요한 API에 접근하고자 하면, 가장 먼저 토큰을 검사하고, 로그아웃시 두가지 토큰 모두 만료시킵니다. 

 

출처: https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-Access-Token-Refresh-Token-%EC%9B%90%EB%A6%AC-feat-JWT#refresh_token%EC%9D%B4_%EC%99%9C_%ED%95%84%EC%9A%94%ED%95%9C%EA%B0%80