반응형
- 1편 스프링시큐리티 구조와 프로젝트 생성: https://malwareanalysis.tistory.com/143
- 2편 스프링시큐리티가 어떻게 세션을 이용할까? : https://malwareanalysis.tistory.com/179
- 3편 컨트롤러에서 인증정보 조회: https://malwareanalysis.tistory.com/180
- 4편 인메모리 사용자: https://malwareanalysis.tistory.com/176
- 5편 설정 오버라이드: https://malwareanalysis.tistory.com/210
안녕하세요. 4편에서는 스프링시큐리티 인메모리 사용자에 대해 살펴보고자 합니다. 인메모리 사용자는 https://malwareanalysis.tistory.com/157글에도 소개했었습니다. 이 글에서는 websecurityconfig를 이용해서 인메모리 사용자를 만들었습니다. 반면 4편에서는 UserDetailsService를 사용해서 인메모리 사용자를 생성합니다.
영상: https://youtu.be/zbuWEH_9aCY
git 링크: https://github.com/choisungwook/springsecurity-youtube/blob/chatper_4_inmemory/springsecurity_app/src/main/java/com/demo/springseucurity/SpringseucurityApplication.java
1. Bean 등록
인메모리는 InMemoryUserDetailsManager가 관리합니다. InMemoryUserDetailsManager를 관리하기 위해서는 메소드를 Bean으로 등록해야 합니다. 그리고 리턴타입이 UserDetailsService이어야 합니다.
@SpringBootApplication
public class SpringseucurityApplication {
public static void main(String[] args) {
SpringApplication.run(SpringseucurityApplication.class, args);
}
@Bean
public UserDetailsService users() {
...
return new InMemoryUserDetailsManager(user, admin);
}
}
2. 인메모리 사용자 생성
스프링시큐리티가 관리하는 User 클래스를 사용해서 인메모리 사용자를 등록할 수 있습니다. User 클래스의 리턴 타입은 UserDetails입니다.
User클래스는 빌더를 제공합니다. 사용자와 비밀번호를 입력은 필수입니다. 이 때, 주의사항은 비밀번호는 암호화하지 않으면 null로 저장됩니다. 그러므로, 암호화한 값을 입력해야 합니다. 암호화하지 않고 평문으로 비밀번호를 저장하는 방법은 {noop}특수 키워드를 사용하시면 됩니다.
@SpringBootApplication
public class SpringseucurityApplication {
public static void main(String[] args) {
SpringApplication.run(SpringseucurityApplication.class, args);
}
@Bean
public UserDetailsService users() {
UserDetails user = User.builder()
.username("user")
.password("{noop}password")
.roles("USER")
.build();
UserDetails admin = User.builder()
.username("admin")
.password("{noop}password")
.roles("USER", "ADMIN")
.build();
return new InMemoryUserDetailsManager(user, admin);
}
}
반응형
'전공영역 공부 기록' 카테고리의 다른 글
proxmox 커뮤니티 저장소 수정 (0) | 2021.10.31 |
---|---|
Hyper-V 비활성화 (0) | 2021.10.31 |
쿠버네티스 istio와 open trace 시연 추천 영상 (0) | 2021.10.29 |
aws EC2를 사용하면서 생각해야하는 기타 비용 (0) | 2021.10.29 |
AWS Ec2 네트워크는 공짜가 아니다. (0) | 2021.10.25 |