[260709]인증·인가 기초

이상민·2026년 7월 9일

Spring

목록 보기
41/59

인증과 인가

인증(Authentication)

인증이란 사용자가 누구인지를 확인하는 절차이다.
보통 Spring에서는 DB에 등록된 사용자와 일치하는지를 증명하는 과정이다.
웹사이트에서 ID,PWD를 입력하여 로그인하는것, 스마트폰 잠금을 FACEID같은 방식으로 해제하는것 등이 전부 인증에 해당된다.
즉, 인증이란 쉽게 말해 로그인과 같다고 생각하면 좋다.

인가(Authorization)

인가는 인증된 사용자만 특정 기능이나 정보등에 접근할수 있는 권한이 있는지를 확인하는 절차이다.
예를 들어, 관리자는 다른 사용자가 작성한 게시글을 삭제할 수 있다던가, 유투브 구독을 구매한 사용자면 회원전용 비디오를 시청할 수 있다라는 것들이 전부 인가에 해당한다.
즉, 인가는 권한이라고 생각하면 좋다.


Session과 JWT

세션(Session)

세션이란 서버에서 유저의 로그인 상태를 기억하는것이다.
세션의 동작 방식은 다음과 같다.

  • 사용자가 ID/PWD를 입력하여 로그인을 시도한다.
  • 서버는 사용자의 로그인 정보가 유효한지를 판단하고, 유효한 경우 사용자에게 랜덤한 고유세션ID를 할당해준다. 그렇게 할당한 ID를 서버의 메모리나 DB에 저장한다.
  • 서버는 ID를 사용자에게 보내주고, 브라우저에서는 이 ID정보를 쿠키에 저장한다.
  • 이후 사용자가 서버에 요청을 보낼때마다 쿠키에 담긴 ID값을 함께 전달해주고, 서버는 그 ID를 통해 사용자를 식별하게된다.

쉽게 말해, 사용자가 로그인을 성공하면, 고유한ID를 생성하여 서버측에서 저장해주고 기억해주는것이다.

세션의 장단점

장점

  • 서버에서 모든 세션 정보를 관리하기 때문에, 보안에 유리하다
  • 특정 사용자를 조작하는 등의 제어가 간단하다
  • 쿠키에 고유한 세션 ID를 저장함으로 민감한 정보는 남지 않는다

단점

  • 사용자가 많으면 많을수록 서버에 과부하가 걸리게 된다
  • 확장성이 좋지않다

JWT(Json Web Token)

Session이 서버에 로그인 상태를 저장한다면, JWT는 그 반대로 서버에 로그인 상태를 저장하지 않는 stateless 인증 방식이다. 유저는 요청을 할때마다 JWT에 인증정보를 담아 전달한다.

JWT의 동작 흐름은 다음과 같다.

  • 사용자가 ID/PWD를 입력하여 로그인을 시도한다.
  • 서버는 로그인 정보가 유효할 시, 사용자의 정보·권한·만료시간 등을 담은 토큰을 생성하여 사용자에게 전달한다.
  • 전달받은 토큰은 사용자가 로컬 저장소나 쿠키에 저장한다.
  • 이후, 사용자가 서버에 요청을 보낼때마다 토큰을 함께 전달하여 유효한 토큰일시 요청을 처리하게 된다.

토큰의 장단점

장점

  • 무상태(Stateless) 및 확장성 : 서버가 저장하지 않음으로 부하가 줄고, 여러 서버로 확장이 쉬워진다
  • 유연성: 웹, 앱 가릴것 없이 다양한 환경에서 사용하기 편리하다

단점

  • 토큰이 탈취되면 토큰이 만료되기 전까지 악용된다.
  • 세션 ID보다 토큰의 크기가 더 크다
profile
백앤드 개발 브이로그

0개의 댓글