Spring Boot/Spring Security

[Spring Security] Authentication 인증

수수한개발자 2022. 6. 30.
728x90

Authentication 

Authentication는 인증을 의미합니다.

 

  • 스프링 시큐리티는 사용자의 인증정보를 저장하는 토큰 개념으로 사용한다.
  • 인증 시 id와 password를 담고 인증 검증을 위해 전달되어 사용된다.
  • 인증 후  최종 결과 (user 객체, 권한정보)를 담고 SecurirtyContxt에 저장되어 전역적으로 참조가 가능하다.
  •  Authentication authentication = SecurityContexHolder.getContext(). getAuthentication()

 

구조

1) pricipal: 사용자 아이디 혹은 User 객체를 저장

2) credentials : 사용자 비밀번호

3) authorities : 인증된 사용자의 권한 목록

4) details : 인증 부가 정보

5) Authenticated : 인증 여부 

 

 

사용자가 로그인할때 username 과 password를 입력해서 요청하면

UsernamePasswordAuthenticationFilter가 받아서 username과 password를 추출한다음에

Authentication 객체를 생성해

Principal 속성의  사용자 아이디를 저장하고

Credentials에 password를 저장한다.

이 객체가 인증 검증을 위해 AuthenticationManager로 전달 됩니다.

AuthenticationManager가 인증처리를 한다.

인증에 성공하면 Authentication 객체를 만들고

Principal 에 UserDetails가 들어가고

Credentials에 패스워드는 보안 때문에 비워두기도 합니다.

Authorities : 권한 목록을 담습니다.

Authenticated : true

그리고 

SecuityContextHolder안에  SecurityContext안에 Authentication객체가 저장된다.

728x90

댓글