WindowsIdentity Constructores

Definición

Inicializa una nueva instancia de la clase WindowsIdentity.

Sobrecargas

Nombre Description
WindowsIdentity(IntPtr)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado.

WindowsIdentity(WindowsIdentity)

Inicializa una nueva instancia de la WindowsIdentity clase mediante el objeto especificado WindowsIdentity .

WindowsIdentity(String)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el nombre principal de usuario (UPN) especificado.

WindowsIdentity(IntPtr, String)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado y el tipo de autenticación especificado.

WindowsIdentity(SerializationInfo, StreamingContext)
Obsoletos.

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por información en una SerializationInfo secuencia.

WindowsIdentity(String, String)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el nombre principal de usuario (UPN) especificado y el tipo de autenticación especificado.

WindowsIdentity(IntPtr, String, WindowsAccountType)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado, el tipo de autenticación especificado y el tipo de cuenta de Windows especificado.

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado, el tipo de autenticación especificado, el tipo de cuenta de Windows especificado y el estado de autenticación especificado.

WindowsIdentity(IntPtr)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de 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

Token de cuenta para el usuario en cuyo nombre se ejecuta el código.

Excepciones

userToken es 0.

O bien

userToken se duplica y no es válido para la suplantación.

El autor de la llamada no tiene los permisos correctos.

O bien

Error de Win32.

Comentarios

En la tabla siguiente se muestran los valores de propiedad iniciales de una instancia de WindowsIdentity.

Propiedad Valor inicial
AuthenticationType Negotiate
WindowsAccountType Normal
IsAuthenticated false

Nota:

Puede recuperar el token representado mediante userToken una llamada a código no administrado, como la función api LogonUser de Windows. Libere userToken siempre mediante una llamada a la función api CloseHandle de Windows. Para obtener más información sobre cómo llamar a código no administrado, vea Consumo de funciones DLL no administradas.

Se aplica a

WindowsIdentity(WindowsIdentity)

Inicializa una nueva instancia de la WindowsIdentity clase mediante el objeto especificado 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)

Parámetros

identity
WindowsIdentity

Objeto desde el que se va a construir la nueva instancia de WindowsIdentity.

Se aplica a

WindowsIdentity(String)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el nombre principal de usuario (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

UpN para el usuario en cuyo nombre se ejecuta el código.

Excepciones

Windows devolvió el código de estado de Windows NT STATUS_ACCESS_DENIED.

No hay memoria suficiente disponible.

El autor de la llamada no tiene los permisos correctos.

O bien

El equipo no está conectado a un dominio de Windows 2003 o posterior.

O bien

El equipo no ejecuta Windows 2003 o posterior.

O bien

El usuario no es miembro del dominio al que está asociado el equipo.

Comentarios

Un UPN tiene el formato username@domainname.com, es decir, una dirección de correo electrónico. El UPN identificado en sUserPrincipalName se usa para recuperar un token para ese usuario a través de la función api LsaLogonUser de Windows. A su vez, ese token se usa para identificar al usuario. Es posible que se devuelva una excepción debido a la incapacidad de iniciar sesión con el UPN proporcionado.

Nota:

Este constructor está diseñado para su uso solo en equipos unidos a dominios de Windows Server 2003 o posteriores. Se produce una excepción para los tipos de dominio anteriores. Esta restricción se debe al hecho de que este constructor usa la estructura KERB_S4U_LOGON, que se introdujo por primera vez en Windows Server 2003. Además, este constructor requiere acceso de lectura al atributo token-groups-global-and-universal (TGGAU) en la cuenta de usuario de destino.

Se aplica a

WindowsIdentity(IntPtr, String)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado y el tipo de autenticación especificado.

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

Token de cuenta para el usuario en cuyo nombre se ejecuta el código.

type
String

(Solo uso informativo). Tipo de autenticación que se usa para identificar al usuario.

Excepciones

userToken es 0.

O bien

userToken se duplica y no es válido para la suplantación.

El autor de la llamada no tiene los permisos correctos.

O bien

Error de Win32.

Ejemplos

El código siguiente muestra el uso del WindowsIdentity constructor para crear una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado y el tipo de autenticación especificado. Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la WindowsIdentity clase .

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

Comentarios

En la tabla siguiente se muestran los valores de propiedad iniciales de una instancia de WindowsIdentity.

Propiedad Valor inicial
WindowsAccountType Normal
IsAuthenticated false

El valor del type parámetro se usa para establecer el AuthenticationType parámetro . Si type es null, el sistema de seguridad establece AuthenticationType en Negotiate en Windows Vista y versiones posteriores del sistema operativo Windows y en Kerberos en versiones anteriores del sistema operativo Windows. El sistema de seguridad no utiliza este valor; es solo para uso informativo.

Nota:

Puede recuperar el token representado mediante userToken una llamada a código no administrado, como la función api LogonUser de Windows. Libere userToken siempre mediante una llamada a la función api CloseHandle de Windows. Para obtener más información sobre cómo llamar a código no administrado, vea Consumo de funciones DLL no administradas.

Se aplica a

WindowsIdentity(SerializationInfo, StreamingContext)

Precaución

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

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por información en una SerializationInfo secuencia.

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);
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}")>]
new System.Security.Principal.WindowsIdentity : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Security.Principal.WindowsIdentity
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

Objeto que contiene la información de la cuenta para el usuario.

context
StreamingContext

Objeto que indica las características de la secuencia.

Atributos

