Sécurité Blueprint et applications OSGi

La sécurité des beans peut être définie de telle sorte que leurs méthodes ne soient accessibles que par les utilisateurs dotés d'un rôle particulier.

Vous configurez la sécurité en définissant un ou plusieurs éléments < access-constraint>, dans l'élément < bean> du bean dont vous souhaitez configurer la sécurité, dans le fichier XML Blueprint de votre application OSGi. Si vous ne définissez pas d'élément < access-constraint>, le bean n'est pas sécurisé ; cela signifie que toutes les méthodes du bean sont accessibles à n'importe quel utilisateur.

Pour que la configuration de la sécurité des beans soit efficace, la sécurité des applications doit être activée dans WebSphere® Application Server.

Vous pouvez configurer la sécurité du bean au niveau du bean ou au niveau des méthodes. Si vous configurez la sécurité au niveau du bean et des méthodes, la configuration de niveau méthode est prioritaire.

L'élément < access-constraint> est défini dans une extension d'espace de nom Blueprint, https://www.ibm.com/appserver/schemas/blueprint/security/v1.0.0. Par conséquent, vous devez spécifier un préfixe d'espace de nom pour cette extension dans l'élément < blueprint>. Dans les exemples ci-dessous, le préfixe "sec" est utilisé ; ce préfixe est défini de la manière suivante :
<blueprint
  xmlns="https://www.osgi.org/xmlns/blueprint/v1.0.0"
  xmlns:sec="https://www.ibm.com/appserver/schemas/blueprint/security/v1.0.0">

Configuration de la sécurité au niveau du bean

Pour configurer la sécurité au niveau du bean, incluez un attribut de rôle dans la définition de l'élément < access-constraint>. Les méthodes du bean ne sont alors accessibles qu'aux utilisateurs dotés de ce rôle.

Dans l'exemple suivant, les méthodes du bean secureBean1 ne sont accessibles qu'aux utilisateurs dotés du rôle "ROLE1" :
<bean
  id="secureBean1"
  class="com.ibm.ws.eba.wab.componenttest.blueprint.secure.BlueprintSecureServiceImpl">
  <sec:access-constraint role="ROLE1" />
</bean>

Configuration de la sécurité au niveau des méthodes

Pour configurer la sécurité au niveau des méthodes, ajoutez, en plus de l'attribut de rôle, un attribut de méthode. La méthode indiquée n'est alors accessible qu'aux utilisateurs dotés du rôle indiqué.

Dans l'exemple suivant, la méthode getPrice du bean secureBean1 n'est accessible qu'aux utilisateurs dotés du rôle ROLE1. Toutes les autres méthodes du bean restent accessibles à tous les utilisateurs.
<bean
  id="secureBean1"
  class="com.ibm.ws.eba.wab.componenttest.blueprint.secure.BlueprintSecureServiceImpl">
  <sec:access-constraint method="getPrice" role="ROLE1" />
</bean>
Dans l'exemple suivant, la méthode getPrice n'est accessible qu'aux utilisateurs dotés du rôle ROLE1, et la méthode printReport n'est accessible qu'aux utilisateurs dotés du rôle ROLE2. Toutes les autres méthodes sont accessibles aux utilisateurs dotés du rôle ROLE3.
<bean
  id="secureBean1"
  class="com.ibm.ws.eba.wab.componenttest.blueprint.secure.BlueprintSecureServiceImpl">
  <sec:access-constraint method="getPrice" role="ROLE1" />
  <sec:access-constraint method="printReport" role="ROLE2" />
  <sec:access-constraint role="ROLE3" />
</bean>

Affectation des rôles

Pour affecter un rôle à des utilisateurs ou à des groupes, utilisez le panneau Mappage rôle de sécurité-utilisateur/groupe de la console d'administration de WebSphere Application Server .