Spring Security 개념을 정리한 마크다운
- 인증(Authentication)
보호된 리소스에 접근하는 대상, 즉 사용자에게 적절한 접근 권한이 있는지 확인하는 일련의 과정을 의미
이때, 보호된 리소스에 접근하려는 대상(사용자)를 접근 주체 라고 부른다.
- 권한(Authorization) 인증 절차가 끝난 후 접근 주체가 보호된 리소스에 접근이 가능한지 결정하는 것을 의미,
이때, 권한을 부여하는 작업을 인가라고 한다.
Authentication : 입증, 인증
Provider : 제공자
위 그림의 동작 플로우
- 사용자가 로그인 정보를 함께 인증 요청(Http Request)
- AuthenticationFilter가 이 요청을 가로챔. 이때 가로챈 정보를 통해 UsernamePasswordAuthenticationToken(이하, 토큰 객체) 이라는 인증용 객체를 생성
- AuthenticationManager의 구현체인 ProviderManager에게 토큰 객체를 전달
- 다시 AuthenticationProvider에 토큰 객체를 전달
- 실제 데이터베이스에서 사용자 인증정보를 가져오는 UserDetailsService에 사용자 정보(아이디)를 전달
- 넘겨받은 사용자 정보를 통해 DB에서 찾은 사용자 정보인 UserDetails 객체를 생성
- AuthenticationProvider는 UserDetails를 넘겨받고 사용자 정보를 비교
- 인증이 완료되면 권한 등의 사용자 정보를 담은 Authentication 객체를 반환
- 다시 최초의 AuthenticationFilter에 Authentication 객체가 반환
- Authentication 객체를 SecurityContext에 저장