Spring Security는 집의 보안 시스템이라고 보면 이해하기 쉽다.
방문객을 체크하고 특정 방에 들어갈 권한을 판단하는 보안 시스템의 구조가 Spring Security와 비슷하다.
방문객(사용자)이 문을 노크하면(웹 사이트에 요청) 이 필터 체인이 이를 먼저 접수한다.
사용자의 정보를 확인한다.
"이 방문객(사용자)이 우리 집에 올 권한이 있는가?"를 검사한다.
인증이 완료되면 사용자의 정보를 잠시 저장해둔다.
마치 방문객의 정보를 일시적으로 보관하는 로그북처럼 말이다.
이제 이 사용자가 집 안의 어느 방에 들어갈 수 있는지를 판단한다.
"방문객은 게스트 룸만을 갈 수 있다"라는 규칙을 확인하고 권한을 주는 것이다.
JWT 발급 받는 것은 놀이 동산에서 입장권을 받는 것과 같은
입장권의 역활을 한다고 볼 수 있다.
사용자가 아이디와 비밀번호로 입장권을 요청한다.
사용자의 정보가 올바른지 확인한다.
Spring Security의 AuthenticationManager
가 이 역할을 한다.
올바른 사용자라면 입장권인 JWT를 생성한다.
이 토큰에는 사용자의 정보와 유효 기간 등이 포함되어 있다.
생성된 JWT를 사용자에게 반환한다.
사용자는 이 JWT를 이후의 요청에 포함시켜 자신을 증명한다.
서버는 이 JWT를 확인하고 유효하다면 요청을 처리하게 된다