Modificar el control de acceso a nivel de recursos de una política existente

Para los mandatos que requieren control de acceso a nivel de recursos, devuelven los recursos protegidos a los que van a acceder en el método getResources() del mandato. Esto desencadena una comprobación de control de acceso a nivel de recurso mediante la infraestructura de control de acceso de HCL Commerce. HCL Commerce buscará una política de control de acceso en el sistema con un grupo de acciones que incluya la acción que es igual al mandato actual; en este ejemplo es com.ibm.commerce.usermanagement.commands.UserRegistrationAdminAddCmd. El grupo de recursos de la política también debe incluir el recurso devuelto en el método getResources() method. En este caso, el mandato UserRegistrationAdminAddCmd implementa el método getResources() y devuelve la organización en la que se va a registrar el usuario nuevo.

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

De forma predeterminada, en defaultAccessControlPolicies.xml, com.ibm.commerce.usermanagement.commands.UserRegistrationAdminAddCmd ya está definido como una acción:
<Action
Name="com.ibm.commerce.usermanagement.commands.UserRegistrationAdminAddCmd"
       
CommandName="com.ibm.commerce.usermanagement.commands.UserRegistrationAdminAddCmd">
</Action>
También se incluye en un grupo de acciones definido en el archivo XML defaultAccessControlPolicies.xml:

<ActionGroup Name="UserAdminRegistration"
OwnerID="RootOrganization"> 

        <ActionGroupAction
Name="com.ibm.commerce.usermanagement.commands.UserRegistrationAdminAddCmd"/>
</ActionGroup>
Este grupo de acciones ya se ha utilizado en la política de rutina de carga existente, con los siguientes valores:
UserGroup
MembershipAdministratorsForOrg
ActionGroupName
UserAdminRegistration
ResourceGroupName
OrganizationDataResourceGroup
Nota: Muchas políticas son políticas predeterminadas y se cargan en la base de datos durante la creación de la instancia.

Procedimiento

  1. Añada el rol necesario al grupo de acceso que utiliza la política. En este ejemplo, MembershipAdministratorsForOrg.

    Este grupo de acceso se define en WCDE_installdir/xml/policies/xml/ACUserGroups_en_US.xml de la siguiente manera:

    
    <UserGroup Name="
    MembershipAdministratorsForOrg" OwnerID="RootOrganization" 
       Description="Administrators of membership for the organization"
    MemberGroupID="-97">
            
    <UserCondition><![ CDATA [ 
        <profile>
               <orListCondition>
                 <simpleCondition>
                   
    <variable name="role"/>
                   <operator name="="/>
                   <value data="Buyer Administrator"/>
                       <qualifier name="org"
    data="OrgAndAncestorOrgs"/>        
                 </simpleCondition>
                 <simpleCondition>
                   
    <variable name="role"/>
                   <operator name="="/>
                  <value data="Seller Administrator"/>
                       <qualifier name="org"
    data="OrgAndAncestorOrgs"/>        
                 </simpleCondition>
              </orListCondition>
        </profile>
     </UserCondition>
    </UserGroup>
    

    En el ejemplo XML anterior, se incluyen usuarios que tienen como mínimo uno de los roles especificados, Administrador de compradores o Administrador de vendedores para una organización que es predecesora del propietario del recurso (organización) que ha devuelto getResources(). Si quisiera añadir el rol de Director de marketing, tendría que ampliarlo para que incluyese también el nuevo rol.

  2. Copie el archivo XML en el directorio de WCDE_installdir/xml/policies/xml/. El XML resultante podría ser similar al del ejemplo siguiente:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE UserGroups SYSTEM "../dtd/ACUserGroups_en_US.dtd">
    
    <UserGroups>
    
    <UserGroup Name="MembershipAdministratorsForOrg"
    OwnerID="RootOrganization" 
        Description="Administrators of membership for the organization"
    MemberGroupID="-97">
            
                    <UserCondition><![CDATA[
         <profile>
               <orListConditio>
                 <simpleCondition>
                   <variable name="role"/>
                   <operator name="="/>
                   <value data="Buyer Administrator"/>
                       <qualifier name="org" data="
    OrgAndAncestorOrgs"/>         
                 </simpleCondition>
                 <simpleCondition>
                   <variable name="role"/>
                   <operator name="="/>
                   <value data="Seller Administrator"/>
                       <qualifier name="org" data="
    OrgAndAncestorOrgs"/>         
                 </simpleCondition>
                 <simpleCondition>
                   
    <variable name="role"/>
                   <operator name="="/>
                   <value data="Marketing Manager"/>
                       <qualifier name="org"
    data="OrgAndAncestorOrgs"/>        
                 </simpleCondition>
              </orListCondition>
        </profile>
     </UserCondition>
    </UserGroup>
            
    </UserGroups>
    
  3. Cargue el archivo XML en la base de datos mediante el script acpload. Para obtener más información sobre cómo cargar los archivos XML, consulte Cargar archivos XML de política de control de acceso.
  4. En la Consola de administración, actualice el registro de políticas de control de acceso, realizando lo siguiente:
    1. Abra la Consola de administración.
    2. Pulse Configuración > Registro. Aparecerá una lista de componentes de registro.
    3. En la lista de registros, seleccione Access Control Policies.
    4. Pulse Update.