Compartilhar via


WindowsIdentity Construtores

Definição

Inicializa uma nova instância da classe WindowsIdentity.

Sobrecargas

WindowsIdentity(IntPtr)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows especificado.

WindowsIdentity(WindowsIdentity)

Inicializa uma nova instância da classe WindowsIdentity usando o objeto WindowsIdentity especificado.

WindowsIdentity(String)

Inicializa uma nova instância de WindowsIdentity classe do usuário representada pelo nome UPN especificado.

WindowsIdentity(IntPtr, String)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows e tipo de autenticação especificados.

WindowsIdentity(SerializationInfo, StreamingContext)
Obsoleto.

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado por informações em um fluxo de SerializationInfo.

WindowsIdentity(String, String)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo nome UPN e pelo tipo de autenticação especificado.

WindowsIdentity(IntPtr, String, WindowsAccountType)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows, o tipo de autenticação e o tipo de conta do Windows especificados.

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows especificado, o tipo de autenticação especificado, o tipo de conta do Windows especificado e o status de autenticação especificado.

WindowsIdentity(IntPtr)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows especificado.

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

Parâmetros

userToken
IntPtr

nativeint

O token de conta para o usuário em cujo nome o código está em execução.

Exceções

userToken é 0.

- ou -

userToken é duplicado e inválido para representação.

O chamador não tem as permissões corretas.

- ou -

Erro do Win32.

Comentários

A tabela a seguir mostra os valores de propriedade iniciais de uma instância do WindowsIdentity.

Propriedade Valor inicial
AuthenticationType Negotiate
WindowsAccountType Normal
IsAuthenticated false

Observação

Você pode recuperar o token representado userToken chamando código não gerenciado, como a função de API LogonUser do Windows. Sempre solte userToken chamando a função de API CloseHandle do Windows. Para obter mais informações sobre como chamar código não gerenciado, consulte Consumindo funções de DLL não gerenciadas.

Aplica-se a

WindowsIdentity(WindowsIdentity)

Inicializa uma nova instância da classe WindowsIdentity usando o objeto WindowsIdentity especificado.

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)

Parâmetros

identity
WindowsIdentity

O objeto do qual a nova instância de WindowsIdentity será construída.

Aplica-se a

WindowsIdentity(String)

Inicializa uma nova instância de WindowsIdentity classe do usuário representada pelo nome UPN especificado.

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)

Parâmetros

sUserPrincipalName
String

O UPN para o usuário em cujo nome o código está em execução.

Exceções

O Windows retornou o código de status do Windows NT STATUS_ACCESS_DENIED.

Memória insuficiente.

O chamador não tem as permissões corretas.

- ou -

O computador não está conectado a um domínio do Windows 2003 ou posterior.

- ou -

O computador não está executando o Windows 2003 ou posterior.

- ou -

O usuário não é um membro do domínio a que o computador está conectado.

Comentários

Um UPN tem o nome de usuário de formatonome de domínio@.com, em outras palavras, um endereço de email. O UPN identificado em sUserPrincipalName é usado para recuperar um token para esse usuário por meio da função da API LsaLogonUser do Windows. Por sua vez, esse token é usado para identificar o usuário. Uma exceção pode ser retornada devido à incapacidade de fazer logon usando o UPN fornecido.

Observação

Esse construtor destina-se a ser usado somente em computadores ingressados no Windows Server 2003 ou em domínios posteriores. Uma exceção é gerada para tipos de domínio anteriores. Essa restrição ocorre devido ao fato de que esse construtor usa a estrutura KERB_S4U_LOGON, que foi introduzida pela primeira vez no Windows Server 2003. Além disso, esse construtor requer acesso de leitura ao atributo TGGAU (token-groups-global-and-universal) na conta de usuário de destino.

Aplica-se a

WindowsIdentity(IntPtr, String)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows e tipo de autenticação especificados.

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)

Parâmetros

userToken
IntPtr

nativeint

O token de conta para o usuário em cujo nome o código está em execução.

type
String

(Uso informativo apenas.) O tipo de autenticação usado para identificar o usuário.

Exceções

userToken é 0.

- ou -

userToken é duplicado e inválido para representação.

O chamador não tem as permissões corretas.

- ou -

Erro do Win32.

Exemplos

O código a seguir mostra o uso do WindowsIdentity construtor para criar uma nova instância da WindowsIdentity classe para o usuário representado pelo token de conta do Windows especificado e o tipo de autenticação especificado. Este exemplo de código faz parte de um exemplo maior fornecido para a WindowsIdentity classe .

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

Comentários

A tabela a seguir mostra os valores de propriedade iniciais de uma instância do WindowsIdentity.

Propriedade Valor inicial
WindowsAccountType Normal
IsAuthenticated false

O valor do type parâmetro é usado para definir o AuthenticationType parâmetro . Se type for null, o sistema de segurança define AuthenticationType como Negotiate no Windows Vista e versões posteriores do sistema operacional Windows e para Kerberos em versões anteriores do sistema operacional Windows. O sistema de segurança não usa esse valor; é apenas para uso informativo.

Observação

Você pode recuperar o token representado userToken chamando código não gerenciado, como a função de API LogonUser do Windows. Sempre solte userToken chamando a função de API CloseHandle do Windows. Para obter mais informações sobre como chamar código não gerenciado, consulte Consumindo funções de DLL não gerenciadas.

Aplica-se a

WindowsIdentity(SerializationInfo, StreamingContext)

Cuidado

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

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado por informações em um fluxo de SerializationInfo.

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)

Parâmetros

info
SerializationInfo

O objeto que contém as informações da conta do usuário.

context
StreamingContext

Um objeto que indica as características de fluxo.

