Compartir a través de


WindowsIdentity Constructores

Definición

Inicializa una nueva instancia de la clase WindowsIdentity.

Sobrecargas

WindowsIdentity(IntPtr)

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

WindowsIdentity(WindowsIdentity)

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

WindowsIdentity(String)

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

WindowsIdentity(IntPtr, String)

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

WindowsIdentity(SerializationInfo, StreamingContext)
Obsoletos.

Inicializa una nueva instancia de la clase WindowsIdentity para el usuario representado mediante la información incluida en un flujo SerializationInfo.

WindowsIdentity(String, String)

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

WindowsIdentity(IntPtr, String, WindowsAccountType)

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

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

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

WindowsIdentity(IntPtr)

Inicializa una nueva instancia de la clase WindowsIdentity para el usuario representado mediante 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 del usuario en cuyo nombre se ejecuta el código.

Excepciones

userToken es 0.

O bien

userToken está duplicado y no es válido para la suplantación.

El autor de llamada no dispone de los permisos requeridos.

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 de la API LogonUser de Windows. userToken Publique siempre mediante una llamada a la función de la API CloseHandle de Windows. Para obtener más información sobre cómo llamar a código no administrado, consulte Consumo de funciones DLL no administradas.

Se aplica a

WindowsIdentity(WindowsIdentity)

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

Objeto a partir del cual se construye la nueva instancia de WindowsIdentity.

Se aplica a

WindowsIdentity(String)

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

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 del usuario en cuyo nombre se ejecuta el código.

Excepciones

Windows ha devuelto el código de estado de Windows NT STATUS_ACCESS_DENIED.

No hay suficiente memoria disponible.

El autor de llamada no dispone de los permisos requeridos.

O bien

El equipo no se adjunta a un dominio Windows 2003 o dominio posterior.

O bien

El equipo no está ejecutando Windows 2003 o posterior.

O bien

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

Comentarios

Un UPN tiene el formatonombre de dominio de nombre de usuario@.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 de la 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á pensado 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 clase WindowsIdentity para el usuario representado mediante el token de cuenta de Windows y el tipo de autenticación que se hayan 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 del usuario en cuyo nombre se ejecuta el código.

type
String

El tipo de autenticación utilizado para identificar al usuario (uso meramente informativo).

Excepciones

userToken es 0.

O bien

userToken está duplicado y no es válido para la suplantación.

El autor de llamada no dispone de los permisos requeridos.

O bien

Error de Win32.

Ejemplos

En el código siguiente se 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 es parte de un ejemplo más grande proporcionado para la clase 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

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 NegotiateAuthenticationType en en Windows Vista y versiones posteriores del sistema operativo Windows y 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 de la API LogonUser de Windows. userToken Publique siempre mediante una llamada a la función de la API CloseHandle de Windows. Para obtener más información sobre cómo llamar a código no administrado, consulte 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 clase WindowsIdentity para el usuario representado mediante la información incluida en un flujo 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

Objeto que contiene la información sobre la cuenta del usuario.

context
StreamingContext

Objeto que indica las características del flujo.

Atributos

Excepciones

WindowsIdentity no se puede serializar entre los procesos.

El autor de llamada no dispone de los permisos requeridos.

O bien

Error de Win32.

Comentarios

Importante

Llamar a este método con datos que no son de confianza supone 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 clase WindowsIdentity para el usuario representado por el nombre principal de usuario (UPN) y el tipo de autenticación que se hayan 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 del usuario en cuyo nombre se ejecuta el código.

type
String

El tipo de autenticación utilizado para identificar al usuario (uso meramente informativo).

Excepciones

Windows ha devuelto el código de estado de Windows NT STATUS_ACCESS_DENIED.

No hay suficiente memoria disponible.

El autor de llamada no dispone de los permisos requeridos.

O bien

El equipo no se adjunta a un dominio Windows 2003 o dominio posterior.

O bien

El equipo no está ejecutando Windows 2003 o posterior.

O bien

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

Comentarios

El valor del type parámetro se usa para establecer el AuthenticationType parámetro . Si type es null, el sistema de seguridad establece NegotiateAuthenticationType en en Windows Vista y versiones posteriores del sistema operativo Windows y 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 de la 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á pensado 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 clase WindowsIdentity para el usuario representado mediante el token de cuenta de Windows, el tipo de autenticación y el tipo de cuenta de Windows que se hayan 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 del usuario en cuyo nombre se ejecuta el código.

type
String

El tipo de autenticación utilizado para identificar al usuario (uso meramente informativo).

acctType
WindowsAccountType

Uno de los valores de enumeración.

Excepciones

userToken es 0.

O bien

userToken está duplicado y no es válido para la suplantación.

El autor de llamada no dispone de los permisos requeridos.

O bien

Error de Win32.

Ejemplos

En el código siguiente se 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 es parte de un ejemplo más grande proporcionado para la clase 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

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 NegotiateAuthenticationType en en Windows Vista y versiones posteriores del sistema operativo Windows y 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 de la API LogonUser de Windows. userToken Publique siempre mediante una llamada a la función de la API CloseHandle de Windows. Para obtener más información sobre cómo llamar a código no administrado, consulte Consumo de funciones DLL no administradas.

Se aplica a

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Inicializa una nueva instancia de la clase WindowsIdentity para el usuario representado mediante el token de cuenta de Windows, el tipo de autenticación, el tipo de cuenta de Windows y el estado de autenticación que se hayan 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 del usuario en cuyo nombre se ejecuta el código.

type
String

El tipo de autenticación utilizado para identificar al usuario (uso meramente informativo).

acctType
WindowsAccountType

Uno de los valores de enumeración.

isAuthenticated
Boolean

true para indicar que el usuario está autenticado; en caso contrario, false.

Excepciones

userToken es 0.

O bien

userToken está duplicado y no es válido para la suplantación.

El autor de llamada no dispone de los permisos requeridos.

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 es parte de un ejemplo más grande proporcionado para la clase 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

Comentarios

El valor del type parámetro se usa para establecer el AuthenticationType parámetro . Si type es null, el sistema de seguridad establece NegotiateAuthenticationType en en Windows Vista y versiones posteriores del sistema operativo Windows y 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 de la API LogonUser de Windows. userToken Publique siempre mediante una llamada a la función de la API CloseHandle de Windows. Para obtener más información sobre cómo llamar a código no administrado, consulte Consumo de funciones DLL no administradas.

Se aplica a