PingFederate Server

Shared plugin interfaces

Plugin implementations generally invoke methods categorized as either configurable or describable. This document describes these types of plugins and how they are used in PingFederate.

Configurable plugin

Any custom plugin that requires UI settings is configurable and implements the ConfigurablePlugin interface. This ensures that PingFederate loads the plugin instance with the correct configuration settings.

All plugin types implement the ConfigurablePlugin interface and must define the following within the ConfigurablePlugin interface to enable configuration loading.

void configure(Configuration configuration)

During processing of a configurable plugin instance, PingFederate calls the ConfigurablePlugin.configure() method and passes a Configuration object. The Configuration object provides the plugin adapter instance configuration set by an administrator in the PingFederate UI.

The SpAuthnAdapterExample.java sample provided with the SDK shows how to use this method to initialize an adapter instance from a saved configuration. After your implementation loads the configuration values, the plugin instance can use them in other method calls.

Describable plugin

Any plugin that requires configuration windows in the PingFederate administrative console is a describable plugin. Most plugins implement the DescribablePlugin interface to ensure that PingFederate renders the correct UI components based on the returned PluginDescriptor.

Adapter and custom data source plugins are special cases and do not implement the DescribablePlugin interface. However, they still return a plugin descriptor (AuthnAdapterDescriptor and SourceDescriptor) and are still describable plugins.

All describable plugins must define a UI descriptor. Use one of the following methods to implement a UI descriptor, depending on the type of plugin:

  • For plugins using the DescribablePlugin interface

    PluginDescriptor getPluginDescriptor()
  • For adapter plugins

    AuthnAdapterDescriptor getAdapterDescriptor()
  • For custom data source plugins

    SourceDescriptor getSourceDescriptor()

Describable plugins can return a subclass of PluginDescriptor, so the return type might differ between plugin implementations. Your plugin implementation populates PluginDescriptor with FieldDescriptors, FieldValidators, and Actions and is presented as a set of UI components in the PingFederate administrative console.

Some plugin types offer concrete descriptor implementations for developers. The Javadocs and examples provided with the SDK show which descriptor classes are available for each plugin type. The examples also show you how to use FieldDescriptors, FieldValidators, and Actions to define your plugin descriptor.