내 응용 프로그램에는 조직이라는 최상위 엔티티가 있습니다. 사용자와 조직 간의 관계는 다 대 다수입니다.스프링 보안 사용자 역할 당 조직
이의 나는 다음과 같은 시나리오를 가질 수 있기 때문에 :
- 사용자 A는 OrganizationA에 대한 역할 ROLE_ADMIN을 가지고
- 사용자 A는 내가 사용자 A가 리소스에 액세스 할 때 확인해야 OrganizationB
에 대한 역할 ROLE_USER있다 OrganizationB에서 그는 ADMIN으로하지 않습니다. 따라서 사용자가 조직 수준에서 올바른 역할을 수행하고 있는지 확인해야합니다. 이것을 허락하는 Spring Security에 내장 된 것이 있습니까? 그렇지 않다면 누가 이것을 해결하는 것이 가장 좋은 방법인지 알 수 있습니까?
UPDATE : 좀 더 정보 ...
사용자가 로그인하고 작업 할 조직하는 선택합니다. 그것은 세션에 저장됩니다. 그 외에도 URL은 Secured 주석으로 잠겨 있습니다. 즉 UserA가 로그인하여 OrgA를 선택하면/admin/user/create에 액세스 할 수 있어야하지만 로그인하면 OrgB를 선택하면 해당 URL에 액세스 할 수 없습니다.
중요한 것은 모든 방법에서 추가 검사를하는 것입니다. "ok, OrgB의 관리자는 아니지만 OrgB의 관리자이고 OrgB를 사용하여 로그인 했으므로이 요청을 거부합니다"라는 서비스 메소드를 호출하십시오.
이 문제를 처리하는 데 더 많은 grails/spring-security 방법이 필요합니다.
여기에 더 많은 정보를 입력해야합니다. 그렇지 않으면 구체적인 접근 방법을 제안하기가 어려울 것입니다. 서로 다른 조직의 자원을 차별화하는 요소는 무엇입니까? –
관리자 또는 OrganizationA로서 사용자를 생성 할 수 있습니다. OrganizationB에서 UserA를 허용하고 싶지 않습니다. 그런 종류의 물건. – Gregg
좋아, 내가해야 할 말은 "앱이 다른 리소스를 어떻게 구별합니까?"입니다. 이 문맥에서 "자원"이란 무엇입니까? 다른 조직에 대해 서로 다른 URL을 사용합니까? –