Implementación del control de acceso

Este tema describe cómo implementar el control de acceso en código personalizado. En general, los beans enterprise y los beans de datos son recursos que quizá desee proteger. Sin embargo, no todos los beans enterprise ni beans de datos deben protegerse. Dentro de la aplicación de HCL Commerce existente, los recursos que necesitan protección ya implementan la interfaz protegible. Normalmente, la cuestión de lo que se debe proteger surge cuando se crean beans enterprise y beans de datos nuevos. La decisión sobre qué recursos se han de proteger depende de su aplicación.

Por qué y cuándo se efectúa esta tarea

Si un mandato devuelve un bean enterprise en el método getResources, el bean enterprise debe protegerse porque el gestor de políticas de control de acceso llamará al método getOwner en el bean enterprise. También se llamará al método fulfills si se especifica una relación en la política de control de acceso a nivel de recurso.

Si tuviera que implementar la interfaz Protectable (y por tanto, poner el recurso bajo protección) en todos sus propios beans enterprise y beans de datos, su aplicación podría requerir muchas políticas. Al aumentar el número de políticas, el rendimiento puede disminuir y la gestión de políticas se vuelve más compleja.

Se hace una distinción teórica entre los recursos primarios y los dependientes. Un primary resource puede existir por sí mismo. Un dependent resource solo existe mientras exista su recurso primario relacionado. Por ejemplo, en el código de aplicación HCL Commerce, el bean de entidad Order es un recurso protegible, pero el bean de entidad OrderItem no lo es. El motivo es que la existencia de un OrderItem depende de un Order -- Order es el recurso primario y OrderItem es un recurso dependiente. Si un usuario debe tener acceso a un pedido (Order), también debe tener acceso a los artículos del pedido.

De igual forma, el bean de entidad User (Usuario) es un recurso protegible, pero el bean de entidad Address (Dirección) no lo es. En ese caso, la existencia de la dirección depende del usuario, de manera que todos los que tengan acceso al usuario también deben tener acceso a la dirección.

Deben protegerse los recursos primarios, pero los recursos dependientes a menudo no requieren protección. Si a un usuario se le permite el acceso a un recurso primario, parece lógico que, de forma predeterminada también se le permita acceder a sus recursos dependientes.