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

Método AppDomain.SetPrincipalPolicy (PrincipalPolicy)

 

Publicado: octubre de 2016

Especifica la forma en que los objetos principales y de identidad deben asociarse a un subproceso si éste intenta enlazarse a un principal mientas se ejecuta en este dominio de aplicación.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

[SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlPrincipal)]
public void SetPrincipalPolicy(
	PrincipalPolicy policy
)

Parámetros

policy
Type: System.Security.Principal.PrincipalPolicy

Uno de los valores de PrincipalPolicy que especifica el tipo del objeto principal que se va a asociar a los subprocesos.

Exception Condition
AppDomainUnloadedException

La operación se intenta en un dominio de aplicación descargado.

Este valor solo serán efectivo si se establece antes de usar el Thread.CurrentPrincipal propiedad. Por ejemplo, si establece Thread.CurrentPrincipal a una entidad de seguridad determinado (por ejemplo, una entidad de seguridad genérica) y, después, use la SetPrincipalPolicy método para establecer el PrincipalPolicy a WindowsPrincipal, la entidad de seguridad actual seguirá siendo la entidad de seguridad genérica.

En el ejemplo siguiente se muestra el efecto en los subprocesos del uso de la SetPrincipalPolicy método para cambiar la directiva principal del dominio de aplicación. También se muestra el efecto de usar el SetThreadPrincipal método para cambiar la entidad de seguridad que está disponible para asociar a los subprocesos en el dominio de aplicación.

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

class ADPrincipal
{
	static void Main(string[] args)
	{
		// Create a new thread with a generic principal.
		Thread t = new Thread(new ThreadStart(PrintPrincipalInformation));
		t.Start();
		t.Join();

		// Set the principal policy to WindowsPrincipal.
		AppDomain currentDomain = AppDomain.CurrentDomain;
		currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

		// The new thread will have a Windows principal representing the
		// current user.
		t = new Thread(new ThreadStart(PrintPrincipalInformation));
		t.Start();
		t.Join();

		// Create a principal to use for new threads.
		IIdentity identity = new GenericIdentity("NewUser");
		IPrincipal principal = new GenericPrincipal(identity, null);
		currentDomain.SetThreadPrincipal(principal);

		// Create a new thread with the principal created above.
		t = new Thread(new ThreadStart(PrintPrincipalInformation));
		t.Start();
		t.Join();

		// Wait for user input before terminating.
		Console.ReadLine();
	}

	static void PrintPrincipalInformation()
	{
		IPrincipal curPrincipal = Thread.CurrentPrincipal;
		if(curPrincipal != null)
		{
			Console.WriteLine("Type: " + curPrincipal.GetType().Name);
			Console.WriteLine("Name: " + curPrincipal.Identity.Name);
			Console.WriteLine("Authenticated: " +
				curPrincipal.Identity.IsAuthenticated);
			Console.WriteLine();
		}
	}
}

SecurityPermission

for ability to manipulate the principal object. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.ControlPrincipal. Security action: F:System.Security.Permissions.SecurityAction.Demand.

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: