[SPRING] Grails : 특정 경로에서 Spring Security Core 비활성화
SPRINGGrails : 특정 경로에서 Spring Security Core 비활성화
특정 패턴 (예 : / api / **)에 대한 호출이 걸러지지 않는 방식으로 Spring Security Core를 설정하려면 어떻게해야합니까?
grails.plugins.springsecurity.filterChain.chainMap = [
'/api/**': '',
'/**': 'JOINED_FILTERS',
]
콩을 해결하려고하기 때문에 작동하지 않습니다.
'JOINED_FILTERS, -filter1, -filter2, ...'와 같은 불쾌한 해결 방법 외에 다른 것이 있습니까?
정적 리소스는 스프링 보안에서 어떻게 제외됩니까?
해결법
-
==============================
1.필터 체인에 익명 필터를 추가해야합니다. grails spring security rest 설정 튜토리얼을 따랐다면 다음 코드를 얻었을 것입니다 :
필터 체인에 익명 필터를 추가해야합니다. grails spring security rest 설정 튜토리얼을 따랐다면 다음 코드를 얻었을 것입니다 :
grails.plugin.springsecurity.filterChain.chainMap = [ //Stateless chain [ pattern: '/**', filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter' ] ]
필터 체인에서이 필터를 제거하는 "-anonymousAuthenticationFilter"가 있음에 유의하십시오. 코드에서이 부분 (-anonymousAuthenticationFilter)을 제거하면이 필터가 필터 체인으로 돌아가며, @Secured ( "permitAll") 또는 @Secured ([ 'IS_AUTHENTICATED_ANONYMOUSLY'])를 다시 사용할 수 있습니다.
마지막 필터 체인 맵은 다음과 같았고 매력처럼 작동했습니다.
grails.plugin.springsecurity.filterChain.chainMap = [ //Stateless chain [ pattern: '/**', filters: 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter' ] ]
개발 환경의 logback.groovy를 추가하여 인증 프로세스에 대한 자세한 내용을 확인해야합니다.
logger("org.springframework.security", DEBUG, ['STDOUT'], false) logger("grails.plugin.springsecurity", DEBUG, ['STDOUT'], false) logger("org.pac4j", DEBUG, ['STDOUT'], false) logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false) root(ERROR, ['STDOUT', 'FULL_STACKTRACE'])
봄 보안 휴식을 사용하지 않는다면 같은 생각이 적용됩니다.
-
==============================
2.간단한 비인가 필터를 구현할 수 있습니다 ::
간단한 비인가 필터를 구현할 수 있습니다 ::
class NonAuthenticationFilter extends GenericFilterBean { void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); } }
resources.groovy에서 정의하십시오.
beans = { nonAuthFilter(NonAuthenticationFilter) }
그리고 귀하의 URL 패턴을 구성 :
grails.plugins.springsecurity.filterChain.chainMap = [ '/api/**': 'nonAuthFilter', '/**': 'JOINED_FILTERS', ] grails.plugins.springsecurity.interceptUrlMap = [ '/api/**': ['IS_AUTHENTICATED_ANONYMOUSLY'] ]
-
==============================
3.
grails.plugin.springsecurity.interceptUrlMap = [ '/api/**': ['IS_AUTHENTICATED_ANONYMOUSLY'] ]
이것으로는 부족합니다.이 줄을 추가해야합니다 :
grails.plugin.springsecurity.securityConfigType = "InterceptUrlMap"
grails.plugins.springsecurity.*
grails.plugin.springsecurity.*//plugin without s
from https://stackoverflow.com/questions/18079122/grails-disable-spring-security-core-on-certain-paths by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 원격 클라우드를 사용할 수없는 경우 Spring Cloud Config 서비스에 대한 로컬 대체 설정을 어떻게 설정합니까? (0) | 2019.05.24 |
---|---|
[SPRING] RowMapper에서 쿼리 사용하기 (0) | 2019.05.24 |
[SPRING] CSRF - 처음 로그인 할 때만 (0) | 2019.05.24 |
[SPRING] jOOQ는 소스를 생성하지 않습니다. (0) | 2019.05.24 |
[SPRING] 자바 Aspectj는 메소드에서 사용되는 리턴 값 (0) | 2019.05.24 |