Spring Security Config
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityJavaConfig extends WebSecurityConfigurerAdapter {
@Autowired
private AuthenticationService authenticationService;
@Override
protected void configure(HttpSecurity http) throws Exception {
final Filter authenticationFilter = new JwtAuthenticationFilter(
authenticationManager(), authenticationService
);
final Filter authenticationErrorFilter = new AuthenticationErrorFilter();
http
.csrf().disable()
.addFilter(authenticationFilter)
.addFilterBefore(
authenticationErrorFilter, JwtAuthenticationFilter.class
)
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.exceptionHandling()
.authenticationEntryPoint(
new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED)
);
}
}
WebSecurityConfigurerAdapter
- WebSecurityConfigurer 생성에 필요한 기본 클래스 제공
configure()
- protected void configure(AuthenticationManagerBuilder auth) throws Exception
- 인증 메커니즘 설정시 사용
public void configure(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER")
.and()
.withUser("admin")
.password("password")
.roles("ADMIN","USER");
}
- public void configure(WebSecurity web) throws Exception
- global security에 영향을 미치는 설정 세팅시 사용
- 디버그 모드 설정, 요청 거절, 리소스 무시 등
- global security에 영향을 미치는 설정 세팅시 사용
- protected void configure(HttpSecurity http) throws Exception
- 리소스 레벨에서의 security 설정 세팅시 사용
HttpSecurity
- Spring Security의 XML
<http>
와 동일 - Http 요청과 관련한 설정 세팅시 사용
csrf()
- CSRF 관련 설정을 추가한다.
- WebSecurityConfigurerAdapter의 기본 생성자를 사용하는 경우 디폴트로 설정된다.
- disable 메서드를 이용하여 비활성화 가능
- csrf(사이트간 요청 위조)(참고)
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 생성 등)를 특정 사이트에 요청하게 하는 행위
Filter
- 리소스와 관련된 요청, 응답과 관련한 필터링을 수행하는 개체
- doFilter 메서드를 통하여 필터링 수행
- HttpSecurity의
addFilter()
addFilterBefore()
addFilterAfter()
addFilterAt()
등을 사용하여 등록
sessionManagement()
- HttpSecurity에 세션관리 설정(SessionManagementConfigurer) 등록시 사용
- SessionManagementConfigurer개체를 생성하여 getOrApply 적용후 리턴
- getOrApply()
- 기존에 등록되어 있는 경우 등록된 개체를 리턴하고 없는 경우 새 개체를 등록후 리턴한다.
- getOrApply()
SessionManagementConfigurer
-
세션 관리 관련 설정 세팅시 사용
- SessionManagementFilter를 등록한다.
- 동시에 존재할 수 있는 세션의 수가 제한되어 있는 경우 ConcurrentSessionFilter를 등록한다.
-
sessionCreationPolicy()
- SessionManagementConfigurer에 세션 생성 정책을 등록한다.
-
and()
- SecurityBuilder로 되돌아간다.
- sessionManagement()에 의해 SessionManagementConfigurer가 생성된 경우
- SecurityBuilder == HtteSecurity
exceptionHandling()
- == sessionManagement()
- WebSecurityConfigurerAdapter 사용시 자동으로 설정된다.
ExceptionHandlingConfigurer
- Spring Security관련 예외 처리 설정 세팅시 사용
- 모든 프로퍼티에 기본값이 설정되어 있음
- ExceptionTranslationFilter를 등록한다.
- AccessDeniedException, AuthenticationException 예외 처리에 사용
- Java Exception과 Http Response를 연결한다.
- authenticationEntryPoint()
- ExceptionHandlingConfigurer에 AuthenticationEntryPoint 등록시 사용
- AuthenticationEntryPoint
- AuthenticationException이 감지된 경우, AccessDeniedException이 감지되었고 익명의 사용자인 경우 실행
- HttpStatusEntryPoint
- AuthenticationException가 Http Status를 Http Response로 보내도록 한다.
Author And Source
이 문제에 관하여(Spring Security Config), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dakim/Spring-Security-Config저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)