Interface Protectable
Le fait que la ressource doit implémenter l'interface com.ibm.commerce.security.Protectable représente un facteur clé permettant qu'une ressource soit protégée par les stratégies de contrôle d'accès de HCL Commerce. Cette interface est le plus couramment utilisée avec les beans d'entreprise et les beans de données, mais seuls les beans particuliers qui nécessitent une protection doivent implémenter l'interface.
Avec l'interface Protectable, une ressource doit fournir deux méthodes clés : getOwner() et fulfills(Long member, String relationship).
La méthode getOwner renvoie le memberId du propriétaire de la ressource protégeable. Le propriétaire de la ressource est utilisé pour déterminer les stratégies qui s'appliquent à cette ressource. Ce propriétaire peut être un utilisateur ou une organisation. Si le propriétaire s'avère être un utilisateur, le gestionnaire de stratégies de contrôle d'accès utilisera l'organisation mère de cet utilisateur comme base pour déterminer les stratégies à appliquer. Si l'organisation propriétaire de la ressource souscrit à un ou plusieurs groupes de stratégies, seules les stratégies de ces groupes de stratégies s'appliqueront à la ressource. Si la ressource appartient à une organisation qui ne souscrit à aucun groupe de stratégies, le gestionnaire de stratégies de contrôle d'accès fouillera la hiérarchie de l'organisation jusqu'à ce qu'il rencontre l'organisation ancêtre la plus proche qui souscrit à au moins un groupe de stratégies ; après l'avoir trouvée, le gestionnaire de stratégies appliquera les stratégies appartenant à ces groupes de stratégies.
La méthode fulfills(Long member, String relationship) renvoie true uniquement si le membre donné satisfait à la relation requise par rapport à la ressource. En règle générale, le membre est un seul utilisateur, mais il peut également s'agir d'une organisation. Il s'agit d'une organisation si vous utilisez un groupe de relations de la stratégie de contrôle d'accès.
Par défaut, la méthode fulfills d'une ressource particulière peut simplement renvoyer false. Une implémentation non triviale de la méthode fulfills est nécessaire lorsqu'il existe des stratégies pour la ressource qui impliquent une relation autre que "propriétaire" ou lorsque les stratégies impliquent un groupe de relations. Pour les groupes de relations, seul le dernier élément <parameter name="Relationship" value="aValue"/> de chaque chaîne de relations doit être géré par la méthode fulfills de la ressource. Le reste des éléments du paramètre de chaîne de relations est géré en interne par le gestionnaire de stratégies de contrôle d'accès.