다음을 통해 공유


WindowsIdentity 생성자

정의

WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

오버로드

WindowsIdentity(IntPtr)

지정된 Windows 계정 토큰으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

WindowsIdentity(WindowsIdentity)

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

WindowsIdentity(String)

지정된 UPN(사용자 계정 이름)으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

WindowsIdentity(IntPtr, String)

지정된 Windows 계정 토큰 및 지정된 인증 유형으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

WindowsIdentity(SerializationInfo, StreamingContext)
사용되지 않음.

SerializationInfo 스트림의 정보로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

WindowsIdentity(String, String)

지정된 UPN(사용자 계정 이름) 및 지정된 인증 유형으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

WindowsIdentity(IntPtr, String, WindowsAccountType)

지정된 Windows 계정 토큰, 지정된 인증 유형 및 지정된 Windows 계정 유형으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

지정된 Windows 계정 토큰, 지정된 인증 유형, 지정된 Windows 계정 유형 및 지정된 인증 상태로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

WindowsIdentity(IntPtr)

지정된 Windows 계정 토큰으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

public:
 WindowsIdentity(IntPtr userToken);
public WindowsIdentity (IntPtr userToken);
new System.Security.Principal.WindowsIdentity : nativeint -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr)

매개 변수

userToken
IntPtr

nativeint

코드를 대신하여 실행 중인 사용자의 계정 토큰입니다.

예외

userToken 0입니다.

-또는-

userToken 복제되어 가장에 유효하지 않습니다.

호출자에게 올바른 권한이 없습니다.

-또는-

Win32 오류가 발생했습니다.

설명

다음 표에서는 WindowsIdentity인스턴스에 대한 초기 속성 값을 보여 줍니다.

재산 초기 값
AuthenticationType Negotiate
WindowsAccountType Normal
IsAuthenticated false

메모

Windows API LogonUser 함수와 같은 관리되지 않는 코드를 호출하여 userToken 나타내는 토큰을 검색할 수 있습니다. 항상 Windows API CloseHandle 함수를 호출하여 userToken 해제합니다. 관리되지 않는 코드를 호출하는 방법에 대한 자세한 내용은 관리되지 않는 DLL 함수사용합니다.

적용 대상

WindowsIdentity(WindowsIdentity)

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

protected:
 WindowsIdentity(System::Security::Principal::WindowsIdentity ^ identity);
protected WindowsIdentity (System.Security.Principal.WindowsIdentity identity);
new System.Security.Principal.WindowsIdentity : System.Security.Principal.WindowsIdentity -> System.Security.Principal.WindowsIdentity
Protected Sub New (identity As WindowsIdentity)

매개 변수

identity
WindowsIdentity

WindowsIdentity새 인스턴스를 생성할 개체입니다.

적용 대상

WindowsIdentity(String)

지정된 UPN(사용자 계정 이름)으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

public:
 WindowsIdentity(System::String ^ sUserPrincipalName);
public WindowsIdentity (string sUserPrincipalName);
new System.Security.Principal.WindowsIdentity : string -> System.Security.Principal.WindowsIdentity
Public Sub New (sUserPrincipalName As String)

매개 변수

sUserPrincipalName
String

코드를 대신하여 실행 중인 사용자에 대한 UPN입니다.

예외

Windows에서 Windows NT 상태 코드 STATUS_ACCESS_DENIED 반환했습니다.

사용 가능한 메모리가 부족합니다.

호출자에게 올바른 권한이 없습니다.

-또는-

컴퓨터가 Windows 2003 이상 도메인에 연결되어 있지 않습니다.

-또는-

컴퓨터가 Windows 2003 이상을 실행하고 있지 않습니다.

-또는-

사용자가 컴퓨터가 연결된 도메인의 구성원이 아닙니다.

설명

