[SPRING] 봄 보안 차단 URL 역할
SPRING봄 보안 차단 URL 역할
spring security intercept-url config에서 ROLE_USER와 같은 특정 경로에 대한 특정 역할을 정의한 경우 사용자에게 해당 권한이있는 경우에만 해당 경로에 액세스 할 수 있어야합니다. 그것은 의미가 있지만 ROLE_ANONYMOUS 역할을 설정하면
여기에 로그가있다.
Checking match of request : '/resources/js/test.js'; against '/resources/**'
Secure object: FilterInvocation: URL: /resources/js/test.js; Attributes: [ROLE_ANONYMOUS]
Previously Authenticated: org.springframework.security.authentication.UsernamePasswordAuthenticationToken***********************************************
Voter: org.springframework.security.access.vote.RoleVoter@1712310, returned: -1
그런 다음 액세스가 거부되었습니다 exception.I를 얻는다면 그것은 잘 작동하는 것을 알고
해결법
-
==============================
1.다음과 같이 작성하는 것이 좋습니다.
다음과 같이 작성하는 것이 좋습니다.
<intercept-url pattern="/resources/**" access="ROLE_ANONYMOUS,ROLE_USER"/>
다음 구성을 볼 수있는 익명 인증에 대한 공식 참조 설명서 장을 확인할 수 있습니다.
<bean id="filterSecurityInterceptor" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor"> <property name="authenticationManager" ref="authenticationManager"/> <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager"/> <property name="securityMetadata"> <security:filter-security-metadata-source> <security:intercept-url pattern='/index.jsp' access='ROLE_ANONYMOUS,ROLE_USER'/> <security:intercept-url pattern='/hello.htm' access='ROLE_ANONYMOUS,ROLE_USER'/> <security:intercept-url pattern='/logoff.jsp' access='ROLE_ANONYMOUS,ROLE_USER'/> <security:intercept-url pattern='/login.jsp' access='ROLE_ANONYMOUS,ROLE_USER'/> <security:intercept-url pattern='/**' access='ROLE_USER'/> </security:filter-security-metadata-source>" + </property> </bean>
ROLE_ANONYMOUS와 ROLE_USER에 대한 이해가 조금 잘못되었습니다. Spring Security의 개발자 인 Luke Taylor가이 답변에 대해 자세히 설명합니다.
-
==============================
2.내가 올바르게 기억하면 : 아니오, 액세스 권한만으로 보호 된 리소스 = "ROLE_ANONYMOUS"는 귀하의 경우 인증 된 사용자가 액세스 할 수 없어야합니다. "ROLE_USER"가있는 사용자가 액세스 할 수 있도록 명시 적으로 spring을 지정해야합니다. 사용하는 버전에 따라 어쩌면 표현 기반 액세스 제어 사용을 고려해야합니다. 이 방법을 사용하면 다음을 사용하여 모든 사람이 리소스에 액세스 할 수있게 만들 수 있습니다. IMHO가 더 단순한 : access = "permitAll ()".
내가 올바르게 기억하면 : 아니오, 액세스 권한만으로 보호 된 리소스 = "ROLE_ANONYMOUS"는 귀하의 경우 인증 된 사용자가 액세스 할 수 없어야합니다. "ROLE_USER"가있는 사용자가 액세스 할 수 있도록 명시 적으로 spring을 지정해야합니다. 사용하는 버전에 따라 어쩌면 표현 기반 액세스 제어 사용을 고려해야합니다. 이 방법을 사용하면 다음을 사용하여 모든 사람이 리소스에 액세스 할 수있게 만들 수 있습니다. IMHO가 더 단순한 : access = "permitAll ()".
from https://stackoverflow.com/questions/12035099/spring-security-intercept-url-roles by cc-by-sa and MIT license