Configuring the Publisher

The IdentityIQ Publisher framework allows users to integrate (outbound only) with any messaging or data storage solution, giving them the freedom to choose their preferred destination for extracted data publishing. This could include using different queue services or other systems like databases, APIs, filesystems, or custom target systems.

Publishers are currently supported in IdentityIQ when referenced by a Data Extract task. When used from a Data Extract task, the publishers are the destination of the task’s extracted objects.

Publisher IdentityIQ Console Extension

The IdentityIQ console supports the new publishers command, which has commands for listing and testing configured IdentityIQ publishers:

Copy
           publishers publish   
             publishes a message Options:
              --publisherName  <publisher_name>
                 the name of PublishersConfiguration entry. 
                  Required.
              --message 
                  <message>
                 message to publish. 
                  Required.
            publishers list
             lists all configured publishers
            publishers help
             displays usage information
            

Publisher Registration

Publisher objects are declared in the PublishersConfiguration Configuration object. You can edit the PublishersConfiguration Configuration object using the Debug/Objects page.

Each entry in the Configuration object represents a publisher available to IdentityIQ. The entry declares the information for IdentityIQ to represent and configure a publisher.

Required Configuration

The publisher configuration entry must at a minimum declare the following:

  • className – The classname declares the path of the Java class which is to be created when calling the publisher.

Additional configuration parameters will vary from publisher to publisher.

Reference Publisher

IdentityIQ includes reference implementations of the following two publisher types:

  • Logging Publisher
  • JMS Publisher

The reference publisher can be loaded by importing examplePublishers.xml.

Custom Publishers

Currently, only JMS and logging are supported for publishing with reference publishers. Some customers may have a need to publish their extracted objects elsewhere.

For example:

  • Writing to REST APIs
  • Filesystem
  • Database
  • Writing to 3rd-party message queue platforms such as Apache Kafka or others do not use JMS APIs.

Customers and partners can develop their own Publisher implementation for these services. The implementation classes and supporting jars can be added to IdentityIQ as another plugin or by adding directly into the IdentityIQ class path.

Implementing a custom publisher

Each publisher implementation must implement the sailpoint.api.Publisher interface, listed below.

Copy
    Package sailpoint.api;

   import java.util.List import java.util.Map;
   import sailpoint.integration.publishers.PublisherConfiguration;
   /**
   * This is a base class for Publisher implementations.
   * Publisher implementation can publish to anything: Ǫueue Services (ActiveMǪ, IBM MǪ, RabbitMǪ, etc.), Database, etc.
   * To IIǪ it's an abstraction that can be used when data needs to be published to an external system.
   */
   public abstract class Publisher implements AutoCloseable {
   /**
   * Publishers are constructed dynamically and must be ensured to have empty constructor
   */
   public Publisher() {
   }

   /**
   * Initializes Publisher
   *
   * @param config configuration this Publisher needs to run with. This is wrapped HashMap with some useful methods
   * @param context SailPointContext
   * @throws Exception if initialization fails
   */
   public abstract void initialize(PublisherConfiguration config, SailPointContext context) throws Exception;
   /**
   * Publishes a message
   *
   * @param message string that needs to be published
   * @param context SailPointContext
   * @throws Exception if publishing fails
   */
   public abstract void publish(String message, SailPointContext context) throws Exception;
   /**
   * Return the list of tags that can be used to find this Publisher among others (for example, based on purpose)
   *
   * @return list of strings (tags)
   */
   public abstract List [String] getTags();
    }
            

An entry must then be added to PublishersConfiguration Configuration object to register a configured instance of their custom Publisher.