Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Autenticación

La autentificación es el proceso de detectar y comprobar la identidad de una entidad de seguridad examinando las credenciales del usuario y validando esas credenciales contra alguna autoridad. La información obtenida durante la autenticación puede ser utilizada directamente por el código. También se puede usar la seguridad basada en roles de .NET Framework para autenticar al usuario actual y determinar si esa entidad de seguridad puede obtener acceso al código. Vea las sobrecargas del método WindowsPrincipal.IsInRole si desea obtener ejemplos de cómo autenticar la entidad de seguridad para determinados roles. Por ejemplo, puede usar la sobrecarga WindowsPrincipal.IsInRole(String) para determinar si el usuario actual es un miembro del grupo Administradores.

Actualmente se utiliza una gran variedad de mecanismos de autenticación, pudiéndose utilizar muchos de ellos con la seguridad basada en roles de .NET Framework. Algunos de los mecanismos de autenticación que se utilizan más habitualmente son la autenticación básica, implícita, Passport y de sistema operativo (como NTLM o Kerberos), o los mecanismos definidos por la aplicación.

El ejemplo siguiente requiere que la entidad de seguridad activa sea un administrador. El valor del parámetro name es null, lo que permite a cualquier usuario que sea administrador pasar la petición.

Nota Nota

En Windows Vista, el Control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para poder ejecutar código que requiera que el usuario sea un administrador, primero deberá elevar el nivel de sus privilegios de usuario estándar a los de administrador. Podrá hacerlo cuando inicie una aplicación haciendo clic con el botón secundario en el icono de la aplicación e indicando que desea ejecutarla como administrador.


using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{

    public static void Main()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
        principalPerm.Demand();
        Console.WriteLine("Demand succeeded.");
    }
}


En el ejemplo siguiente, se muestra cómo determinar la identidad de la entidad de seguridad y los roles de los que dispone dicha entidad de seguridad. Una aplicación de este ejemplo sería la confirmación de que el usuario actual tiene asignado un rol permitido para usar la aplicación.


using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{
    public static void DemonstrateWindowsBuiltInRoleEnum()
    {
        AppDomain myDomain = Thread.GetDomain();

        myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        WindowsPrincipal myPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
        Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString());
        Array wbirFields = Enum.GetValues(typeof(WindowsBuiltInRole));
        foreach (object roleName in wbirFields)
        {
            try
            {
                // Cast the role name to a RID represented by the WindowsBuildInRole value.
                Console.WriteLine("{0}? {1}.", roleName,
                    myPrincipal.IsInRole((WindowsBuiltInRole)roleName));
                Console.WriteLine("The RID for this role is: " + ((int)roleName).ToString());

            }
            catch (Exception)
            {
                Console.WriteLine("{0}: Could not obtain role for this RID.",
                    roleName);
            }
        }
        // Get the role using the string value of the role.
        Console.WriteLine("{0}? {1}.", "Administrators",
            myPrincipal.IsInRole("BUILTIN\\" + "Administrators"));
        Console.WriteLine("{0}? {1}.", "Users",
            myPrincipal.IsInRole("BUILTIN\\" + "Users"));
        // Get the role using the WindowsBuiltInRole enumeration value.
        Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
           myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
        // Get the role using the WellKnownSidType.
        SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
        Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid  {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));
    }

    public static void Main()
    {
        DemonstrateWindowsBuiltInRoleEnum();
    }
}


Adiciones de comunidad

Mostrar: