Estoy escribiendo un JACC
proveedor.
En el camino, esto significa implementar a PolicyConfiguration
.
El PolicyConfiguration
es responsable de aceptar la información de configuración del servidor de aplicaciones, como qué permisos se acumulan para qué roles. Esto es para que Policy
más adelante pueda tomar decisiones de autorización cuando le entregue información sobre el usuario actual y lo que está tratando de hacer.
Sin embargo, no es parte del PolicyConfiguration
contrato (atroz) del 's mantener un mapeo entre roles y sus permisos, y Principals
que están asignados a esos roles.
Por lo general, siempre, realmente, un servidor de aplicaciones aloja esta asignación. Por ejemplo, en GlassFish, que afectan a este mapeo mediante el suministro de cosas como sun-web.xml
y sun-ejb-jar.xml
y así sucesivamente con los módulos Java EE. (Estos archivos específicos del proveedor son responsables de decir, por ejemplo, si superusers
es un grupo al que se le asignará el rol de aplicación admins
).
Me gustaría reutilizar la funcionalidad que proporcionan estos archivos, y me gustaría hacerlo para la mayor variedad posible de servidores de aplicaciones.
Aquí está, totalmente arbitrariamente, la opinión de IBM sobre el asunto, lo que parece confirmar mi sospecha de que lo que quiero hacer es esencialmente imposible . (Más municiones 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 mapeo de director a rol en, para empezar, Glassfish y JBoss desde dentro de a PolicyConfiguration
? Si hay una forma estándar de hacerlo que desconozco, soy todo oídos.
fuente
Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.
ver docs.oracle.com/cd/E24329_01/web.1211/e24485/…Respuestas:
La respuesta corta es: no hay una forma estándar de hacerlo.
Aunque Glassfish y JBoss admiten asignaciones de director a rol, JACC no asume que todos los contenedores lo hacen, por lo que delega la responsabilidad de mantener esas asignaciones en la implementación del proveedor de JACC. De los documentos (ver:
PolicyConfiguration.addToRole
método ):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
.fuente
PolicyContextHandler
proveedor específicamente registrado para ese propósito, por ejemplo) transmita lo contrario. Otro proveedor también podría ignorar la noción de roles por completo (y, por lo tanto, el proporcionado por el contenedorPolicyConfiguration
), en lugar de operar únicamente en asignaciones de principal a permiso (proporcionadas por la aplicación) (y donde esos permisos no necesitan limitarse a los de JACC).