Procedimiento para crear un objeto WindowsPrincipal
Nota
Este artículo se aplica a Windows.
Para más información sobre ASP.NET Core, consulte Seguridad de ASP.NET Core.
Hay dos maneras de crear un objeto WindowsPrincipal, dependiendo de si el código debe realizar la validación basada en rol una sola vez o varias veces.
Si el código debe realizar la validación basada en rol varias veces, el primero de los procedimientos indicados a continuación produce menos sobrecarga. Cuando solo hace falta llevar a cabo una vez validaciones basadas en rol, puede crear un objeto WindowsPrincipal usando el segundo de los procedimientos indicados a continuación.
Para crear un objeto WindowsPrincipal para validar varias veces
Llame al método SetPrincipalPolicy en el objeto AppDomain que devuelve la propiedad AppDomain.CurrentDomain estática, pasando al método un valor de enumeración PrincipalPolicy que indica cuál debe ser la nueva directiva. Los valores admitidos son NoPrincipal, UnauthenticatedPrincipal y WindowsPrincipal. El siguiente código muestra cómo llamar a este método.
AppDomain.CurrentDomain.SetPrincipalPolicy( PrincipalPolicy.WindowsPrincipal);
AppDomain.CurrentDomain.SetPrincipalPolicy( _ PrincipalPolicy.WindowsPrincipal)
Una vez que se haya establecido la directiva, use la propiedad Thread.CurrentPrincipal estática para recuperar la entidad de seguridad que encapsula al usuario de Windows actual. Dado que el tipo de devolución de la propiedad es IPrincipal, debe convertir el resultado en un tipo WindowsPrincipal. El siguiente código inicializa un nuevo objeto WindowsPrincipal en el valor de la entidad de seguridad asociada al subproceso actual.
WindowsPrincipal myPrincipal = (WindowsPrincipal) Thread.CurrentPrincipal;
Dim myPrincipal As WindowsPrincipal = _ CType(Thread.CurrentPrincipal, WindowsPrincipal)
Una vez que se ha creado el objeto de entidad de seguridad, dispone de varios métodos para validarlo.
Para crear un objeto WindowsPrincipal para validar una sola vez
Inicialice un nuevo objeto WindowsIdentity llamando al método WindowsIdentity.GetCurrent estático, que consulta la cuenta de Windows actual y coloca la información sobre esa cuenta en el objeto de identidad recién creado. El siguiente código crea un nuevo objeto WindowsIdentity y lo inicializa en el usuario autenticado actual.
WindowsIdentity myIdentity = WindowsIdentity.GetCurrent();
Dim myIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()
Cree un nuevo objeto WindowsPrincipal y pásele el valor del objeto WindowsIdentity que se creó en el paso anterior.
WindowsPrincipal myPrincipal = new WindowsPrincipal(myIdentity);
Dim myPrincipal As New WindowsPrincipal(myIdentity)
Una vez que se ha creado el objeto de entidad de seguridad, dispone de varios métodos para validarlo.