1.6 Adding Policy Extensions

If Access Manager does not supply the action, the data type, or the condition that you need for a policy, you can add a customized policy extension. For example, suppose you need a policy that permits access based on whether a user has a specific role which is assigned to users in an Oracle database. The custom extension could read the role assignments of the user from the Oracle database and return a string containing the role names. This data could then be used to determine access rights to Access Manager resources. For information on how to create a policy extension, see the Novell Access Manager Developer Kit.

After a policy extension has been created, you need to perform the following tasks to use the extension:

After you have configured the extension, you can perform the following tasks:

1.6.1 Installing the Extension on the Administration Console

The policy extension can be delivered as either a .jar file or a .zip file.

Uploading and Configuring a JAR File

To install an extension, you need to have access to the .jar file and know the following information about the extension or extensions contained within the file.

What you need to create

  • A display name for the extension.

  • A description for the extension.

What you need to know

  • The policy type of the extension, which defines the policy type it can be used with. You should know whether it is an extension for an Access Gateway Authorization policy, an Access Gateway Identity Injection policy, or an Identity Server Role policy.

  • The name of the Java class that is used by the extension. Each data type usually uses a different Java factory class.

  • The filename of the extension.

  • The names, IDs, and mapping type of any configuration parameters. Configuration parameters allow the policy engine to pass data to the extension, which the extension can then use to retrieve data or to evaluate a condition.

  • The type of data the extension manipulates.

 

Authorization Policy: Can be used to return the following:

  • An action of deny, permit, or obligation.

  • A condition that the extension evaluates and returns either true or false.

  • A data element that the extension retrieves and the policy can use for evaluating a condition.

Identity Injection Policy: A data extension that retrieves data for injecting into a header.

Identity Role Policy: Can be used to return the following:

  • A condition that the extension evaluates and returns either true or false.

  • A data element that the extension retrieves which can be used in evaluating a condition or used to assign roles.

If the file contains more than one extension, you need to create a configuration for each extension in the file.

  1. Copy the .jar file to a location that you can browse to from the Administration Console.

  2. In the Administration Console, click Policies > Extensions.

  3. To upload the file, click Upload > Browse, select the file, then click Open.

  4. (Conditional) If you want this .jar file to overwrite an existing version of the file, select Overwrite existing *.jar file.

  5. Click OK.

    The file is uploaded to the Administration Console, but nothing is visible on the Extensions page until you create a configuration.

  6. To create an extension configuration, click New, then fill in the following fields:

    Name: Specify a display name for the extension.

    Description: (Optional) Specify the purpose of the extension and how it should be used.

    Policy Type: From the drop-down list, select the type of extension you have uploaded.

    Type: From the drop-down list, select the data type of the extension.

    Class Name: Specify the name of the class that creates the extension, such as com.acme.policy.action.successActionFactory.

    File Name: From the drop-down list, select the .jar file that contains the Java class that implements the extension and its corresponding factory. This should be the file you uploaded in Step 3.

  7. Click OK.

  8. (Conditional) If the extension requires data from Access Manager, click the name of the extension.

  9. In the Configuration Parameters section, click New, specify a name and ID, then click OK.

    The developer of the extension must supply the name and ID that the extension requires.

  10. In the Mapping column, click the down-arrow, then select the required data type.

    The developer of the extension must supply the data type that is required. If the data type is a data string, then the developer needs to explain the type of information you need to supply in the text field.

  11. (Conditional) If the extension requires more than one data item, repeat Step 9 and Step 10.

  12. Click OK.

    The extension is now available for the policy type it was created for.

  13. (Conditional) If the class can be used for multiple policy types, you need to create an extension configuration for each policy type.

    For example, if an extension can be used for both an Identity Injection policy and a Role policy, you need to create an entry for both. The File Name option should contain the same value, but the other options should contain unique values.

  14. Continue with Section 1.6.2, Distributing a Policy Extension.

Importing a ZIP File

A .zip file with an exported extension contains both the .jar file and the extension configuration.

  1. Copy the .zip file to a location that you can browse to from the Administration Console.

  2. In the Administration Console, click Policies > Extensions.

  3. To upload the file, click Upload > Browse, select the file, then click Open.

  4. (Conditional) If you want the .jar file in the import to overwrite an existing version of the file, select Overwrite existing *.jar file.

  5. Click OK.

    The extension is imported in the Administration Console.

  6. (Conditional) If the extension requires some customizing, click the name of the extension and follow the instructions that came with the extension.

  7. Continue with Section 1.6.2, Distributing a Policy Extension.

1.6.2 Distributing a Policy Extension

To distributed the policy extension to the devices that need it:

  1. Create a policy that uses the extension:

  2. Assign the policy to a device:

    IMPORTANT:Do not update the device at this time. The .jar files must be distributed before you update the device.

  3. Distribute the .jar files:

    1. Click Policies > Extensions.

    2. Select the extension, then click Distribute JARs.

    3. Restart Tomcat on the devices listed for reboot.

      • Linux: Enter the following command:

        /etc/init.d/novell-tomcat5 restart

      • Windows: Enter the following commands:

        net stop Tomcat5 net start Tomcat5

  4. (Conditional) If the extension is for an Authorization policy or an Identity Injection policy, update the Access Gateway.

1.6.3 Managing a Policy Extension Configuration

  1. In the Administration Console, click Policies > Extensions.

  2. To export a policy extension, select the policy, then click Export.

  3. To delete an extension, a policy cannot be using it. Use the Used By column to determine the policies that are using the extension. Modify the listed policies. When the extension is no longer used by any policies, select the extension, then click Delete.

  4. To rename a policy extension, select the extension, click Rename, specify a new name, then click OK. When a policy extension is renamed and the extension is in use by a policy, the policy is updated. This causes the Apply Changes button to be active on the Policy List page.

1.6.4 Viewing Extension Details

You can modify the details of an existing extension and control the information Access Manager provides to the extension when the data is evaluated.

  1. In the Administration Console, click Policies > Extensions.

  2. Click the name of the extension.

    You can view or modify the following details:

    Description: (Optional) Specifies the purpose of the extension and how it should be used.

    Class Name: Specifies the name of the class that creates the extension, for example com.acme.policy.action.successActionFactory.

    File Name: Specifies the .jar file that contains the Java class that implements the extension and its corresponding factory. Select the appropriate file from the drop-down list.

  3. (Conditional) Specify the Condition Parameters required by the extension.

    The documentation for the extension should tell you the number of parameters it requires and the data type of each parameter. You create the name and ID for the parameter, and they need to be unique for the extension.

    • To add a configuration parameter, click New, enter a name (a string) and an ID (a number) for the parameter, then click OK. In the Mapping field, click the down-arrow, then select the data item from the list. The selected data is available whenever the extension class is called to evaluate an action, a condition, or data.

    • To delete a configuration parameter, select the parameter, then click Delete.

  4. Click OK.