2010-08-20 2 views

답변

11

대부분의 보안 권한은 부분 신뢰로 실행되도록 설계된 재사용 가능한 라이브러리를 빌드 할 때 특히 유용합니다. 이 방법을 사용하면 호출 어셈블리 나 AppDomain에 적절한 권한이 구성되지 않은 경우 특정 기능에 대한 액세스를 제한 할 수 있습니다. 완전 신뢰로 실행되는 응용 프로그램의 경우 대부분의 보안 권한이 유용하지 않습니다.

그러나 내가 많이 사용하는 경향이있는 속성이 하나 있는데 그 값은 PrincipalPermissionAttribute입니다. 이 특성을 사용하여 클래스 나 함수를 꾸밀 때 .NET은 현재 스레드의 원칙에 적절한 권한이 있는지 여부를 모든 액세스에서 검사합니다. 즉, 사용자 역할 (역할 기반 보안)을 기반으로 해당 코드에 대한 액세스를 허용하거나 거부 할 수 있습니다.

[PrincipalPermission(SecurityAction.Demand, Role = "Managers")] 
public static void ShowSalaryForEmployee(Employee employee) 
{ 
    // code here. 
} 

UPDATE 2,017 :

상기 답이 완전히 오래된 여기서 일례이다. 몇 년 전에이 특정 속성을 사용하지 않았습니다. CLR 내장 코드 작성 기술을 사용했기 때문에 특히 코드의 보안 측면을 테스트하는 데 관심이없는 곳에서 단위 테스트와 통합 테스트를 수행하기가 정말 어려웠습니다.

대신 코드 작성에 의존하지 않고 일반적으로 메시지로 정의 된 운영 체제에 대한 사용 권한을 선언하고 인프라 스트럭처 수준 (일반적으로 데코레이터 사용)에서 권한을 구현하는 자체 특성을 정의하는 것이 훨씬 더 좋습니다.

관련 문제