Interfaz Protectable

Un factor clave para tener un recurso protegido por las políticas de control de acceso de HCL Commerce, es que el recurso debe implementar la interfaz com.ibm.commerce.security.Protectable. Esta interfaz se utiliza normalmente con beans enterprise y beans de datos, pero solo los beans específicos que requieren protección deben implementar la interfaz.

Con la interfaz protegible, un recurso debe proporcionar dos métodos clave: getOwner() y fulfills(Long member, String relationship).

El método getOwner devuelve el memberId del propietario del recurso protegible. El propietario del recurso se utiliza para determinar las políticas que se han de aplicar al recurso. Este propietario puede ser un usuario o una organización. Si el propietario es un usuario, el gestor de políticas de control utilizará la organización padre del usuario como base para determinar las políticas que se han de aplicar. Si la organización propietaria del recurso se suscribe a uno o más grupos de políticas, solamente se aplicarán al recurso las políticas de dichos grupos de políticas. Si el recurso es propiedad de una organización que no se suscribe a ningún grupo de política, el gestor de políticas de control de acceso buscará en la jerarquía de organizaciones hasta que encuentre la organización predecesora más próxima que esté suscrita como mínimo a un grupo de políticas; una vez que la haya encontrado, aplicará las políticas que pertenecen a dichos grupos de políticas.

El método fulfills(Long member, String relationship) solamente devuelve true si el miembro en concreto tiene la relación requerida con el recurso. Normalmente, el miembro es un solo usuario, pero también puede ser una organización. Sería una organización si utiliza un grupo de relaciones en la política de control de acceso.

De forma predeterminada, el método fulfills de un recurso determinado simplemente puede devolver false. Es necesario implementar el método fulfills de modo que no sea trivial cuando haya políticas para el recurso que impliquen una relación distinta a la de "propietario" o cuando haya políticas que impliquen un grupo de relaciones. Para los grupos de relaciones, solamente el último elemento <parameter name="Relationship" value="aValue"/> de cada cadena de relaciones debe manejarse mediante el método del recurso fulfills. El resto de los elementos de parámetro de la cadena de relaciones los maneja internamente el gestor de políticas de control de acceso.