일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- mybatis
- github
- Spring Boot
- STS
- Java
- hikaricp
- Gradle
- ubuntu
- template
- oracle between
- 배열스트링
- python 개발환경
- MySQL
- Linux
- Spring Security
- catalina log
- between date
- oracle
- springboot
- Spring
- between 날짜
- git
- ORACLE CLOUD
- hikari
- 라즈베리파이
- intellij
- log4j profile
- datasource
- log4j2
- bitbucket
Archives
- Today
- Total
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- mybatis
- github
- Spring Boot
- STS
- Java
- hikaricp
- Gradle
- ubuntu
- template
- oracle between
- 배열스트링
- python 개발환경
- MySQL
- Linux
- Spring Security
- catalina log
- between date
- oracle
- springboot
- Spring
- between 날짜
- git
- ORACLE CLOUD
- hikari
- 라즈베리파이
- intellij
- log4j profile
- datasource
- log4j2
- bitbucket
Archives
- Today
- Total
파워노트
UserDetailService 본문
반응형
1. UserDeatilService 란.
login경로 등을 통해 전달된 로그인 id/pw 정보가 유효한지에 대해 Authentification Manager를 통해 검증하기 위한 서비스이다.
2. 구현.
- UserDetailsService 를 상속받은 구현체를 구현함.
- loadUserByUsername 를 Override 하여 User 정보를 셋팅함.
@Service
@Slf4j
public class ApiUserDetailService implements UserDetailsService {
@Autowired
PasswordEncoder passwordEncoder;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
log.info("UserName, {}", username);
User.UserBuilder users = User.builder();
users.username("user1").password(passwordEncoder.encode("password1")).roles("USER", "ADMIN");
return users.build();
}
}
- AuthenticationManagerBuilder auth 객체에 DetailService 를 셋팅해줌. 이후 DetailService에서 로그인 정보에 대한 유효성을 체크함.
auth.userDetailsService(apiDetailService);
@Slf4j
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public ApiUserDetailService apiDetailService;
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Override
public void configure(WebSecurity web) {
// web.ignoring().antMatchers("/img/**", "/js/**", "/hhadminvendor/**", "/favicon.ico", "/livecheck");
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(apiDetailService);
// .inMemoryAuthentication().withUser("user1").password( passwordEncoder().encode("password1") ).roles("USER", "ADMIN");
}
/* @formatter:off */
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic().disable() // Http basic Auth 기반으로 로그인 인증창이 뜸. disable 시에 인증창 뜨지 않음.
.csrf().disable() // rest api이므로 csrf 보안이 필요없으므로 disable처리.
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) // jwt token으로 인증하므로 stateless 하도록 처리.
.and()
.authorizeRequests()
.antMatchers("/login").permitAll()
.antMatchers("/hello2").authenticated() // 인증권한이 필요한 페이지.
.anyRequest().permitAll() // 나머지 모든 요청 허용 ( 생략 가능 )
;
}
/* @formatter:on */
}
3. 동작확인
반응형
'spring boot' 카테고리의 다른 글
[spring] 비동기 처리 정리. (0) | 2021.04.22 |
---|---|
[JPA] 양방향 연관관계시 주의.. (0) | 2020.08.04 |
[intelij] spring boot 프로젝트 생성하기 (0) | 2020.06.13 |
Security Filter (2) | 2020.04.17 |
Spring boot Security ( api server 기반 ) (0) | 2020.04.16 |
Comments