시큐리티 인증 / 인가 흐름도
- UserDetails
- 사용자의 기본 정보를 저장하는 인터페이스로서 Spring Security에서 사용 하는 사용자 타입
- 개발자마다 여러 도메인 객체를 생성(User, UserDao, UserDto 등)하면 스프링 시큐리티가 인식 할 수 없음
- 하지만, UserDetails에 담게 되면 스프링 시큐리티는 UserDetails만 바라보기 때문에 어떤 타입이든 문제가 없음
- 저장된 사용자 정보는 추후에 인증 절차에서 사용되기 위해 Authentication 객체에 포함되며 구현체로서 User클래스가 제공
- 사용자의 기본 정보를 저장하는 인터페이스로서 Spring Security에서 사용 하는 사용자 타입
- UserDetails 메서드
메서드 | 설명 |
isCredentialIsNonExpired() | 비밀번호가 유효 기간이 지났는지를 확인 → 유효 기간 만료 시 비밀번호 인증 불가 |
isAccountNonExpired() | 사용자 계정의 유효기간이 지났는지를 나타냄 → 기간이 만료된 계정 인증 불가 |
getUsername() | 사용자에게 부여된 권한을 반환(null 반환 불가) |
getAuthorities() | 사용자가 잠겨 있는지 아닌지를 나타냄 → 잠긴 사용자 인증 불가 |
getPassword() | 사용자 인증에 사용된 비밀번호 반환 |
isEnabled() | 사용자 활성화 여부 → 비활성화된 사용자 인증 불가 |
- Provider → UserDetailsServcie → UserRepository를 통해 사용자 정보를 가지고 옴
- 가져온 사용자 정보(UserInfo)를 UserDetails 타입으로 변환
- UserDetails를 Provider에 반환
- Provider는 반환 받은 UserDetails에 있는 정보를 토대로 Authentication 객체 생성
'Language > Spring Security' 카테고리의 다른 글
동시 세션 제어 - sessionManagement().maximumSessions() (0) | 2024.07.26 |
---|---|
SecurityContextRepository / SecurityContextHolderFilter (0) | 2024.07.25 |
사용자 상세 서비스 - UserDetailsService (0) | 2024.07.24 |
인증 제공자 - AuthenticationProvider (0) | 2024.07.24 |
인증 관리자 - AuthenticationManager (0) | 2024.07.24 |