security java-ee glassfish authorization jacc

security - ¿Cómo puede un proveedor JACC utilizar las funciones de mapeo Principal-to-role del servidor en el que está implementado?



java-ee glassfish (1)

La respuesta corta es: no hay una forma estándar de hacerlo.

Aunque Glassfish y JBoss admiten asignaciones de principal a rol, JACC no asume que todos los contenedores lo hacen, por lo que delega la responsabilidad de mantener esas asignaciones a la implementación del proveedor de JACC. De los documentos (ver: método PolicyConfiguration.addToRole ):

El trabajo del proveedor de políticas es garantizar que todos los permisos agregados a un rol se otorguen a los principales "asignados al rol".

En otras palabras, debe implementarlo usted mismo dentro de su proveedor JACC para cada contenedor. Para JBoss, por ejemplo, podría usar una de las subclases de AbstractRolesMappingProvider .

Estoy escribiendo un proveedor de JACC .

En el camino, esto significa implementar una PolicyConfiguration política.

PolicyConfiguration es responsable de aceptar información de configuración del servidor de aplicaciones, como qué permisos se acumulan para qué roles. Esto es para que una Policy posterior pueda tomar decisiones de autorización cuando se le entregue información sobre el usuario actual y lo que está tratando de hacer.

Sin embargo, no es parte del contrato (atroz) de PolicyConfiguration mantener un mapeo entre los roles y sus permisos, y los Principals que están asignados a esos roles.

Normalmente, siempre, realmente, un servidor de aplicaciones aloja esta asignación. Por ejemplo, en Glassfish, usted afecta este mapeo suministrando cosas como sun-web.xml y sun-ejb-jar.xml y así sucesivamente con sus módulos Java EE. (Estos archivos específicos del proveedor son los responsables de decir, por ejemplo, superusers es un grupo al que se le asignará la función de aplicación de admins ).

Me gustaría volver a utilizar la funcionalidad que proporcionan estos archivos, y me gustaría hacerlo para la mayor variedad posible de servidores de aplicaciones.

Aquí está, de manera totalmente arbitraria, la opinión de IBM sobre el asunto, que parece confirmar mi sospecha de que lo que quiero hacer es esencialmente imposible . (Más munición para mi caso de que este contrato particular de Java EE no vale el papel en el que está impreso).

Mi pregunta: ¿cómo puedo obtener esta información de principal a role-mapping en - para empezar - Glassfish y JBoss desde una PolicyConfiguration ? Si hay una forma estándar de hacerlo que no conozco, soy todo oídos.