2017-03-01 2 views
-1

두 도메인 모델 조직 및 TicketQuestion이있는 응용 프로그램이 있습니다. 스프링 보안을 사용하여 개체 인증 하시겠습니까?

TicketController.java 저장이기구 2

에 Organization1

사용자 1 허가

사용자 2의 허가를 : 인증 된 사용자는이 같은 일부 조직에 그 각 사용자의 허가를 해결하기 위해 조직 속성이 티켓을 만들려면 티켓을 만드는 메소드. 나는이 취약점이 있습니다 : User1은 Organization2 (권한이없는 티켓)와 함께 메소드를 호출 할 수 있습니다. GET 메서드에서 권한 부여 데이터에 최대 절전 모드 필터를 사용하고 있지만 사용자가 원하는 데이터를 보호하고 사용 권한이 없다는 것을 어떻게 알 수 있습니까?

/ticket/save 

{ 
    id:-1, 
    organization:{ 
    id:2, 
    title:'organization2' //not allowed this organization 
    } 
} 


@Entity 
@Table(name = "core_organization_structure") 
public class OrganizationStructure { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long id; 

    @Column(name = "title", nullable = false) 
    private String title; 
} 

@Entity 
@Table(name = "core_Ticket") 
public class Ticket { 


    ..some prop 

    @ManyToOne 
    @JoinColumn(name = "org_id", nullable = false) 
    private OrganizationStructure org; 
} 

답변

0

양식이 제출되면 인증 된 사용자의 사용 권한을로드하고 수행하려는 작업을 수행 할 권한이 있는지 확인해야합니다.

사용자가 권한이없는 조직의 티켓을 만들려고 시도하는 경우. 기록을 지속시키지 말고 적절히 다루십시오. (예외를 던져 401을 반환하는 등 ...)

+0

네, 기본적인 해결책 중 하나입니다. 내가이 문제가있는 10 가지 속성을 가진 도메인 모델이 있다고 상상해보십시오. 각 속성에 대한로드 코드를 작성합니까? 또 다른 문제 : 내가 업데이 트를 추가하고 방법을 삭제하고 아마도이 3 가지 방법, 다른 문제는 100 개 도메인 모델이 체크 코드 100 시간을 작성하는 데 사용되는 경우, 나는 내 서비스의 외부에서 문제를 해결하고 싶습니다. –