킹다의 개발블로그

Spring Security - 2 본문

02. 프레임워크/spring

Spring Security - 2

킹다킹 2021. 8. 10. 15:15
반응형

1. Spring Security의 아키텍쳐

1. 사용자가 로그인을 하면 요청이 들어옴

2. AuthenticationFilter가 사용자의 정보를 인터셉트한다. 그다음 UsernamePasswordAuthenticationToken을 이용해서 _인증용 객체_를 만듦!!

인증은 filter에서 하지 않음🧨 filter는 다른곳으로 '인가'를 해줌(말그대로 필터라서)

3. _인증용 객체_를 실제 인증을 담당할 AuthenticationProvider에게 전달한다.

4. DB에서 사용자 인증 정보를 가져오기 위해 UserDetailsService 객체한테 사용자 아이디를 넘긴다.

이부분에서 DB 사용자 정보 select

5. DB에서 인증에 사용할 사용자정보를 UserDetails라는 객체로 전달 받음.

6. AuthenticationProvider는 UserDetails 객체를 전달 받은 이후 실제 사용자의 입력정보와 UserDetails 객체를 가지고 인증을 시도한다.

7. 인증이 완료되면 SecurityContextHolder에 Authentication객체를 담는다. 그 후 AuthenticationSuccessHandle을 실행함!

실패 시 AuthenticationFailureHandler 실행!

!Authenticaion!

접근 주체는 보호된 리소스에 접근하는 대상이고 아이디이니까..

접근 주체인 아이디가 Authentication 객체를 생성함! 이 객체는 아까 말했듯이 SecurityContextHolder에 담김.

public interface Authentication extends Principal, Serializable {
    Collection<? extends GrantedAuthority> getAuthorities(); // Authentication 저장소에 의해 인증된 사용자의 권한 목록
    Object getCredentials(); // 비밀번호
    Object getDetails(); // 사용자 상세정보
    Object getPrincipal(); // ID
    boolean isAuthenticated(); //인증 여부
    void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException;
}

https://www.bottlehs.com/springboot/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-spring-security%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%9D%B8%EC%A6%9D-%EB%B0%8F-%EA%B6%8C%ED%95%9C%EB%B6%80%EC%97%AC/

반응형

'02. 프레임워크 > spring' 카테고리의 다른 글

Spring Cloud Config Client 설정해보기  (0) 2021.08.13
Spring Cloud Config Server 설정해보기  (0) 2021.08.13
@Valid  (0) 2021.08.12
Dao 와 Mapper의 차이  (2) 2021.08.10
Spring Security - 1  (7) 2020.10.26
Comments