[Spring Security] 기본 개념 & 구조

SIK407·2023년 8월 31일
0

spring

목록 보기
2/11

스프링 시큐리티란?

[Spring Securtiy]
스프링 기반의 App의 보안을 담당하는 스프링 하위 프레임워크!
Security는 인증, 권한에 대한 부분을 Filter의 흐름에 따라 처리하게 된다.
Spring Securtiy는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 짤 필요가 없다라는 큰 이점이 있다.

Security가 크게 3개를 담당하게 된다.
인증(Authentication): 리소스에 접근한 대상에 대해 누구인지 확인하는 과정 => 즉, 누구인가?
인가(Authorize): 해당 리소스에 대해 접근 가능한 권한을 가지고 있는지 확인하는 과정
권한(Admission)

text

출처: https://devuna.tistory.com/55

Token

세션방식이 아닌 토큰방식으로 만들 생각이라... 포스트도 토큰으로만 올릴 예정이다. 토큰방식으로 했을 때 이점이 너무 많다. 지금부터 그걸 설명할 것이다.

토큰 기반의 인증 시스템은 인증받은 사용자들에게 토큰을 발급하고, Api로 요청을 할 때, 헤더에 토큰을 함께 넣어서 유효성 검사를 한다.

이러한 시스템에서는 더이상 사용자의 인증 정보를 서버나 세션에 유지하지 않고, 클라이언트 측에서 들어오는 요청만으로 작업을 처리한다.

즉, 그냥 토큰 값만 클라이언트 측에서 가지고 있으면 되니까 상태를 유지할 필요가 없으니 서버는 Stateless한 구조를 가지게 된다.

-> 그래서 사용자가 로그인이 되어 있는지 안되어있는지 신경쓰지 않고 손쉽게 시스템을 확장할 수 있다.
-> 왜냐, 토큰 값만 확인하면 되니까!

다음과 같은 과정으로 작동한다.

  1. 사용자가 id와 pw로 login을 한다.
  2. 서버에서 id와 pw를 확인한다.
    -> 맞으면 token을 발급하고 응답한다.
    -> 아니면 아니라고 잘못되었다고 응답한다.
  3. 클라이언트 측에서 전달받은 토큰을 저장해두고, 서버로 요청을 할 때마다 해당 토큰을 서버에 함께 전달한다.
    ->이때 Http 헤더에 토큰을 포함시킨다.
  4. 서버는 토큰의 유효성을 확인하고, 그에 맞게 응답한다.

출처: https://mangkyu.tistory.com/55



최근에는 토큰 중에는 Json을 이용하는 JWT(Json Web Token)를 주로 사용한다!

profile
Spring 백엔드!

0개의 댓글

관련 채용 정보