Atributos

Exceções

Uma WindowsIdentity não pode ser serializada entre processos.

O chamador não tem as permissões corretas.

- ou -

Erro do Win32.

Comentários

Importante

Chamar este método quando você tiver dados não confiáveis é um risco à segurança. Chame esse método apenas quando você tiver dados confiáveis. Para obter mais informações, consulte Validar todas as entradas.

Aplica-se a

WindowsIdentity(String, String)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo nome UPN e pelo tipo de autenticação especificado.

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)

Parâmetros

sUserPrincipalName
String

O UPN para o usuário em cujo nome o código está em execução.

type
String

(Uso informativo apenas.) O tipo de autenticação usado para identificar o usuário.

Exceções

O Windows retornou o código de status do Windows NT STATUS_ACCESS_DENIED.

Memória insuficiente.

O chamador não tem as permissões corretas.

- ou -

O computador não está conectado a um domínio do Windows 2003 ou posterior.

- ou -

O computador não está executando o Windows 2003 ou posterior.

- ou -

O usuário não é um membro do domínio a que o computador está conectado.

Comentários

O valor do type parâmetro é usado para definir o AuthenticationType parâmetro . Se type for null, o sistema de segurança define AuthenticationType como Negotiate no Windows Vista e versões posteriores do sistema operacional Windows e para Kerberos em versões anteriores do sistema operacional Windows. O sistema de segurança não usa esse valor; é apenas para uso informativo.

O UPN identificado em sUserPrincipalName é usado para recuperar um token para esse usuário por meio da função da API LsaLogonUser do Windows. Por sua vez, esse token é usado para identificar o usuário. Uma exceção pode ser retornada devido à incapacidade de fazer logon usando o UPN fornecido.

Observação

Esse construtor destina-se a ser usado somente em computadores ingressados no Windows Server 2003 ou em domínios posteriores. Uma exceção é gerada para tipos de domínio anteriores. Essa restrição ocorre devido ao fato de que esse construtor usa a estrutura KERB_S4U_LOGON, que foi introduzida pela primeira vez no Windows Server 2003. Além disso, esse construtor requer acesso de leitura ao atributo TGGAU (token-groups-global-and-universal) na conta de usuário de destino.

Aplica-se a

WindowsIdentity(IntPtr, String, WindowsAccountType)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows, o tipo de autenticação e o tipo de conta do Windows especificados.

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)

Parâmetros

userToken
IntPtr

nativeint

O token de conta para o usuário em cujo nome o código está em execução.

type
String

(Uso informativo apenas.) O tipo de autenticação usado para identificar o usuário.

acctType
WindowsAccountType

Um dos valores de enumeração.

Exceções

userToken é 0.

- ou -

userToken é duplicado e inválido para representação.

O chamador não tem as permissões corretas.

- ou -

Erro do Win32.

Exemplos

O código a seguir mostra o uso do WindowsIdentity construtor para criar uma nova instância da WindowsIdentity classe para o usuário representado pelo token de conta do Windows especificado, o tipo de autenticação especificado e o tipo de conta do Windows especificado. Este exemplo de código faz parte de um exemplo maior fornecido para a WindowsIdentity classe .

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

Comentários

A tabela a seguir mostra os valores de propriedade iniciais de uma instância do WindowsIdentity.

Propriedade Valor inicial
IsAuthenticated false

O valor do type parâmetro é usado para definir o AuthenticationType parâmetro . Se type for null, o sistema de segurança define AuthenticationType como Negotiate no Windows Vista e versões posteriores do sistema operacional Windows e para Kerberos em versões anteriores do sistema operacional Windows. O sistema de segurança não usa esse valor; é apenas para uso informativo.

Observação

Você pode recuperar o token representado userToken chamando código não gerenciado, como a função de API LogonUser do Windows. Sempre solte userToken chamando a função de API CloseHandle do Windows. Para obter mais informações sobre como chamar código não gerenciado, consulte Consumindo funções de DLL não gerenciadas.

Aplica-se a

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows especificado, o tipo de autenticação especificado, o tipo de conta do Windows especificado e o status de autenticação especificado.

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)

Parâmetros

userToken
IntPtr

nativeint

O token de conta para o usuário em cujo nome o código está em execução.

type
String

(Uso informativo apenas.) O tipo de autenticação usado para identificar o usuário.

acctType
WindowsAccountType

Um dos valores de enumeração.

isAuthenticated
Boolean

true para indicar que o usuário está autenticado, caso contrário, false.

Exceções

userToken é 0.

- ou -

userToken é duplicado e inválido para representação.

O chamador não tem as permissões corretas.

- ou -

Erro do Win32.

Exemplos

O código a seguir mostra o uso do WindowsIdentity construtor para criar uma nova instância da WindowsIdentity classe para o usuário representado pelo token de conta do Windows especificado, o tipo de autenticação especificado, o tipo de conta do Windows especificado e o status de autenticação especificado. Este exemplo de código faz parte de um exemplo maior fornecido para a WindowsIdentity classe .

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

Comentários

O valor do type parâmetro é usado para definir o AuthenticationType parâmetro . Se type for null, o sistema de segurança define AuthenticationType como Negotiate no Windows Vista e versões posteriores do sistema operacional Windows e para Kerberos em versões anteriores do sistema operacional Windows. O sistema de segurança não usa esse valor; é apenas para uso informativo.

Você pode recuperar o token representado userToken chamando código não gerenciado, como a função de API LogonUser do Windows. Sempre solte userToken chamando a função de API CloseHandle do Windows. Para obter mais informações sobre como chamar código não gerenciado, consulte Consumindo funções de DLL não gerenciadas.

Aplica-se a