관리 코드는 IPrincipal 개체에 대한 참조를 포함하는 IIdentity 개체를 통해 보안 주체의 신원 또는 역할을 발견할 수 있습니다. ID 및 주체 개체를 사용자 및 그룹 계정과 같은 친숙한 개념과 비교하는 것이 유용할 수 있습니다. 대부분의 네트워크 환경에서 사용자 계정은 사용자 또는 프로그램을 나타내고 그룹 계정은 특정 범주의 사용자 및 사용자가 소유한 권한을 나타냅니다. 마찬가지로 .NET ID 개체는 사용자를 나타내고 역할은 멤버 자격 및 보안 컨텍스트를 나타냅니다. .NET에서 주 개체는 ID 개체와 역할을 모두 캡슐화합니다. .NET 애플리케이션은 해당 ID 또는 더 일반적으로 해당 역할 멤버 자격에 따라 보안 주체에 대한 권한을 부여합니다.
정체성 개체
ID 개체는 유효성을 검사하는 사용자 또는 엔터티에 대한 정보를 캡슐화합니다. 가장 기본적인 수준에서 ID 개체에는 이름 및 인증 유형이 포함됩니다. 이름은 사용자의 이름 또는 Windows 계정의 이름이 될 수 있지만 인증 유형은 Kerberos V5와 같은 지원되는 로그온 프로토콜 또는 사용자 지정 값일 수 있습니다. .NET은 GenericIdentity 대부분의 사용자 지정 로그온 시나리오에 사용할 수 있는 개체와 애플리케이션이 Windows 인증에 의존하도록 할 때 사용할 수 있는 보다 특수한 WindowsIdentity 개체를 정의합니다. 또한 사용자 지정 사용자 정보를 캡슐화하는 고유한 ID 클래스를 정의할 수 있습니다.
이 인터페이스는 IIdentity Kerberos V5 또는 NTLM과 같은 이름 및 인증 유형에 액세스하기 위한 속성을 정의합니다. 모든 ID 클래스는 IIdentity 인터페이스를 구현합니다. Identity 개체와 스레드가 현재 실행 중인 Windows 프로세스 토큰 간에는 필수 관계가 없습니다. 그러나 Identity 개체가 WindowsIdentity 개체인 경우 ID는 Windows 보안 토큰을 나타내는 것으로 간주됩니다.
주요 객체
보안 주체 개체는 코드가 실행되는 보안 컨텍스트를 나타냅니다. 주 개체와 연결된 역할에 따라 역할 기반 보안 부여 권한을 구현하는 애플리케이션입니다. ID 개체와 마찬가지로 .NET은 GenericPrincipal 개체와 개체를 WindowsPrincipal 제공합니다. 사용자 지정 주체 클래스를 정의할 수도 있습니다.
인터페이스는 IPrincipal 연결된 Identity 개체에 액세스하기 위한 속성과 Principal 개체로 식별된 사용자가 지정된 역할의 멤버인지 여부를 확인하는 메서드를 정의합니다. 모든 Principal 클래스는 IPrincipal 인터페이스뿐만 아니라 필요한 추가 속성 및 메서드를 구현합니다. 예를 들어 공용 언어 런타임은 그룹 멤버 자격을 역할에 매핑하기 위한 추가 기능을 구현하는 WindowsPrincipal 클래스를 제공합니다.
Principal 개체는 애플리케이션 도메인(CallContext) 내의 호출 컨텍스트(AppDomain) 개체에 바인딩됩니다. 기본 호출 컨텍스트는 항상 새 AppDomain으로 만들어지므로 Principal 개체를 수락할 수 있는 호출 컨텍스트가 항상 존재합니다. 새 스레드가 만들어지면 스레드에 대한 CallContext 개체도 만들어집니다. Principal 객체 참조는 생성 스레드에서 새 스레드의 CallContext로 자동으로 복사됩니다. 런타임에서 스레드 작성자가 속한 보안 주체 개체를 확인할 수 없는 경우 보안 주체 및 ID 개체 만들기에 대한 기본 정책을 따릅니다.
구성 가능한 애플리케이션 도메인별 정책은 새 애플리케이션 도메인과 연결할 Principal 개체의 유형을 결정하는 규칙을 정의합니다. 보안 정책이 허용하는 경우 런타임은 현재 실행 스레드와 연결된 운영 체제 토큰을 반영하는 보안 주체 및 ID 개체를 만들 수 있습니다. 기본적으로 런타임은 인증되지 않은 사용자를 나타내는 보안 주체 및 아이덴티티 개체를 사용합니다. 런타임은 코드가 액세스를 시도할 때까지 이러한 기본 보안 주체 및 ID 개체를 만들지 않습니다.
애플리케이션 도메인을 만드는 신뢰할 수 있는 코드는 기본 보안 주체 및 ID 개체의 생성을 제어하는 애플리케이션 도메인 정책을 설정할 수 있습니다. 이 애플리케이션 도메인별 정책은 해당 애플리케이션 도메인의 모든 실행 스레드에 적용됩니다. 관리되지 않는 신뢰할 수 있는 호스트는 기본적으로 이 정책을 설정할 수 있지만 이 정책을 설정하는 관리 코드에는 도메인 정책을 제어하기 위한 코드가 System.Security.Permissions.SecurityPermission 있어야 합니다.
같은 프로세스(따라서 동일한 컴퓨터) 내에서 애플리케이션 도메인 간에 주체 개체를 전송하는 경우, 원격 인프라는 호출자의 컨텍스트와 연결된 주체 개체에 대한 참조를 수신자 컨텍스트로 복사합니다.
참고하십시오
.NET