[SPRING] 스프링 보안 익명 액세스를 가능하게하는 Java 기반 구성
SPRING스프링 보안 익명 액세스를 가능하게하는 Java 기반 구성
"ROLE_ANONYMOUS"를 사용하여 내 앱의 일부 URL에 대한 익명 액세스를 허용하고 싶습니다. 그리고 아래의 구성을 사용했습니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.requestCache()
.requestCache(new NullRequestCache()).and()
.anonymous().authorities("ROLE_ANONYMOUS").and()
.exceptionHandling().and()
.servletApi().and()
.headers().cacheControl().and()
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/profile/image").permitAll()
.antMatchers("/favicon.ico").permitAll()
.antMatchers("/resources/**").permitAll()
//.antMatchers(HttpMethod.GET, "/login/**").permitAll()
//.antMatchers(HttpMethod.GET, "/location/**").permitAll()
.anyRequest().authenticated()/*.and()
.apply(new SpringSocialConfigurer())*/;
// custom Token based authentication based on the header previously given to the client
//.addFilterBefore(new StatelessAuthenticationFilter(tokenAuthenticationService), UsernamePasswordAuthenticationFilter.class);
}
내 컨트롤러는 다음과 같습니다.
@RestController
@RequestMapping(value="/login", produces="application/json")
public class LoginController {
@Secured( value={"ROLE_ANONYMOUS"})
@RequestMapping(method=RequestMethod.GET)
public String get(){
return "hello";
}
}
하지만 "/ login"을 클릭하면 403 액세스가 거부됩니다. 주석 기반 익명 액세스를 활성화하는 방법을 알려주십시오.
해결법
-
==============================
1.Faraj Farook이 쓴대로 로그인 페이지 URL에 대한 액세스를 허용해야합니다. 관련 라인을 주석 처리했습니다.
Faraj Farook이 쓴대로 로그인 페이지 URL에 대한 액세스를 허용해야합니다. 관련 라인을 주석 처리했습니다.
@Override protected void configure(HttpSecurity http) throws Exception { http .anonymous() .authorities("ROLE_ANONYMOUS") .and() .headers() .cacheControl() .and() .authorizeRequests() .antMatchers("/").permitAll() .antMatchers("/profile/image").permitAll() .antMatchers("/favicon.ico").permitAll() .antMatchers("/resources/**").permitAll() .antMatchers(HttpMethod.GET, "/login/**").permitAll() .anyRequest().authenticated() }
그러나 permitAll ()을 사용하지 않으려면 hasAuthority ( "ROLE_ANONYMOUS")를 사용할 수 있습니다. 이 경우 메소드에 주석을 달 필요가 없습니다. @Secured (값 = { "ROLE_ANONYMOUS"}).
-
==============================
2.이렇게하면 문제가 해결됩니다.
이렇게하면 문제가 해결됩니다.
@Override protected void configure(HttpSecurity http) throws Exception { http ... .formLogin().loginPage("/login").permitAll() ...
그러나 permitAll을 사용하지 않고 익명의 사용자에게 맡기고 싶다면 (두 상황 모두 동일한 효과가 있지만 그래도 사용자가 선호하는 경우) 컨트롤러에서이 작업을 시도하십시오.
@Secured("ROLE_ANONYMOUS") @RequestMapping(method=RequestMethod.GET) public String get(){ ...
from https://stackoverflow.com/questions/33327677/java-based-configuration-to-enable-spring-security-anonymous-access by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] BadCredentialsException : Kerberos 검증에 실패했습니다. (0) | 2019.04.23 |
---|---|
[SPRING] @Transactional 메서드 내에서 LazyInitializationException 발생 (0) | 2019.04.23 |
[SPRING] 터미널에서 XML 스키마 네임 스페이스에 대한 Spring NamespaceHandler를 찾을 수 없습니다. (0) | 2019.04.23 |
[SPRING] 드롭 박스 - 스프링 MVC 모델 / 컨텍스트에서 freemarker를 사용하여 폼으로 (0) | 2019.04.23 |
[SPRING] Spring 데이터 RedisTemplate : 값과 해시 값 직렬화 (0) | 2019.04.23 |