Seguridad basada en funciones COM+ y .NET Framework
.NET Framework proporciona mecanismos para integrar código administrador con los servicios de seguridad COM+. Esta funcionalidad depende del token de Windows NT asociado al código de ejecución como base de la identidad.
Seguridad basada en funciones
La seguridad basada en funciones permite definir funciones para una aplicación, de manera que la autorización para la aplicación a nivel de componente, método o interfaz se base en la pertenencia a dichas funciones. Tanto COM+ como .NET Framework permiten definir funciones a nivel de aplicación. Los mecanismos de seguridad basados en funciones de .NET Framework y COM+ son independientes y sólo se pueden usar un mecanismo en una única aplicación.
La seguridad COM+ depende de las cuentas de Windows NT y de la suplantación proceso/subproceso. Si el código administrado proporciona servicios de autenticación, debe obtener un token de seguridad de Windows NT y hacer una suplantación antes de llamar a objetos COM.
Control de acceso a aplicaciones y componentes
COM+ permite habilitar la seguridad a nivel de aplicación o a nivel de clase. La seguridad a nivel de aplicación se establece mediante el atributo ApplicationAccessControlAttribute, como se muestra en el siguiente código de ejemplo.
[assembly: ApplicationAccessControl (AccessChecksLevel=AccessChecksLevelOption. ApplicationComponent)]
Configure la granularidad de una comprobación de acceso para una aplicación mediante la propiedad Application o ApplicationComponent. La primera sólo habilita las comprobaciones de acceso a nivel de aplicación. No se realizan comprobaciones de acceso a nivel de componente, métodos, interfaz ni método. Si el llamador es miembro de al menos una de las funciones definidas en la aplicación, la llamada a cualquier objeto, interfaz o método se realiza correctamente. La segunda habilita las comprobaciones de acceso a todos los niveles. La utilización de ApplicationComponent es mucho más útil, porque indica que las comprobaciones de acceso basado en funciones se aplican a los niveles de componente, interfaz y método.
La utilización de la propiedad ApplicationComponent sólo habilita las comprobaciones de acceso a nivel de componente. Para garantizar realmente que se realizan las comprobaciones de acceso para un componente específico, debe utilizar el atributo ComponentAccessControlAttribute.
La seguridad a nivel de componente se puede habilitar mediante el uso del atributo ComponentAccessControlAttribute. Este atributo se puede aplicar a una clase (como se muestra en el siguiente código de ejemplo), a una interfaz o a un método.
[ComponentAccessControl(true)]
public class CreditAccount : ServicedComponent
{
}
Antes de establecer la seguridad de un componente, debe habilitar la seguridad de la aplicación que aloja al componente. Sólo se producen comprobaciones de acceso si se aplica el atributo ApplicationAccessControlAttribute al ensamblado y se establece el atributo ApplicationAccessControlAttribute en ApplicationComponent.
El nivel al que se habilita el control de seguridad determina cuándo se comprueba la pertenencia del llamador a una función. En la siguiente tabla se describe cómo se comprueba la pertenencia del llamador a una función, según se habilite la seguridad de aplicaciones o la seguridad de componentes.
Seguridad de aplicaciones | Seguridad de componentes | Cuando se comprueba la pertenencia a una función |
---|---|---|
Habilitada |
Deshabilitada |
La pertenencia a una función se comprueba cada vez que el llamador tiene acceso a la aplicación. |
Habilitada |
Habilitada |
La pertenencia a una función se comprueba para cualquier clase en la que se haya habilitado la seguridad a nivel de clase, además de la comprobación de acceso a nivel de aplicación. La configuración a nivel de componentes habilita la seguridad basada en funciones en los niveles de clase, interfaz y método. |
Deshabilitada |
Habilitada/Deshabilitada |
Deshabilita la seguridad para todas las clases de la aplicación. |
Agregar funciones a una aplicación
Puede agregar funciones a una aplicación y asociarlas a componentes mediante el uso del atributo SecurityRoleAttribute, como se muestra en el siguiente código de ejemplo.
[SecurityRole("Teller", Description="Bank teller role")]
public class CreditAccount : ServicedComponent
{
}
Este atributo le habilita para crear y asignar funciones a requisitos de pertenencia para una aplicación, componente, interfaz o método. Si se aplica este atributo a todo un ensamblado, se garantiza que la función exista en el catálogo COM+. Cuando se aplica este atributo a un componente, se garantiza que la función exista en la configuración de la aplicación y se asocia el componente de destino a la función.
Si la propiedad SetEveryoneAccess está establecida en true, se agrega la función Everyone como miembro. El valor predeterminado es false, lo que significa que no hay usuarios asignados a una función. Es necesario configurarlos manualmente.
Las funciones de seguridad se admiten en los niveles de ensamblado, clase, método e interfaz. Al igual que con otros atributos de método, la configuración de seguridad, en la actualidad, no se comparte entre la definición de interfaces y la implementación de métodos.
La clase SecurityCallContext proporciona acceso al contexto de llamadas de seguridad COM+ y se parece, aunque no es idéntico, al objeto SecurityCallContext de Visual Basic. Las nuevas instancias no se crean mediante programación sino que se obtienen a través de la propiedad CurrentCall. Las demás propiedades, descritas en la tabla siguiente, llaman a métodos en el objeto SecurityCallContext.
Propiedad | Comentario |
---|---|
Callers |
Recupera el elemento Callers del objeto SecurityCallContext en COM+ y devuelve el elemento como un objeto SecurityCallers. |
CurrentCall |
Devuelve una referencia a un objeto SecurityCallContext asociado a la llamada actual. |
DirectCaller |
Recupera el elemento DirectCaller del objeto SecurityCallContext en COM+ y devuelve el elemento como objeto SecurityIdentity. |
MinAuthenticationLevel |
Recupera el elemento MinAuthenticationLevel del objeto SecurityCallContext en COM+. |
NumCallers |
Recupera el elemento NumCallers del objeto SecurityCallContext en COM+. |
OriginalCaller |
Recupera el elemento OriginalCaller del objeto SecurityCallContext en COM+ y devuelve el elemento como objeto SecurityIdentity. |
Consulte también
Referencia
SecurityRoleAttribute
System.EnterpriseServices
Conceptos
Resumen de los servicios COM+ disponibles
Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.