UPN에는 도메인 이름.com사용자 이름을 형식이 있습니다. 즉, 전자 메일 주소입니다. sUserPrincipalName 식별된 UPN은 Windows API LsaLogonUser 함수를 통해 해당 사용자의 토큰을 검색하는 데 사용됩니다. 따라서 해당 토큰은 사용자를 식별하는 데 사용됩니다. 제공된 UPN을 사용하여 로그온할 수 없기 때문에 예외가 반환될 수 있습니다.

메모

이 생성자는 Windows Server 2003 이상 도메인에 가입된 컴퓨터에서만 사용하기 위한 것입니다. 이전 도메인 유형에 대해 예외가 throw됩니다. 이 제한은 이 생성자가 Windows Server 2003에서 처음 도입된 KERB_S4U_LOGON 구조사용하기 때문입니다. 또한 이 생성자는 대상 사용자 계정의 token-groups-global-and-universal(TGGAU) 특성 대한 읽기 권한이 필요합니다.

적용 대상

WindowsIdentity(IntPtr, String)

지정된 Windows 계정 토큰 및 지정된 인증 유형으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

public:
 WindowsIdentity(IntPtr userToken, System::String ^ type);
public WindowsIdentity (IntPtr userToken, string type);
new System.Security.Principal.WindowsIdentity : nativeint * string -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr, type As String)

매개 변수

userToken
IntPtr

nativeint

코드를 대신하여 실행 중인 사용자의 계정 토큰입니다.

type
String

(정보만 사용). 사용자를 식별하는 데 사용되는 인증 유형입니다.

예외

userToken 0입니다.

-또는-

userToken 복제되어 가장에 유효하지 않습니다.

호출자에게 올바른 권한이 없습니다.

-또는-

Win32 오류가 발생했습니다.

예제

다음 코드에서는 WindowsIdentity 생성자를 사용하여 지정된 Windows 계정 토큰 및 지정된 인증 유형으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 만드는 방법을 보여 줍니다. 이 코드 예제는 WindowsIdentity 클래스에 제공된 더 큰 예제의 일부입니다.

void IntPtrStringConstructor( IntPtr logonToken )
{
   
   // Construct a WindowsIdentity object using the input account token 
   // and the specified authentication type.
   String^ authenticationType = "WindowsAuthentication";
   WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType );
   
   Console::WriteLine( "Created a Windows identity object named {0}.", windowsIdentity->Name );
}
private static void IntPtrStringConstructor(IntPtr logonToken)
{
    // Construct a WindowsIdentity object using the input account token 
    // and the specified authentication type.
    string authenticationType = "WindowsAuthentication";
    WindowsIdentity windowsIdentity =
                    new WindowsIdentity(logonToken, authenticationType);

    Console.WriteLine("Created a Windows identity object named " +
        windowsIdentity.Name + ".");
}
Private Sub IntPtrStringConstructor(ByVal logonToken As IntPtr)
    ' Construct a WindowsIdentity object using the input account token 
    ' and the specified authentication type
    Dim authenticationType = "WindowsAuthentication"
    Dim windowsIdentity As _
        New WindowsIdentity(logonToken, authenticationType)

    WriteLine("Created a Windows identity object named " + _
        windowsIdentity.Name + ".")
End Sub

설명

다음 표에서는 WindowsIdentity인스턴스에 대한 초기 속성 값을 보여 줍니다.

재산 초기 값
WindowsAccountType Normal
IsAuthenticated false

type 매개 변수의 값은 AuthenticationType 매개 변수를 설정하는 데 사용됩니다. type null경우 보안 시스템은 Windows Vista 이상 버전의 Windows 운영 체제에서 Negotiate 이전 버전의 Windows 운영 체제에서 KerberosAuthenticationType 설정합니다. 보안 시스템은 이 값을 사용하지 않습니다. 정보 제공 용도로만 사용됩니다.

메모

Windows API LogonUser 함수와 같은 관리되지 않는 코드를 호출하여 userToken 나타내는 토큰을 검색할 수 있습니다. 항상 Windows API CloseHandle 함수를 호출하여 userToken 해제합니다. 관리되지 않는 코드를 호출하는 방법에 대한 자세한 내용은 관리되지 않는 DLL 함수사용합니다.

