시큐리티 인증 / 인가 흐름도
- UserDetailsService
- UserDetailsService의 주요 기능은 사용자와 관련된 상세 데이터를 로드하는 것이며 사용자의 신원, 권한, 자격 증명 등과 같은 정보를 포함 가능
- DB와 같은 저장소로부터 유저 정보를 가져올 때 사용
→ 반드시 UserDetailsService를 사용해야하는 것은 아님
- DB와 같은 저장소로부터 유저 정보를 가져올 때 사용
- 이 인터페이스를 사용하는 클래스는 주로 AuthenticationProvider 이며 사용자가 시스템에 존재하는지 여부와 사용자 데이터를 검색하고 인증 과정 수행
- UserDetailsService의 loadUserByUsername 메서드
⇒ 사용자의 이름으로 사용자 데이터를 검색하고, 해당 데이터를 UserDetails 객체로 반환
- UserDetailsService의 주요 기능은 사용자와 관련된 상세 데이터를 로드하는 것이며 사용자의 신원, 권한, 자격 증명 등과 같은 정보를 포함 가능
UserDetailsService 흐름도
- Repository에서 DB에 접근하여 username에 맞는 사용자 정보를 가지고 와서 도메인 객체(엔티티 등)에 담음
- 도메인 객체의 정보를 그대로 전달하는 것이 아니라 UserDetails 타입으로 변경해서 AuthenticationProvider에게 반환
- 사용자 정보를 찾을 수 없을 경우 UserNotFoundException 발생
UserDetailsService 사용 방법
- UserDetailsService만 커스터마이징할 경우 다음과 같이 적용
- AuthenticationProvider 와 함께 커스트 마이징 할 경우 AuthenticationProvider 에 직접 주입해서 사용
추가 내용
- UserDetailsService를 @Bean으로 하나만 정의할 경우 자동으로 커스텀한 UserDetailService 사용
→ 실질적으로 위의 사진처럼 http.userDetails(customUserDetailsServcie())와 같은 코드가 불 필요 - 하지만, 빈으로 등록하지 않고 일반 객체로 사용할 경우 http.userDetailsService(new customUserDetailsService()) 코드 필수
'Language > Spring Security' 카테고리의 다른 글
SecurityContextRepository / SecurityContextHolderFilter (0) | 2024.07.25 |
---|---|
사용자 상세 - UserDetails (0) | 2024.07.24 |
인증 제공자 - AuthenticationProvider (0) | 2024.07.24 |
인증 관리자 - AuthenticationManager (0) | 2024.07.24 |
인증 컨텍스트 - SecurityContext / SecurityContextHolder (0) | 2024.07.16 |