Ler em inglês

Compartilhar via


WindowsIdentity Classe

Definição

Representa um usuário do Windows.

public class WindowsIdentity : System.Security.Claims.ClaimsIdentity, IDisposable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
public class WindowsIdentity : System.Security.Claims.ClaimsIdentity, IDisposable
[System.Serializable]
public class WindowsIdentity : System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable, System.Security.Principal.IIdentity
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class WindowsIdentity : IDisposable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable, System.Security.Principal.IIdentity
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class WindowsIdentity : System.Security.Claims.ClaimsIdentity, IDisposable, System.Runtime.Serialization.IDeserializationCallback, System.Runtime.Serialization.ISerializable
Herança
WindowsIdentity
Herança
WindowsIdentity
Atributos
Implementações

Exemplos

O exemplo a seguir mostra o uso de membros da WindowsIdentity classe . Para obter um exemplo mostrando como obter um token de conta do Windows por meio de uma chamada para a função Win32 LogonUser não gerenciada e usar esse token para representar outro usuário, consulte a WindowsImpersonationContext classe .

using System;
using System.Security.Principal;

class WindowsIdentityMembers
{
    [STAThread]
    static void Main(string[] args)
    {
        // Retrieve the Windows account token for the current user.
        IntPtr logonToken = LogonUser();

        // Constructor implementations.
        IntPtrConstructor(logonToken);
        IntPtrStringConstructor(logonToken);
        IntPtrStringTypeConstructor(logonToken);
        IntPrtStringTypeBoolConstructor(logonToken);

        // Property implementations.
        UseProperties(logonToken);

        // Method implementations.
        GetAnonymousUser();
        ImpersonateIdentity(logonToken);

        Console.WriteLine("This sample completed successfully; " +
            "press Enter to exit.");
        Console.ReadLine();
    }

    // Create a WindowsIdentity object for the user represented by the
    // specified Windows account token.
    private static void IntPtrConstructor(IntPtr logonToken)
    {
        // Construct a WindowsIdentity object using the input account token.
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);

        Console.WriteLine("Created a Windows identity object named " +
            windowsIdentity.Name + ".");
    }

    // Create a WindowsIdentity object for the user represented by the
    // specified account token and authentication type.
    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 + ".");
    }

    // Create a WindowsIdentity object for the user represented by the
    // specified account token, authentication type, and Windows account
    // type.
    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 + ".");
    }

    // Create a WindowsIdentity object for the user represented by the
    // specified account token, authentication type, Windows account type, and
    // Boolean authentication flag.
    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 + ".");
    }
    // Access the properties of a WindowsIdentity object.
    private static void UseProperties(IntPtr logonToken)
    {
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);
        string propertyDescription = "The Windows identity named ";

        // Retrieve the Windows logon name from the Windows identity object.
        propertyDescription += windowsIdentity.Name;

        // Verify that the user account is not considered to be an Anonymous
        // account by the system.
        if (!windowsIdentity.IsAnonymous)
        {
            propertyDescription += " is not an Anonymous account";
        }

        // Verify that the user account has been authenticated by Windows.
        if (windowsIdentity.IsAuthenticated)
        {
            propertyDescription += ", is authenticated";
        }

        // Verify that the user account is considered to be a System account
        // by the system.
        if (windowsIdentity.IsSystem)
        {
            propertyDescription += ", is a System account";
        }
        // Verify that the user account is considered to be a Guest account
        // by the system.
        if (windowsIdentity.IsGuest)
        {
            propertyDescription += ", is a Guest account";
        }

        // Retrieve the authentication type for the 
        String authenticationType = windowsIdentity.AuthenticationType;

        // Append the authenication type to the output message.
        if (authenticationType != null)
        {
            propertyDescription += (" and uses " + authenticationType);
            propertyDescription += (" authentication type.");
        }

        Console.WriteLine(propertyDescription);

        // Display the SID for the owner.
        Console.Write("The SID for the owner is : ");
        SecurityIdentifier si = windowsIdentity.Owner;
        Console.WriteLine(si.ToString());
        // Display the SIDs for the groups the current user belongs to.
        Console.WriteLine("Display the SIDs for the groups the current user belongs to.");
        IdentityReferenceCollection irc = windowsIdentity.Groups;
        foreach (IdentityReference ir in irc)
            Console.WriteLine(ir.Value);
        TokenImpersonationLevel token = windowsIdentity.ImpersonationLevel;
        Console.WriteLine("The impersonation level for the current user is : " + token.ToString());
    }

    // Retrieve the account token from the current WindowsIdentity object
    // instead of calling the unmanaged LogonUser method in the advapi32.dll.
    private static IntPtr LogonUser()
    {
        IntPtr accountToken = WindowsIdentity.GetCurrent().Token;
        Console.WriteLine( "Token number is: " + accountToken.ToString());

        return accountToken;
    }

    // Get the WindowsIdentity object for an Anonymous user.
    private static void GetAnonymousUser()
    {
        // Retrieve a WindowsIdentity object that represents an anonymous
        // Windows user.
        WindowsIdentity windowsIdentity = WindowsIdentity.GetAnonymous();
    }

    // Impersonate a Windows identity.
    private static void ImpersonateIdentity(IntPtr logonToken)
    {
        // Retrieve the Windows identity using the specified token.
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);

        // Create a WindowsImpersonationContext object by impersonating the
        // Windows identity.
        WindowsImpersonationContext impersonationContext =
            windowsIdentity.Impersonate();

        Console.WriteLine("Name of the identity after impersonation: "
            + WindowsIdentity.GetCurrent().Name + ".");
        Console.WriteLine(windowsIdentity.ImpersonationLevel);
        // Stop impersonating the user.
        impersonationContext.Undo();

        // Check the identity name.
        Console.Write("Name of the identity after performing an Undo on the");
        Console.WriteLine(" impersonation: " +
            WindowsIdentity.GetCurrent().Name);
    }
}

