사람이 대체 할 때 설명 할 수있는 configure(HttpSecurity)
, configure(WebSecurity)
그리고 configure(AuthenticationManagerBuilder)
?
답변
configure (AuthenticationManagerBuilder) 는 AuthenticationProviders를 쉽게 추가 할 수 있도록하여 인증 메커니즘을 설정하는 데 사용됩니다. 예를 들어 다음은 내장 된 ‘user’및 ‘admin’로그인으로 메모리 내 인증을 정의합니다.
public void configure(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER")
.and()
.withUser("admin")
.password("password")
.roles("ADMIN","USER");
}
configure (HttpSecurity)를 사용하면 선택 일치를 기반으로 리소스 수준에서 웹 기반 보안을 구성 할 수 있습니다. 예를 들어 아래 예에서는 / admin /으로 시작하는 URL을 ADMIN 역할을 가진 사용자로 제한하고 다른 URL이 있어야 함을 선언합니다. 성공적으로 인증되었습니다.
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
}
configure (WebSecurity) 는 전역 보안에 영향을주는 구성 설정에 사용됩니다 (자원 무시, 디버그 모드 설정, 사용자 지정 방화벽 정의를 구현하여 요청 거부). 예를 들어, 다음 메서드는 인증 목적으로 / resources /로 시작하는 모든 요청을 무시하도록합니다.
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**");
}
자세한 내용은 다음 링크를 참조하십시오. Spring Security Java Config Preview : Web Security
답변
WebSecurity ignoring()
메서드 의 일반적인 사용 은 Spring Security를 생략 하고 Spring Security의 기능을 사용할 수 없습니다. WebSecurity는 HttpSecurity를 기반으로합니다.
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**")
.antMatchers("/publics/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/publics/**").hasRole("USER") // no effect
.anyRequest().authenticated();
}
위의 예제에서 WebSecurity는 Spring이 /resources/**
및 /publics/**
. 따라서 .antMatchers("/publics/**").hasRole("USER")
HttpSecurity에 unconsidered .
이렇게하면 보안 필터 체인에서 요청 패턴이 완전히 생략됩니다. 이 경로와 일치하는 모든 항목은 인증 또는 권한 부여 서비스가 적용되지 않으며 자유롭게 액세스 할 수 있습니다.
configure(HttpSecurity)
선택 일치를 기반으로 리소스 수준 에서 웹 기반 보안을 구성 할 수 있습니다 . 예를 들어 아래 예에서는로 시작하는 URL을 ADMIN 역할/admin/
을 가진 사용자로 제한하고 다른 모든 URL을 성공적으로 인증 해야한다고 선언 합니다.
configure(WebSecurity)
전역 보안에 영향 을 주는 구성 설정에 사용됩니다 (자원 무시, 디버그 모드 설정, 사용자 지정 방화벽 정의를 구현하여 요청 거부). 예를 들어, 다음과 같은 방법으로 시작하는 모든 요청 원인이 /resources/
될 인증 무시 목적.
AuthenticationManagerBuilder
extends AbstractConfiguredSecurityBuilder<AuthenticationManager,AuthenticationManagerBuilder>
implements ProviderManagerBuilder<AuthenticationManagerBuilder>
SecurityBuilder는 AuthenticationManager
. 메모리 인증, LDAP 인증, JDBC 기반 인증, UserDetailsService 추가 및 AuthenticationProvider의 추가 를 쉽게 구축 할 수 있습니다 .
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
auth.userDetailsService(customUserDetailService).passwordEncoder(new BCryptPasswordEncoder());
}