일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- hikaricp
- Spring Security
- Spring
- between date
- catalina log
- MySQL
- bitbucket
- oracle
- Java
- between 날짜
- Linux
- python 개발환경
- log4j profile
- 배열스트링
- log4j2
- springboot
- github
- STS
- ubuntu
- hikari
- template
- datasource
- ORACLE CLOUD
- oracle between
- Spring Boot
- mybatis
- git
- Gradle
- intellij
- 라즈베리파이
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 | 31 |
Tags
- hikaricp
- Spring Security
- Spring
- between date
- catalina log
- MySQL
- bitbucket
- oracle
- Java
- between 날짜
- Linux
- python 개발환경
- log4j profile
- 배열스트링
- log4j2
- springboot
- github
- STS
- ubuntu
- hikari
- template
- datasource
- ORACLE CLOUD
- oracle between
- Spring Boot
- mybatis
- git
- Gradle
- intellij
- 라즈베리파이
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