Comentários

Chame o GetCurrent método para criar um WindowsIdentity objeto que representa o usuário atual.

Importante

Esse tipo implementa a interface IDisposable. Quando você terminar de usar o tipo, deverá descartá-lo direta ou indiretamente. Para descartar o tipo diretamente, chame o método Dispose dele em um bloco try/catch. Para descartá-lo indiretamente, use um constructo de linguagem como using ( em C#) ou Using (em Visual Basic). Saiba mais na seção "Como usar um objeto que implementa IDisposable" no tópico da interface IDisposable.

Construtores

WindowsIdentity(IntPtr)

Inicializa uma nova instância da classe WindowsIdentity para o usuário representado pelo token de conta do Windows 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(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(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)

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

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(WindowsIdentity)

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

Campos

DefaultIssuer

Identifica o nome do emissor ClaimsIdentity padrão.

DefaultNameClaimType

O tipo de declaração de nome padrão, Name.

(Herdado de ClaimsIdentity)
DefaultRoleClaimType

O tipo de declaração de função padrão, Role.

(Herdado de ClaimsIdentity)

Propriedades

AccessToken

Obtém este SafeAccessTokenHandle para esta instância WindowsIdentity .

Actor

Obtém ou define a identidade da parte que realiza a chamada e que recebeu direitos de delegação.

(Herdado de ClaimsIdentity)
AuthenticationType

Obtém o tipo de autenticação usado para identificar o usuário.

BootstrapContext

Obtém ou define o token usado para criar esta identidade de declarações.

(Herdado de ClaimsIdentity)
Claims

Obtém todas as declarações para o usuário representado por essa identidade do Windows.

CustomSerializationData

Contém quaisquer dados adicionais fornecidos por um tipo derivado. Normalmente definido ao chamar WriteTo(BinaryWriter, Byte[]).

(Herdado de ClaimsIdentity)
DeviceClaims

Obtém declarações que têm a chave de propriedade WindowsDeviceClaim.

Groups

Obtém os grupos aos quais o usuário atual do Windows pertence.

ImpersonationLevel

Obtém o nível de representação do usuário.

IsAnonymous

Obtém um valor que indica se a conta de usuário é identificada como uma conta anônima pelo sistema.

IsAuthenticated

Obtém um valor que indica se o usuário foi autenticado pelo Windows.

IsGuest

Obtém um valor que indica se a conta de usuário é identificada como uma conta Guest pelo sistema.

IsSystem

Obtém um valor que indica se a conta de usuário é identificada como uma conta System pelo sistema.

Label

Obtém ou define o rótulo para essa identidade baseada em declarações.

(Herdado de ClaimsIdentity)
Name

Obtém o nome de logon do usuário do Windows.

NameClaimType

Obtém o tipo de declaração que é usado para determinar quais declarações fornecem o valor para a propriedade Name dessa identidade baseada em declarações.

(Herdado de ClaimsIdentity)
Owner

Obtém o SID (identificador de segurança) do proprietário do token.

RoleClaimType

Obtém o tipo de declaração que será interpretado como uma função do .NET entre as declarações nessa identidade de declarações.

(Herdado de ClaimsIdentity)
Token

Obtém o token de conta do Windows para o usuário.

User

Obtém o SID (identificador de segurança) do usuário.

UserClaims

Obtém declarações que têm a chave de propriedade WindowsUserClaim.

Métodos

AddClaim(Claim)

Adiciona uma única declaração a esta identidade baseada em declarações.

(Herdado de ClaimsIdentity)
AddClaims(IEnumerable<Claim>)

Adiciona uma lista de declarações a essa identidade baseada em declarações.

(Herdado de ClaimsIdentity)
Clone()

Cria um novo objeto que é uma cópia da instância atual.

CreateClaim(BinaryReader)

Fornece um ponto de extensibilidade para tipos derivados para criar um Claim personalizado.

(Herdado de ClaimsIdentity)
Dispose()

Libera todos os recursos usados pelo WindowsIdentity.

Dispose(Boolean)

Libera os recursos não gerenciados usados pelo WindowsIdentity e opcionalmente libera os recursos gerenciados.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Finalize()

Libera os recursos mantidos pela instância atual.

FindAll(Predicate<Claim>)

Recupera todas as declarações que correspondem ao predicado especificado.

(Herdado de ClaimsIdentity)
FindAll(String)

Recupera todas as declarações que têm o tipo de declaração especificado.

(Herdado de ClaimsIdentity)
FindFirst(Predicate<Claim>)

Recupera a primeira declaração correspondente ao predicado especificado.

(Herdado de ClaimsIdentity)
FindFirst(String)

Recupera a primeira declaração com o tipo de declaração especificado.

(Herdado de ClaimsIdentity)
GetAnonymous()

Retorna um objeto WindowsIdentity que pode ser usado como um valor de sentinela no código para representar um usuário anônimo. O valor da propriedade não representa a identidade anônima interna usada pelo sistema operacional Windows.

GetCurrent()

Retorna um objeto WindowsIdentity que representa o objeto do Windows atual.

GetCurrent(Boolean)

Retorna um objeto WindowsIdentity que representa a identidade do Windows para o thread ou o processo, dependendo do valor do parâmetro ifImpersonating.

GetCurrent(TokenAccessLevels)

Retorna um objeto WindowsIdentity que representa o usuário atual do Windows, usando o nível de acesso do token desejado especificado.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetObjectData(SerializationInfo, StreamingContext)

Preenche o SerializationInfo com os dados necessários para serializar o objeto de ClaimsIdentity atual.

(Herdado de ClaimsIdentity)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
HasClaim(Predicate<Claim>)

Determina se essa identidade de declarações tem uma declaração que é correspondida pelo predicado especificado.

(Herdado de ClaimsIdentity)
HasClaim(String, String)

Determina se essa identidade de declarações tem uma declaração com o tipo e o valor de declaração especificados.

(Herdado de ClaimsIdentity)
Impersonate()

Representa o usuário representado pelo objeto WindowsIdentity.

Impersonate(IntPtr)

Representa o usuário representado pelo token de usuário especificado.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
RemoveClaim(Claim)

Tenta remover uma declaração da identidade de declarações.

(Herdado de ClaimsIdentity)
RunImpersonated(SafeAccessTokenHandle, Action)

Executa a ação especificada como a identidade do Windows representada. Em vez de usar uma chamada de método representada e executar a função no WindowsImpersonationContext, você pode usar RunImpersonated(SafeAccessTokenHandle, Action) e fornecer a função diretamente como um parâmetro.

RunImpersonated<T>(SafeAccessTokenHandle, Func<T>)

Executa a função especificada como a identidade do Windows representada. Em vez de usar uma chamada de método representada e executar a função no WindowsImpersonationContext, você pode usar RunImpersonated(SafeAccessTokenHandle, Action) e fornecer a função diretamente como um parâmetro.

RunImpersonatedAsync(SafeAccessTokenHandle, Func<Task>)

Executa a ação assíncrona especificada como a identidade do Windows personificada.

RunImpersonatedAsync<T>(SafeAccessTokenHandle, Func<Task<T>>)

Executa a ação assíncrona especificada como a identidade do Windows personificada.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TryRemoveClaim(Claim)

Tenta remover uma declaração da identidade de declarações.

(Herdado de ClaimsIdentity)
WriteTo(BinaryWriter)

Serializa usando um BinaryWriter.

(Herdado de ClaimsIdentity)
WriteTo(BinaryWriter, Byte[])

Serializa usando um BinaryWriter.

(Herdado de ClaimsIdentity)

Implantações explícitas de interface

IDeserializationCallback.OnDeserialization(Object)

Implementa a interface ISerializable e é chamado novamente pelo evento de desserialização quando a desserialização é concluída.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Define o objeto SerializationInfo com as informações lógicas do contexto necessárias para recriar uma instância deste contexto de execução.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0
Windows Desktop 3.0, 3.1, 5