적용 대상

WindowsIdentity(SerializationInfo, StreamingContext)

주의

This API supports obsolete formatter-based serialization. It should not be called or extended by application code.

SerializationInfo 스트림의 정보로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

public:
 WindowsIdentity(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
public WindowsIdentity (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public WindowsIdentity (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Security.Principal.WindowsIdentity : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Security.Principal.WindowsIdentity
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new System.Security.Principal.WindowsIdentity : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Security.Principal.WindowsIdentity
Public Sub New (info As SerializationInfo, context As StreamingContext)

매개 변수

info
SerializationInfo

사용자의 계정 정보를 포함하는 개체입니다.

context
StreamingContext

스트림 특성을 나타내는 개체입니다.

특성

예외

WindowsIdentity 프로세스 간에 직렬화할 수 없습니다.

호출자에게 올바른 권한이 없습니다.

-또는-

Win32 오류가 발생했습니다.

설명

중요하다

신뢰할 수 없는 데이터로 이 메서드를 호출하는 것은 보안 위험입니다. 신뢰할 수 있는 데이터로만 이 메서드를 호출합니다. 자세한 내용은 모든 입력유효성 검사 참조하세요.

적용 대상

WindowsIdentity(String, String)

지정된 UPN(사용자 계정 이름) 및 지정된 인증 유형으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

public:
 WindowsIdentity(System::String ^ sUserPrincipalName, System::String ^ type);
public WindowsIdentity (string sUserPrincipalName, string type);
new System.Security.Principal.WindowsIdentity : string * string -> System.Security.Principal.WindowsIdentity
Public Sub New (sUserPrincipalName As String, type As String)

매개 변수

sUserPrincipalName
String

코드를 대신하여 실행 중인 사용자에 대한 UPN입니다.

type
String

(정보만 사용). 사용자를 식별하는 데 사용되는 인증 유형입니다.

예외

Windows에서 Windows NT 상태 코드 STATUS_ACCESS_DENIED 반환했습니다.

사용 가능한 메모리가 부족합니다.

호출자에게 올바른 권한이 없습니다.

-또는-

컴퓨터가 Windows 2003 이상 도메인에 연결되어 있지 않습니다.

-또는-

컴퓨터가 Windows 2003 이상을 실행하고 있지 않습니다.

-또는-

사용자가 컴퓨터가 연결된 도메인의 구성원이 아닙니다.

설명

type 매개 변수의 값은 AuthenticationType 매개 변수를 설정하는 데 사용됩니다. type null경우 보안 시스템은 Windows Vista 이상 버전의 Windows 운영 체제에서 Negotiate 이전 버전의 Windows 운영 체제에서 KerberosAuthenticationType 설정합니다. 보안 시스템은 이 값을 사용하지 않습니다. 정보 제공 용도로만 사용됩니다.

sUserPrincipalName 식별된 UPN은 Windows API LsaLogonUser 함수를 통해 해당 사용자의 토큰을 검색하는 데 사용됩니다. 따라서 해당 토큰은 사용자를 식별하는 데 사용됩니다. 제공된 UPN을 사용하여 로그온할 수 없기 때문에 예외가 반환될 수 있습니다.

메모

이 생성자는 Windows Server 2003 이상 도메인에 가입된 컴퓨터에서만 사용하기 위한 것입니다. 이전 도메인 유형에 대해 예외가 throw됩니다. 이 제한은 이 생성자가 Windows Server 2003에서 처음 도입된 KERB_S4U_LOGON 구조사용하기 때문입니다. 또한 이 생성자는 대상 사용자 계정의 token-groups-global-and-universal(TGGAU) 특성 대한 읽기 권한이 필요합니다.

적용 대상

WindowsIdentity(IntPtr, String, WindowsAccountType)

지정된 Windows 계정 토큰, 지정된 인증 유형 및 지정된 Windows 계정 유형으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

public:
 WindowsIdentity(IntPtr userToken, System::String ^ type, System::Security::Principal::WindowsAccountType acctType);
public WindowsIdentity (IntPtr userToken, string type, System.Security.Principal.WindowsAccountType acctType);
new System.Security.Principal.WindowsIdentity : nativeint * string * System.Security.Principal.WindowsAccountType -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr, type As String, acctType As WindowsAccountType)

매개 변수

userToken
IntPtr

nativeint

코드를 대신하여 실행 중인 사용자의 계정 토큰입니다.

type
String

(정보만 사용). 사용자를 식별하는 데 사용되는 인증 유형입니다.

acctType
WindowsAccountType

열거형 값 중 하나입니다.

예외

userToken 0입니다.

-또는-

userToken 복제되어 가장에 유효하지 않습니다.

호출자에게 올바른 권한이 없습니다.

-또는-

Win32 오류가 발생했습니다.

예제

다음 코드에서는 WindowsIdentity 생성자를 사용하여 지정된 Windows 계정 토큰, 지정된 인증 유형 및 지정된 Windows 계정 유형으로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 만드는 방법을 보여 줍니다. 이 코드 예제는 WindowsIdentity 클래스에 제공된 더 큰 예제의 일부입니다.

void IntPtrStringTypeConstructor( IntPtr logonToken )
{
   
   // Construct a WindowsIdentity object using the input account token,
   // and the specified authentication type and Windows account type.
   String^ authenticationType = "WindowsAuthentication";
   WindowsAccountType guestAccount = WindowsAccountType::Guest;
   WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType,guestAccount );
   
   Console::WriteLine( "Created a Windows identity object named {0}.", windowsIdentity->Name );
}
private static void IntPtrStringTypeConstructor(IntPtr logonToken)
{
    // Construct a WindowsIdentity object using the input account token,
    // and the specified authentication type, and Windows account type.
    string authenticationType = "WindowsAuthentication";
    WindowsAccountType guestAccount = WindowsAccountType.Guest;
    WindowsIdentity windowsIdentity =
        new WindowsIdentity(logonToken, authenticationType, guestAccount);

    Console.WriteLine("Created a Windows identity object named " +
        windowsIdentity.Name + ".");
}
Private Sub IntPtrStringTypeConstructor(ByVal logonToken As IntPtr)
    ' Construct a WindowsIdentity object using the input account token,
    ' and the specified authentication type and Windows account type.
    Dim authenticationType As String = "WindowsAuthentication"
    Dim guestAccount As WindowsAccountType = WindowsAccountType.Guest
    Dim windowsIdentity As _
        New WindowsIdentity(logonToken, authenticationType, guestAccount)

    WriteLine("Created a Windows identity object named " + _
        windowsIdentity.Name + ".")
End Sub

설명

다음 표에서는 WindowsIdentity인스턴스에 대한 초기 속성 값을 보여 줍니다.

재산 초기 값
IsAuthenticated false

type 매개 변수의 값은 AuthenticationType 매개 변수를 설정하는 데 사용됩니다. type null경우 보안 시스템은 Windows Vista 이상 버전의 Windows 운영 체제에서 Negotiate 이전 버전의 Windows 운영 체제에서 KerberosAuthenticationType 설정합니다. 보안 시스템은 이 값을 사용하지 않습니다. 정보 제공 용도로만 사용됩니다.

메모

Windows API LogonUser 함수와 같은 관리되지 않는 코드를 호출하여 userToken 나타내는 토큰을 검색할 수 있습니다. 항상 Windows API CloseHandle 함수를 호출하여 userToken 해제합니다. 관리되지 않는 코드를 호출하는 방법에 대한 자세한 내용은 관리되지 않는 DLL 함수사용합니다.

적용 대상

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

지정된 Windows 계정 토큰, 지정된 인증 유형, 지정된 Windows 계정 유형 및 지정된 인증 상태로 표시되는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 초기화합니다.

public:
 WindowsIdentity(IntPtr userToken, System::String ^ type, System::Security::Principal::WindowsAccountType acctType, bool isAuthenticated);
public WindowsIdentity (IntPtr userToken, string type, System.Security.Principal.WindowsAccountType acctType, bool isAuthenticated);
new System.Security.Principal.WindowsIdentity : nativeint * string * System.Security.Principal.WindowsAccountType * bool -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr, type As String, acctType As WindowsAccountType, isAuthenticated As Boolean)