Excepciones

No WindowsIdentity se puede serializar entre procesos.

El autor de la llamada no tiene los permisos correctos.

O bien

Error de Win32.

Comentarios

Importante

Llamar a este método con datos que no son de confianza es un riesgo de seguridad. Llame a este método solo con datos de confianza. Para obtener más información, vea Validar todas las entradas.

Se aplica a

WindowsIdentity(String, String)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el nombre principal de usuario (UPN) especificado y el tipo de autenticación 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

UpN para el usuario en cuyo nombre se ejecuta el código.

type
String

(Solo uso informativo). Tipo de autenticación que se usa para identificar al usuario.

Excepciones

Windows devolvió el código de estado de Windows NT STATUS_ACCESS_DENIED.

No hay memoria suficiente disponible.

El autor de la llamada no tiene los permisos correctos.

O bien

El equipo no está conectado a un dominio de Windows 2003 o posterior.

O bien

El equipo no ejecuta Windows 2003 o posterior.

O bien

El usuario no es miembro del dominio al que está asociado el equipo.

Comentarios

El valor del type parámetro se usa para establecer el AuthenticationType parámetro . Si type es null, el sistema de seguridad establece AuthenticationType en Negotiate en Windows Vista y versiones posteriores del sistema operativo Windows y en Kerberos en versiones anteriores del sistema operativo Windows. El sistema de seguridad no utiliza este valor; es solo para uso informativo.

El UPN identificado en sUserPrincipalName se usa para recuperar un token para ese usuario a través de la función api LsaLogonUser de Windows. A su vez, ese token se usa para identificar al usuario. Es posible que se devuelva una excepción debido a la incapacidad de iniciar sesión con el UPN proporcionado.

Nota:

Este constructor está diseñado para su uso solo en equipos unidos a dominios de Windows Server 2003 o posteriores. Se produce una excepción para los tipos de dominio anteriores. Esta restricción se debe al hecho de que este constructor usa la estructura KERB_S4U_LOGON, que se introdujo por primera vez en Windows Server 2003. Además, este constructor requiere acceso de lectura al atributo token-groups-global-and-universal (TGGAU) en la cuenta de usuario de destino.

Se aplica a

WindowsIdentity(IntPtr, String, WindowsAccountType)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado, el tipo de autenticación especificado y el tipo de cuenta de Windows especificado.

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

Token de cuenta para el usuario en cuyo nombre se ejecuta el código.

type
String

(Solo uso informativo). Tipo de autenticación que se usa para identificar al usuario.

acctType
WindowsAccountType

Uno de los valores de enumeración.

Excepciones

userToken es 0.

O bien

userToken se duplica y no es válido para la suplantación.

El autor de la llamada no tiene los permisos correctos.

O bien

Error de Win32.

Ejemplos

El código siguiente muestra el uso del WindowsIdentity constructor para crear una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado, el tipo de autenticación especificado y el tipo de cuenta de Windows especificado. Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la WindowsIdentity clase .

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

Comentarios

En la tabla siguiente se muestran los valores de propiedad iniciales de una instancia de WindowsIdentity.

Propiedad Valor inicial
IsAuthenticated false

El valor del type parámetro se usa para establecer el AuthenticationType parámetro . Si type es null, el sistema de seguridad establece AuthenticationType en Negotiate en Windows Vista y versiones posteriores del sistema operativo Windows y en Kerberos en versiones anteriores del sistema operativo Windows. El sistema de seguridad no utiliza este valor; es solo para uso informativo.

Nota:

Puede recuperar el token representado mediante userToken una llamada a código no administrado, como la función api LogonUser de Windows. Libere userToken siempre mediante una llamada a la función api CloseHandle de Windows. Para obtener más información sobre cómo llamar a código no administrado, vea Consumo de funciones DLL no administradas.

Se aplica a

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Inicializa una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado, el tipo de autenticación especificado, el tipo de cuenta de Windows especificado y el estado de autenticación 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

Token de cuenta para el usuario en cuyo nombre se ejecuta el código.

type
String

(Solo uso informativo). Tipo de autenticación que se usa para identificar al usuario.

acctType
WindowsAccountType

Uno de los valores de enumeración.

isAuthenticated
Boolean

true para indicar que el usuario está autenticado; de lo contrario, false.

Excepciones

userToken es 0.

O bien

userToken se duplica y no es válido para la suplantación.

El autor de la llamada no tiene los permisos correctos.

O bien

Error de Win32.

Ejemplos

El código siguiente muestra el uso del WindowsIdentity constructor para crear una nueva instancia de la WindowsIdentity clase para el usuario representado por el token de cuenta de Windows especificado, el tipo de autenticación especificado, el tipo de cuenta de Windows especificado y el estado de autenticación especificado. Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la WindowsIdentity clase .

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

Comentarios

El valor del type parámetro se usa para establecer el AuthenticationType parámetro . Si type es null, el sistema de seguridad establece AuthenticationType en Negotiate en Windows Vista y versiones posteriores del sistema operativo Windows y en Kerberos en versiones anteriores del sistema operativo Windows. El sistema de seguridad no utiliza este valor; es solo para uso informativo.

Puede recuperar el token representado mediante userToken una llamada a código no administrado, como la función api LogonUser de Windows. Libere userToken siempre mediante una llamada a la función api CloseHandle de Windows. Para obtener más información sobre cómo llamar a código no administrado, vea Consumo de funciones DLL no administradas.

Se aplica a