[SPRING] 스프링 보안에서 동일한 역할을하는 여러 사용자에 대한 액세스 거부
SPRING스프링 보안에서 동일한 역할을하는 여러 사용자에 대한 액세스 거부
나는 그런 상황에 직면 해있다. 나의 애플리케이션은 여러 가지 역할 (관리자, 사회자, 사용자)을 가지고있다. 중재자와 사용자는 일부 양식을 수정할 수 있습니다. 모든 퍼미션은 괜찮습니다. 그러나 사용자 (역할 사용자)로 로그인하고 URL에서 ID를 변경하면 다른 사용자 (역할 사용자)의 양식을 가져 와서 간단히 편집 할 수 있습니다.
액세스를 거부하고 그러한 작업을 방지하는 방법은 무엇입니까?
추신. 스프링 및 스프링 보안의 버전은 3.1.2입니다.
업데이트 - 봄 보안 컨텍스트 추가
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http use-expressions="true" auto-config="false"
entry-point-ref="authenticationEntryPoint" access-denied-page="/403.jsp">
<form-login login-page="/login.html"
authentication-failure-url="/login.html?error=true"
login-processing-url="/j_spring_security_check"
authentication-success-handler-ref="successHandler" />
<logout logout-url="/logout" logout-success-url="/login.html" />
<intercept-url pattern="/admin/**" access="hasRole('adminViewPermission')" />
<intercept-url pattern="/moderator/**" access="hasRole('moderatorViewPermission')" />
<intercept-url pattern="**/form-management"
access="hasRole('formManagementPermission')" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userDetailsService" />
</authentication-manager>
<beans:bean id="authenticationEntryPoint"
class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<beans:property name="loginFormUrl" value="/login.html" />
<beans:property name="forceHttps" value="false" />
</beans:bean>
<beans:bean id="successHandler"
class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<beans:property name="defaultTargetUrl" value="/authenticate" />
<beans:property name="alwaysUseDefaultTargetUrl" value="true"/>
</beans:bean>
<beans:bean id="userDetailsService"
class="com.jack.MyYserDetailsService">
</beans:bean>
</beans:beans>
해결법
-
==============================
1.보안 규칙에 대한 실제 도메인 개체를 고려해야합니다. 사용자와 역할을 가진 일반적인 SpringSecurity 설정은 다음과 같은 보안 규칙을 추가 할 수 있습니다. who (일부 역할을 가진 인증 된 사용자)는 일부 URL / 메소드 호출에 액세스 할 수 있습니다. 다음과 같이 확장 된 규칙을 사용할 수있게하려면 who (일부 역할을 가진 인증 된 사용자)가 일부 URL / 메소드 호출에 액세스 할 수 있고 어떤 도메인 객체를 사용할 수 있는지 ACL 기능을 사용해야합니다.
보안 규칙에 대한 실제 도메인 개체를 고려해야합니다. 사용자와 역할을 가진 일반적인 SpringSecurity 설정은 다음과 같은 보안 규칙을 추가 할 수 있습니다. who (일부 역할을 가진 인증 된 사용자)는 일부 URL / 메소드 호출에 액세스 할 수 있습니다. 다음과 같이 확장 된 규칙을 사용할 수있게하려면 who (일부 역할을 가진 인증 된 사용자)가 일부 URL / 메소드 호출에 액세스 할 수 있고 어떤 도메인 객체를 사용할 수 있는지 ACL 기능을 사용해야합니다.
편집하다. 그러나 이와 같이 하나의 보안 규칙 만 있으면 ACL 설정이 과도 할 수 있습니다. 사용자 정의 웹 보안 표현식을 사용하여 실제 SpringSecurity 설정을 향상시킬 수 있습니다.
<intercept-url pattern="/moderator/**" access="hasRole('moderatorViewPermission') and userIsAuthor()" />
userIsAuthor () 메소드의 위치 :
from https://stackoverflow.com/questions/14275687/denying-access-for-multiple-users-of-same-role-in-spring-security by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 데이터 REST는 데이터를 REST API에 게시 할 수 없습니다. (0) | 2019.05.23 |
---|---|
[SPRING] resttemplate을 통한 spring rest 서비스를 통한 파일 전송 (0) | 2019.05.23 |
[SPRING] jqGrid는 json을 가져 왔지만 빈 행과 데이터가 없습니다. (0) | 2019.05.23 |
[SPRING] IntelliJ Spring Boot 프로젝트가 Thymeleaf로 CSS 파일을 찾을 수 없습니다. (0) | 2019.05.23 |
[SPRING] Spring int-xml : 노드 함수가있는 xpath-expression 오류 (0) | 2019.05.23 |