2012-07-27 3 views
1

권한이있는 사용자가 업데이트를 수행 할 수있는 적절한 권한을 갖도록 권한 검사를 통해 서비스 계층을 보호하려는 애플리케이션이 있습니다. 첫 번째 간단한 규칙은 객체 소유자가 객체를 업데이트 할 수 있기 때문에 보안 검사가 로그인 한 사용자와 객체 소유자를 비교하는 것입니다. 안타깝게도, 객체가 AspectJ를 사용하여 저장소 레벨 객체를 생성하는 Neo4j 그래프 데이터베이스에 저장되기 때문에 이것은 작동하지 않습니다. @PreAuthorize로 보호 된 서비스 레이어가있는 응용 프로그램을 만들려고 할 때 AutoWire 체인에서 Neo4j 저장소 객체를 AutoWire로 연결할 수 없다는 오류가 발생합니다 ... AutoWired 객체가 실제로 AspectJ는 우리가 사용할 객체를 만듭니다.Spring Security and AspectJ Neo4j Repository Autowiring

스프링 - 보안 3.1.0으로 업데이트하려고했는데 aspectj-autoproxy가 설정되어 있고 전역 메소드 보안 정의에 type = "aspectj"속성을 추가하려고했지만 컴파일러 플래그로 'type'을 유효하지 않은 속성이며 여전히 AutoWiring 문제가 발생합니다.

모델을 조금 더 검토 한 후에, 나는이 접근법이 실패 할 운명에 약간의 염려를 느낍니다. 다양한 컨트롤러와 다른 비즈니스 로직 유닛이 서비스 레이어를 직접 호출하여 스프링 보안 프록시 객체를 우회하여 끝낼 것이라고 생각합니다.

봄 보안 검사에서 데이터 저장소로 AspectJ에서 자동 생성 된 Neo4j 저장소 개체를 사용할 수있는 방법이 있습니까?

스프링 보안을 사용하여 서비스 계층을 보호 할 수있는 방법이 있습니까? 아니면 서비스 계층에 대한 호출을 보안 계층을 모두 우회 할 것입니까?

답변