Secure > Authorization > Customize default access control policies > Define access control policy elements using XML


Protect resources

You can add resource-level access control to controller or task commands. Resource-level checking is done at WebSphere Commerce runtime, based on data returned by the getResources() method of a command. Resource-level checking can also be done during the performExcecute() portion of the command by making direct calls to the access control policy manager using the method void checkIsAllowed(Object resource, String action) throws ECException. This method will throw the ECApplicationException if the current user is not allowed to perform the specified action on the specified resource.

By default, the getResources() method returns null, and no resource-level checking is done.

You need to create a resource-level policy for new commands in the following instances:

The following is an example of a resource-level policy:

<Policy
Name="ContractMangersForOrgExecuteContractManageCommandsOnContractResource"
                OwnerID="RootOrganization"
                UserGroup="ContractManagersForOrg"
                ActionGroupName="ContractManage"
                ResourceGroupName="ContractDataResourceGroup"
                PolicyType="groupableTemplate">
</Policy>

Where:

Name

The name of the policy.

PolicyType

The policy type. This is a groupable template policy and will dynamically apply to the organizational entity that owns the resource and it's ancestors.

OwnerID

The member that owns the policy.

UserGroup

The policy applies to users of this group. The naming convention for access groups where roles are dynamically scoped to the organization that owns the resource, is to append ForOrg to the group name

ActionGroupName

The name of the action group that contains the actions to be performed on the resource.

ResourceGroupName

The name of the resource group that contains the resources to be acted upon.

In the preceding example, the action group ContractManage is an action group that contains the set of commands that will act on the ContractDataResourceGroup. The following is an example of the action group that is used in the preceding resource-level policy:

<ActionGroupName="ContractManage" OwnerID="RootOrganization">        
<ActionGroupAction
Name="com.ibm.commerce.contract.commands.ContractCancelCmd"/>        
<ActionGroupAction
Name="com.ibm.commerce.contract.commands.ContractCloseCmd"/>        
<ActionGroupAction
Name="com.ibm.commerce.contract.commands.ContractDeleteCmd"/>
</ActionGroup>

The commands that were previously defined as resources for role-based policies are now defined as actions. The following is a sample definition of an action that is a part of the preceding ContractManage group:

<Action
Name="com.ibm.commerce.contract.commands.ContractCloseCmd"
       
CommandName="com.ibm.commerce.contract.commands.ContractCloseCmd">
</Action>

The value of CommandName should correspond to the interface name of the command that is doing the resource-level check.

Most commands work with enterprise beans. These beans are usually the resources that the resource-level policies are protecting. The following is a sample definition of the resource group that is used in the preceding resource policy:

<ResourceGroup Name="ContractDataResourceGroup"
OwnerId="RootOrganization">        
<ResourceGroupResource
Name="com.ibm.commerce.contract.objects.ContractResourceCategory"/>
</ResourceGroup>

In this example, ContractDataResourceGroup is defined and is composed of one resource. The resource is defined...

<ResourceCategory
Name="com.ibm.commerce.contract.objects.ContractResourceCategory" 
               
ResourceBeanClass="com.ibm.commerce.contract.objects.Contract"
               
<ResourceAction
Name="com.ibm.commerce.contract.commands.ContractCancelCmd"/>                
<ResourceAction
Name="com.ibm.commerce.contract.commands.ContractCloseCmd"/>                
<ResourceAction
Name="com.ibm.commerce.contract.commands.ContractDeleteCmd"/> 
</ResourceCategory>

Where:

Name

A tag used to reference this resource elsewhere in the XML file.

ResourceBeanClass

The class representing the resource to protect. If the resource is an enterprise bean, its remote interface should extend the Protectable interface.

ResourceAction

Specifies the actions that will be operating on this resource. This information is used by the Organization Administration Console when determining which actions are valid with a particular resource.


+

Search Tips   |   Advanced Search