-
[스프링 시큐리티] 인증 정보 저장 객체(Authentication)강의노트/스프링 시큐리티 2020. 9. 14. 18:14
인증
- 클라이언트가 자신이 주장하는 사용자와 같은 사용자인지를 확인하는 과정이다.
- 인증 시 id와 password를 담고 인증 검증을 위해 전달되어 사용된다.
- 인증 후 최종 인증 결과를 Authentication객체(User객체, 권한 정보)에 담고 SecurityContext에 저장되어 전역적으로 참조가 가능해진다.
Authentication authentication = SecurityContextHolder.getContext().getAuthentication()
구조
- principal : 사용자 아이디 또는 User 객체
- credentials : 사용자 비밀번호
- authorities : 인증된 사용자의 권한 목록
- details : 사용자의 인증 정보 외에 부가 정보
- Authenticated : 인증 여부
코드 분석
FilterChainProxy에서 AbstractAuthenticationProcessingFilter를 호출하고 내부에서 attemptAuthentication() 함수를 호출한다.
클라이언트에서 입력한 username과 password를 가지고 AuthenticationToken을 생성하고 AuthenticationManager의 authenticate() 함수를 호출하여 인증을 요청한다.
AuthenticationProvider에 전달 받은 AuthenticationToken을 넘기면서 인증을 요청한다.
인증 처리가 완료되면 최종 인증 결과를 다시 AuthenticationToken에 저장해서 리턴한다.
인증 성공 시 최종 리턴 받은 AuthenticationToken을 SecurityContext에 설정한다.
'강의노트 > 스프링 시큐리티' 카테고리의 다른 글
[스프링 시큐리티] SecurityContext 객체 생성, 저장, 조회(SecurityContextPersistenceFilter) (0) 2020.09.14 [스프링 시큐리티] Authentication 객체 저장소(SecurityContext, SecurityContextHolder) (0) 2020.09.14 [스프링 시큐리티] 필터 초기화와 다중 보안 설정 (0) 2020.09.14 [스프링 시큐리티] DelegatingFilterProxy & FilterChainProxy (0) 2020.09.13 [스프링 시큐리티] CsrfFilter (0) 2020.09.12