Implémentation du contrôle d'accès

Les ressources sur lesquelles opèrent les services Web sont généralement des noms représentés par les objets SDO générés. Cette leçon contient une brève présentation du fonctionnement d'une stratégie de contrôle d'accès pour les modules de service BOD.

Pourquoi et quand exécuter cette tâche

Pour les requêtes Get, vous pouvez exécuter l'expression de recherche XPath qui renvoie des données pour un profil d'accès spécifique à l'aide d'une action, d'un groupe d'actions et d'une stratégie. Un profil d'accès est défini par une action :

<Action Name="GetProject.MyCompany_Admin_Summary" CommandName="GetProject.MyCompany_Admin_Summary" />
<Action Name="GetProject.MyCompany_Store_Summary" CommandName="GetProject.MyCompany_Store_Summary" />
Un groupe d'actions contient tous les profils d'accès que le groupe peut utiliser :

<ActionGroup Name="Project-Project-AllUsers-AccessProfileActionGroup"
  OwnerID="RootOrganization">
  <ActionGroupAction Name="GetProject.MyCompany_Store_Summary" />
</ActionGroup>
<ActionGroup
  Name="Project-Project-ProjectManagers-AccessProfileActionGroup"
  OwnerID="RootOrganization">
  <ActionGroupAction Name="GetProject.MyCompany_Admin_Summary" />
</ActionGroup>
Enfin, définissez une stratégie à l'aide du groupe d'actions :

<!--  the all users access profile access control policy -->
<Policy Name="Project-Project-AllUsers-AccessProfilePolicy"
  OwnerID="RootOrganization" UserGroup="AllUsers"
  ActionGroupName="Project-Project-AllUsers-AccessProfileActionGroup"
  ResourceGroupName="AccessProfileResourceGroup"
  PolicyType="groupableStandard" />
<!-- the project manager access profile access policy -->
<Policy Name="Project-Project-ProjectManagers-AccessProfilePolicy"
  OwnerID="RootOrganization" UserGroup="RecipeManagers"
  ActionGroupName="Project-Project-ProjectManagers-AccessProfileActionGroup"
  ResourceGroupName="AccessProfileResourceGroup"
  PolicyType="groupableTemplate" />
Pour afficher les noms renvoyés dans la requête Get, une vérification est effectuée après l'extraction des noms par le filtre de contrôle d'accès.

<!--  all user action group which contains read and change actions -->
<ActionGroup Name="Project-Project-AllUsers-ActionGroup" OwnerID="RootOrganization">
  <ActionGroupAction Name="DisplayResourceAction"/>
  <ActionGroupAction Name="ChangeResourceAction"/>
</ActionGroup> 
Pour les requêtes Change, Sync et Process, vous pouvez effectuer une action sur le nom spécifié en utilisant une action, un groupe d'actions et une stratégie. Un profil d'accès est défini par une action :

<!--  read action (Get request) -->
<Action Name="DisplayResourceAction" CommandName="Display"/>
<!--  change action (Change request) -->
<Action Name="ChangeResourceAction" CommandName="Change"/>
<!--  process actions (Process request) -->
<Action Name="AddResourceAction" CommandName="Add"/>
<Action Name="DeleteResourceAction" CommandName="Delete"/>
<Action Name="CreateResourceAction" CommandName="Create"/>
Un groupe d'actions contient tous les profils d'accès que le groupe peut utiliser :

<!-- all project managers action group process action -->
<ActionGroup Name="Project-Project-ProjectManagers-ActionGroup" OwnerID="RootOrganization">
  <ActionGroupAction Name="AddResourceAction"/>
  <ActionGroupAction Name="DeleteResourceAction"/>
  <ActionGroupAction Name="CreateResourceAction"/>
</ActionGroup>
Enfin, définissez une stratégie à l'aide du groupe d'actions :

<!-- the project manager creator policy -->
<Policy Name="Project-Project-ProjectManagers-CreatorPolicy"
  OwnerID="RootOrganization" UserGroup="RecipeManagers"
  ActionGroupName="Project-Project-ProjectManagers-ActionGroup"
  ResourceGroupName="Project-Project-ResourceGroup"
  RelationName="creator" PolicyType="groupableTemplate" />
Remarque : Pour plus d'informations, voir Contrôle d'accès dans l'infrastructure de commandes BOD.

Procédure

  1. Examinez les concepts de stratégie de contrôle d'accès couverts dans cette leçon.
  2. Cliquez avec le bouton droit de la souris sur HCL Commerce Test Serveur et sélectionnez Publier.
  3. Créez le rôle "Gestionnaire de recette" via la console d'administration de l'organisation.
  4. Ajoutez le rôle Gestionnaire de recette aux organisations suivantes :
    • Organisation de sites étendus
    • Organisation de magasin de ressources (le parent est Organisation de sites étendus)
  5. Chargez la stratégie de contrôle d'accès :
    1. Arrêtez HCL Commerce Test Server.
    2. Accédez au répertoire temporaire dans lequel vous avez extrait le fichier RecipeServices.zip. Copiez tous les fichiers du dossier policies\xml dans le dossier WCDE_installdir\xml\policies\xml\.
    3. Dans une invite de commande, accédez à WCDE_installdir\bin.
    4. Exécutez les commandes suivantes :
      DB2
      acugload    Project-UserGroup.xml 
      acpload WCDE_installdir\xml\policies\xml\Project-access-control.xml 
  6. Importez la classe ProtectableProxy fournie contenant les méthodes d'autorisation :
    1. Dans la vue Explorateur d'entreprise, développez Project-Server > ejbModule. Cliquez avec le bouton droit de la souris sur le module com.mycompany.commerce.project.facade.server.authorization.
    2. Cliquez sur Importer. Développez Généralités et sélectionnez Système de fichiers. Cliquez sur Suivant.
    3. Accédez au répertoire temporaire dans lequel vous avez extrait le fichier RecipeServices.zip. Accédez au dossier com.mycompany.commerce.project.facade.server.authorization.
    4. Sélectionnez tous les fichiers. Cliquez sur Terminer.
    5. Cliquez sur Oui pour tout pour remplacer les fichiers existants.