2012-07-17 10 views
1

나는 데이터 기반 * ed 보안 메커니즘보다 역할 기반 보안 메커니즘이 필요한 CRM 시스템을 개발 중입니다..net에 대한 데이터 기반 보안 프레임 워크를 찾고

예를 들어, 시스템의 특정 사용자는 view 모든 클라이언트, update 자신의 클라이언트가 될 수 있습니다.

따라서 역할 기반 보안은 모든 영업 사원이 같은 역할을하기 때문에 여기서는 도움이되지 않습니다. sales_user_role.

나는 모든 클라이언트 행의 필드를함으로써 그들을 차별화해야 위의 경우에 sales_owner_id

if(client.salesOwnerId.Equales(httpSession["user_id"]){ 
    delete... 
    update... 

} 

client 객체가 salesOwnerId을 가지고있는 클라이언트 엔티티입니다.
위의 코드는 스파게티 코드이므로 데이터 기반 보안 프레임 작업에서 사용하고 싶습니다.

저는 C# .NET4, MVC3, WCF, Nhibernate 및 Spring for Dependency injection으로 작업하고 있습니다.

(나는 그렇게 코뿔소 보안을 보았다하지만 문서화되지 않고있다 매우 적은 학습 자원)

감사

+0

당신이 묘사하는 것은 "소유자"의 암시 적 역할은을하는 각 사용자는 데이터베이스에서 소유 한 객체와 관련하여 소유권을 갖습니다. 소유권을 기반으로 권한 부여를 결정해야하는 객체는 "상호 작용하는 사용자가 내 소유자입니까?"메소드를 서비스 또는 보에서 –

+1

Rhino Security를 ​​보증 할 수 있습니다. 단위 테스트를 읽고 이해하기 쉽습니다. – Henrik

답변

0

당신은 아직도 당신이 고전적인 역할 기반 권한 부여와 원하는 것을 달성 할 수 있습니다 예 : RoleProvider.

ViewOwnClients 
ViewAllClients 
UpdateOwnClients 
UpdateAllClients 
DeleteOwnClients 
DeleteAllClients 

당신은 여전히 ​​소유자 ID의 예를 들어 테스트 코드가 필요합니다 : 당신과 같은 역할을 할 수 예를 들어

if ((User.IsInRole("UpdateAllClients") || 
    (User.IsInRole("UpdateOwnClients") && client.OwnerId = currentUserId)) 
{ 
    ... 
}