Establecer principales y directiva de seguridad basada en funciones

La seguridad basada en funciones permite a un componente identificar los usuarios actuales y sus funciones asociadas en tiempo de ejecución. Después, esta información se asigna mediante una directiva de seguridad de acceso del código para determinar el conjunto de permisos que se concede en tiempo de ejecución. Para un dominio de aplicación dado, el host puede cambiar la directiva de seguridad predeterminada basada en funciones y establecer una entidad de seguridad predeterminada. Una entidad de seguridad representa un usuario y las funciones asociadas al mismo.

Normalmente, la seguridad basada en funciones se utiliza para implementar esquemas de autenticación personalizados. Por ejemplo, el host ASP.NET utiliza la seguridad basada en funciones para implementar un esquema de autenticación basada en la información de usuario que obtiene de Internet Information Services (IIS).

La definición de usuario y de funciones de usuario es específica de cada aplicación. Una aplicación puede tener un concepto de usuario diferente de Windows. Por ejemplo, una aplicación podría preguntar al usuario su nombre de usuario y contraseña al iniciar una sesión de la aplicación. Este nombre de usuario y esta contraseña son independientes del nombre de usuario y contraseña con los que el usuario inició una sesión en Windows.

Configurar explícitamente la entidad de seguridad para un subproceso

Si se ha establecido la entidad de seguridad para un subproceso, se omite la directiva del dominio de aplicación y la entidad de seguridad predeterminada. Por ejemplo, el subproceso podría haber establecido a su propia entidad de seguridad mediante la propiedad estática CurrentPrincipal (propiedadShared en Visual Basic) de la clase Thread. Alternativamente, el subproceso podría haber adquirido su entidad de seguridad del subproceso que lo inició.

NotaNota

En la versión 2.0 de .NET Framework, cuando un subproceso inicia otro o pone en cola un elemento de trabajo para que lo ejecute el grupo de subprocesos, el contexto del subproceso (incluida la entidad de seguridad) fluye automáticamente al subproceso secundario o al subproceso del grupo de subprocesos.En las versiones 1.0 y 1.1 de .NET Framework, el contexto fluye sólo a los subprocesos iniciados por un subproceso, no a los subprocesos del grupo de subprocesos.

Si un subproceso que no tiene una entidad de seguridad realiza una acción que requiere una entidad de seguridad, se proporciona uno basado en la directiva de seguridad del dominio de aplicación actual y en la entidad de seguridad predeterminada.

NotaNota

Cuando un subproceso que no tiene una entidad de seguridad utiliza la propiedad estática CurrentPrincipal para consultar a su entidad de seguridad, los valores predeterminados del dominio de aplicación se utilizan para establecer la entidad de seguridad.Es decir, CurrentPrincipal nunca devuelve null.

Directiva y entidad de seguridad predeterminada para un dominio de aplicación

Un host puede establecer una entidad de seguridad predeterminada para un dominio de aplicación llamando al método SetThreadPrincipal. Si se ha proporcionado una entidad de seguridad predeterminada, se asigna a cualquier subproceso que se ejecute en el dominio de aplicación, requiera una entidad de seguridad y aún no la tenga.

NotaNota

La entidad de seguridad predeterminada no se aplica automáticamente al subproceso que llama SetThreadPrincipal, aunque ese subproceso no tenga una entidad de seguridad.Si el subproceso posterior requiere una entidad de seguridad y no ha adquirido uno mientras tanto, se asigna una entidad de seguridad según la entidad de seguridad predeterminada y la directiva del dominio de aplicación en el que se está ejecutando en ese momento.

Si no se ha establecido una entidad de seguridad predeterminada para el dominio de aplicación, se asigna uno al subproceso según la directiva para el dominio de aplicación. De forma predeterminada, la directiva de un dominio de aplicación es asignar una entidad de seguridad genérica no autenticada al subproceso. Un host puede cambiar esta directiva para un dominio de aplicación llamando al método SetPrincipalPolicy. Por ejemplo, el código administrado siguiente crea un dominio de aplicación y establece su directiva para utilizar la entidad de seguridad de Windows actual.

Dim ad As AppDomain = AppDomain.CreateDomain("Child")
ad.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
AppDomain ad = AppDomain.CreateDomain("Child");
ad.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
AppDomain^ ad = AppDomain::CreateDomain("Child");
ad->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);

Un host no administrado puede obtener acceso a los dominios de aplicación mediante la interfaz _AppDomain, que conserva el orden vtable entre versiones de .NET Framework.

Vea también

Referencia

System.AppDomain

Conceptos

Información general de hospedaje

Seguridad basada en roles

Otros recursos

Conceptos clave de seguridad