매개 변수

userToken
IntPtr

nativeint

코드를 대신하여 실행 중인 사용자의 계정 토큰입니다.

type
String

(정보만 사용). 사용자를 식별하는 데 사용되는 인증 유형입니다.

acctType
WindowsAccountType

열거형 값 중 하나입니다.

isAuthenticated
Boolean

사용자가 인증되었음을 나타내는 true. 그렇지 않으면 false.

예외

userToken 0입니다.

-또는-

userToken 복제되어 가장에 유효하지 않습니다.

호출자에게 올바른 권한이 없습니다.

-또는-

Win32 오류가 발생했습니다.

예제

다음 코드에서는 WindowsIdentity 생성자를 사용하여 지정된 Windows 계정 토큰, 지정된 인증 유형, 지정된 Windows 계정 유형 및 지정된 인증 상태가 나타내는 사용자에 대한 WindowsIdentity 클래스의 새 인스턴스를 만드는 방법을 보여 줍니다. 이 코드 예제는 WindowsIdentity 클래스에 제공된 더 큰 예제의 일부입니다.

void IntPrtStringTypeBoolConstructor( IntPtr logonToken )
{
   
   // Construct a WindowsIdentity object using the input account token,
   // and the specified authentication type, Windows account type, and
   // authentication flag.
   String^ authenticationType = "WindowsAuthentication";
   WindowsAccountType guestAccount = WindowsAccountType::Guest;
   bool isAuthenticated = true;
   WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType,guestAccount,isAuthenticated );
   
   Console::WriteLine( "Created a Windows identity object named {0}.", windowsIdentity->Name );
}
private static void IntPrtStringTypeBoolConstructor(IntPtr logonToken)
{
    // Construct a WindowsIdentity object using the input account token,
    // and the specified authentication type, Windows account type, and
    // authentication flag.
    string authenticationType = "WindowsAuthentication";
    WindowsAccountType guestAccount = WindowsAccountType.Guest;
    bool isAuthenticated = true;
    WindowsIdentity windowsIdentity = new WindowsIdentity(
        logonToken, authenticationType, guestAccount, isAuthenticated);

    Console.WriteLine("Created a Windows identity object named " +
        windowsIdentity.Name + ".");
}
Private Sub IntPrtStringTypeBoolConstructor(ByVal logonToken As IntPtr)
    ' Construct a WindowsIdentity object using the input account token,
    ' and the specified authentication type, Windows account type, and
    ' authentication flag.
    Dim authenticationType As String = "WindowsAuthentication"
    Dim guestAccount As WindowsAccountType = WindowsAccountType.Guest
    Dim isAuthenticated As Boolean = True
    Dim windowsIdentity As New WindowsIdentity( _
        logonToken, authenticationType, guestAccount, isAuthenticated)

    WriteLine("Created a Windows identity object named " + _
        windowsIdentity.Name + ".")
End Sub

설명

type 매개 변수의 값은 AuthenticationType 매개 변수를 설정하는 데 사용됩니다. type null경우 보안 시스템은 Windows Vista 이상 버전의 Windows 운영 체제에서 Negotiate 이전 버전의 Windows 운영 체제에서 KerberosAuthenticationType 설정합니다. 보안 시스템은 이 값을 사용하지 않습니다. 정보 제공 용도로만 사용됩니다.

Windows API LogonUser 함수와 같은 관리되지 않는 코드를 호출하여 userToken 나타내는 토큰을 검색할 수 있습니다. 항상 Windows API CloseHandle 함수를 호출하여 userToken 해제합니다. 관리되지 않는 코드를 호출하는 방법에 대한 자세한 내용은 관리되지 않는 DLL 함수사용합니다.

적용 대상