1. UserDetails
1) 개념
스프링 시큐리티가 관리하는 사용자를 나타냄
2) 특징
- 하나 이상의 권한을 가짐
- UserDetails 계약을 구현해서 프레임워크가 이해할 수 있게 사용자를 기술
3) UserDetails 인터페이스 코드
public interface UserDetails extends Serializable {
// 인증과 관련된 세부 정보, 사용자 자격 증명을 반환하는 메서드
String getUsername(); // 사용자 이름 반환
String getPassword(); // 사용자 암호 반환
// 사용자가 애플리케이션의 리소스에 접근할 수 있도록 권한 부여하기 위한 메서드
Collection<? extends GrantedAuthority> getAuthorities(); // 사용자에게 부여된 권한의 그룹 반환
boolean isAccountNonExpired(); // 계정 만료
boolean isAccountNonLocked(); // 계정 잠금
boolean isCredentialsNonExpired(); // 자격 증명 만료
boolean isEnabled(); // 계정 비활성화
}
2. UserDetailsService
1) 개념
사용자 이름으로 사용자 세부 정보를 검색하는 객체
2) 인터페이스 코드
public interface UserDetailsService {
// 주어진 사용자 이름을 가진 사용자의 세부 정보를 얻음
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}
3. UserDetailsManager
1) 개념
UserDetailService 계약을 확장해서 사용자 추가, 수정, 삭제 작업
2) 인터페이스 코드
public interface UserDetailsManager extends UserDetailService {
void createUser(UserDetails user);
void updateUser(UserDetails user);
void deleteUser(String username);
void changePassword(String oldPassword, String newPassword);
boolean userExists(String username);
}
3) 종류
InMemoryUserDetailsManager
JdbcUserDetailsManager
- sql 데이터베이스에 저장된 사용자를 관리하며 jdbc를 통해 데이터베이스에 직접 연결
- JDBC를 직접 이용하므로 애플리케이션이 다른 프레임워크에 고정되지 않는다는 이점이 있다
LdapUserDetailsManager
- LDAP용 UserDetailsManager
- 사용자 관리를 위해 LDAP 시스템을 통합해야 할 때 유용
4. GrantedAuthority
1) 개념
사용자가 수행할 수 있는 작업을 GrantedAuthority 인터페이스로 나타냄
2) 특징
UserDetails에 이용됨
3) 인터페이스 코드
public interface GrantedAuthority extends Serializable {
String getAuthority();
}
// getAuthority는 람다를 이용해 구현하거나, SimpleGrantedAuthority 클래스 이용해 구현 가능
GrantedAuthority g1 = () -> "READ";
GrantedAuthority g2 = new SimpleGrantedAuthority("READ");
'Spring > security' 카테고리의 다른 글
[시큐리티] AuthenticationProvider (0) | 2023.03.15 |
---|---|
[시큐리티] PasswordEncoder (0) | 2023.03.15 |
[시큐리티] 구성 요소 재정의 (0) | 2023.03.10 |
[시큐리티] 인증 방법 (0) | 2023.03.10 |
[시큐리티] 스프링 시큐리티 인증 프로세스 구성 요소 (0) | 2023.03.10 |