반응형
WebSecurityConfigurerAdapter 상속 & configure 오버라이드
# 권한 체크할 패턴 적용 방법 - antMatchers()
1. HttpMethod 로 권한 체크
antMatchers(HttpMethod.POST)
2. HttpMethod + url 패턴(문자열 가변인수)으로 권한 체크
antMatchers(HttpMethod.GET, "/api/products/**", "/api/abc/**")
3. url 패턴(문자열 가변인수)으로 권한 체크
antMatchers("/api/products/**", "/api/abc/**")
# 권한 체크 방법 - antMatchers 뒤에 호출
1. hasRole(String role)
- USER, ADMIN 등 지정한 역할 허용(앞에 ROLE_ 붙지 않음)
2. hasAnyRole(String... roles)
- USER,ADMIN 등 지정한 역할이 하나라도 있으면 허용
3. hasAuthority(String authority)
- ROLE_USER, ROLE_ADMIN 등 지정한 권한 허용
4. hasAnyAuthority(String... authorities)
- ROLE_USER, ROLE_ADMIN 등 지정한 권한이 하나라도 있으면 허용
5. hasIpAddress(String ipaddressExpression)
- 지정한 ip 주소 허용
6. permitAll()
- 전부 허용
7. anonymous()
- 익명 사용자 허용
8. rememberMe()
- rememberMe 인증 사용자 허용
9. denyAll()
- 모두 허용 안함
10. authenticated()
- 인증된 사용자 허용
11. fullyAuthenticated()
- 인증된 사용자 허용, rememberMe 인증 제외
# requestMatchers 순서
세분화 된 요청 패턴을 먼저 적용, 더 넓은 범위의 패턴이 위에 있으면 위에서 먼저 걸러진다
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable() // api csrf 사용안함
.headers()
.disable()
.exceptionHandling()
.accessDeniedHandler(accessDeniedHandler)
.authenticationEntryPoint(unauthorizedHandler)
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS) // JWT 인증, 세션 사용 안 함
.and()
.authorizeRequests() // 다음 리퀘스트 권한 체크
.antMatchers("/api/users/login").permitAll() // 모든 접근 가능
.antMatchers("/api/products/**").permitAll()
.antMatchers("/api/**").hasRole(Role.USER.name()) // ROLE 역할 체크
.anyRequest().authenticated() // 나머지 요청 모두 인증된 회원만 접근 가능
.and()
.formLogin()
.disable();
http
.addFilterBefore(jwtAuthenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);
}
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring] @Transactional 핵심 정리 / 우선순위, 프록시, 예외 (0) | 2022.11.26 |
---|---|
[Springboot] 라이브러리 의존성 버전 확인 및 선택하는 방법! dependency version (0) | 2022.03.31 |
[Spring Validation] BindingResult 오류메시지 추가 / properties 파일 / 샘플 코드 (0) | 2022.02.20 |
[Springboot] DB migration Tool / Flyway 설정 방법 (0) | 2022.01.19 |
[Springboot] 초기 DB schema 생성, data 로드 방법 (0) | 2022.01.19 |
댓글