다음을 통해 공유


PrincipalPermission 클래스

정의

주의

Code Access Security is not supported or honored by the runtime.

선언적 보안 및 명령적 보안 동작 둘 다에 대해 정의된 언어 구문을 사용하여 현재 보안 주체를 확인할 수 있도록 합니다( IPrincipal참조). 이 클래스는 상속될 수 없습니다.

public ref class PrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
[<System.Serializable>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
Public NotInheritable Class PrincipalPermission
Implements IPermission, IUnrestrictedPermission
상속
PrincipalPermission
특성
구현

예제

다음 예제에서는 활성 보안 주체가 관리자여야 합니다. 매개 변수는 namenull관리자인 모든 사용자가 수요를 전달할 수 있도록 하는 입니다.

참고

Windows Vista에서는 UAC(사용자 계정 컨트롤)가 사용자 권한을 결정합니다. 기본 제공 Administrators 그룹의 멤버인 경우 두 개의 런타임 액세스 토큰(표준 사용자 액세스 토큰 및 관리자 액세스 토큰)이 할당됩니다. 기본적으로 표준 사용자 역할이 지정됩니다. 관리자 권한이 필요한 코드를 실행하려면 먼저 표준 사용자에서 관리자로 권한을 높여야 합니다. 애플리케이션 아이콘을 마우스 오른쪽 단추로 클릭하고 관리자로 실행하도록 지정하여 애플리케이션을 시작하면 이 작업을 수행할 수 있습니다.

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Policy;
using namespace System::Security::Principal;

int main(array<System::String ^> ^args)
{
    System::String^ null;
    AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
    PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
      principalPerm->Demand();
      Console::WriteLine("Demand succeeded");
    return 0;
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{

    public static void Main()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
        principalPerm.Demand();
        Console.WriteLine("Demand succeeded.");
    }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal



Class SecurityPrincipalDemo


    Public Shared Sub Main()
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
        Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
        principalPerm.Demand()
        Console.WriteLine("Demand succeeded.")

    End Sub
End Class

설명

주의

CAS(코드 액세스 보안)는 .NET Framework 및 .NET의 모든 버전에서 더 이상 사용되지 않습니다. 최신 버전의 .NET은 CAS 주석을 준수하지 않으며 CAS 관련 API를 사용하는 경우 오류가 발생합니다. 개발자는 보안 작업을 수행하는 대체 수단을 찾아야 합니다.

생성자에 PrincipalPermission ID 정보(사용자 이름 및 역할)를 전달하여 활성 보안 주체의 ID가 이 정보와 일치하도록 요구할 수 있습니다.

활성 IPrincipal 및 연결된 IIdentity와 일치하려면 지정된 ID와 역할이 모두 일치해야 합니다. ID 문자열을 사용하는 경우 null ID와 일치하도록 요청으로 해석됩니다. 역할 문자열을 null 사용하면 모든 역할과 일치합니다. 의미상 또는 role 에 대한 name 매개 변수를 PrincipalPermission 전달 null 하면 의 IPrincipalID 및 역할과 일치합니다. 가 인증된 엔터티 또는 인증되지 않은 엔터티를 나타내는지 여부 IIdentity 만 결정하는 을 생성 PrincipalPermission 할 수도 있습니다. 이 경우 및 namerole 는 무시됩니다.

대부분의 다른 권한과 달리 는 PrincipalPermission 를 확장 CodeAccessPermission하지 않습니다. 그러나 인터페이스를 구현합니다 IPermission . 이는 가 코드 액세스 권한이 아니기 때문 PrincipalPermission 입니다. 즉, 실행 중인 어셈블리의 ID에 따라 부여되지 않습니다. 대신 코드에서 코드 액세스 및 코드 ID 권한에 대해 해당 작업이 수행되는 방식과 일치하는 방식으로 현재 사용자 ID에 대해 작업(Demand, Union, Intersect등)을 수행할 수 있습니다.

중요

보안 주체 사용 권한 요청 하기 전에 현재 애플리케이션 도메인의 사용자 정책 열거형 값으로 설정 하는 데 필요한은 WindowsPrincipal합니다. 기본적으로 보안 주체 정책은 로 UnauthenticatedPrincipal설정됩니다. 보안 주체 정책을 WindowsPrincipal로 설정하지 않으면 보안 주체 권한에 대한 요구가 실패합니다. 보안 주체 권한이 요구되기 전에 다음 코드를 실행해야 합니다.

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

생성자

PrincipalPermission(PermissionState)
사용되지 않음.

지정된 PrincipalPermission를 사용하여 PermissionState 클래스의 새 인스턴스를 초기화합니다.

PrincipalPermission(String, String)
사용되지 않음.

지정된 namerole에 대한 PrincipalPermission 클래스의 새 인스턴스를 초기화합니다.

PrincipalPermission(String, String, Boolean)
사용되지 않음.

지정된 name, role 및 인증 상태에 대한 PrincipalPermission 클래스의 새 인스턴스를 초기화합니다.

메서드

Copy()
사용되지 않음.

현재 사용 권한의 동일한 복사본을 만들고 반환합니다.

Demand()
사용되지 않음.

런타임에 현재 보안 주체가 현재 사용 권한이 지정하는 보안 주체와 일치하는지 여부를 확인합니다.

Equals(Object)
사용되지 않음.

지정한 PrincipalPermission 개체가 현재 PrincipalPermission과 같은지 여부를 확인합니다.

Equals(Object)
사용되지 않음.

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
FromXml(SecurityElement)
사용되지 않음.

XML 인코딩의 지정된 상태를 사용하여 사용 권한을 다시 만듭니다.

GetHashCode()
사용되지 않음.

해시 알고리즘과 해시 테이블 같은 데이터 구조에 사용하기 적합한 PrincipalPermission 개체에 대한 해시 코드를 가져옵니다.

GetHashCode()
사용되지 않음.

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()
사용되지 않음.

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
Intersect(IPermission)
사용되지 않음.

현재 사용 권한 및 지정된 사용 권한의 공통 권한을 만들어 반환합니다.

IsSubsetOf(IPermission)
사용되지 않음.

현재 사용 권한이 지정된 사용 권한의 하위 집합인지를 확인합니다.

IsUnrestricted()
사용되지 않음.

현재 사용 권한이 제한되지 않았는지 여부를 나타내는 값을 반환합니다.

MemberwiseClone()
사용되지 않음.

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()
사용되지 않음.

현재 사용 권한을 나타내는 문자열을 만들고 반환합니다.

ToXml()
사용되지 않음.

사용 권한 및 해당 사용 권한의 현재 상태에 대한 XML 인코딩을 만듭니다.

Union(IPermission)
사용되지 않음.

현재 사용 권한 및 지정한 사용 권한을 합한 사용 권한을 만듭니다.

적용 대상

추가 정보