<TIL> 43. 인증과 인가 개념 이해

YUJIN LEE·2023년 3월 4일
0

개발log

목록 보기
38/149

스프링 시큐리티 -> 스프링에서 인증과 인가를 관리해줌

인증(Authentication)

해당 유저가 실제 유저인지 인증하는 개념.

인가(Authorization)

해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념.

웹 어플리케이션의 인증의 특수성

  1. 일반적으로 서버-클라이언트의 구조.
  2. Http 프로토콜을 이용해 통신. -> 비연결성(Connectionless) 무상태(Stateless)로 이루어짐

비연결성(Connectionless)

서버와 클라이언트가 연결되어 있지 않음.
채팅이나 게임같은 것을 하지 않는 이상 서버와 클라이언트는 실제로 연결x
그 이유는 리소스를 절약하기 위해서.
서버와 클라이언트가 실제로 계속 연결되어있으면 서버의 비용이 기하급수적으로 늘어나
서버는 하나의 요청에 하나의 응답을 내버리고 연결을 끊는다.

무상태(Stateless)

서버가 클라이언트의 상태를 저장하지 않는다.
기존의 상태를 저장하는 것들도 마찬가지로 서버의 비용과 부담을 증가시키는 것이라 기존의 상태가 없다고 가정하는 프로토콜을 이용해 구현.
실제로 서버는 클라이언트가 직전에 어떠한 요청을 보냈는지 관심 없고, 알지 못함.

쿠키-세션 방식의 인증

서버가 특정 유저가 로그인 되었다는 상태를 저장하는 방식.
인증과 관련된 아주 약간의 정보만 서버가 가지게 있게 되고, 유저의 이전 상태의 전부는 아니더라도 인증과 관련된 최소한의 정보는 저장해서 로그인을 유지시킨다는 개념.

JWT 기반 인증

JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 토큰
JWT 기반 인증은 쿠키/세션 방식과 유사하게 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별한다.

JWT는 Refresh token과 Access token으로 분리해 더 높은 보안과 편의성을 가져간다.

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글