Remote Manager Form Oracle Fusion Middleware Online Documentation Library

Part III Part III Identity Connector Framework This part contains information regarding the Identity Connector Framework and how to use it to create an identity connector. This part contains the following chapters: ■ Chapter 16, Understanding the Identity Connector Framework ■ Chapter 17, Developing Identity Connectors 16 Understanding the Identity Connector Framework 16-1 16 Understanding the Identity Connector Framework Identity connectors are components developed to link Oracle Identity Manager with external stores of applications, directories, and databases. This release of Oracle Identity Manager provides support for developing and building identity connectors by using the Identity Connector Framework ICF. Using the ICF decouples Oracle Identity Manager from the other applications to which it connects. Therefore, you can build and test an identity connector before integrating it with Oracle Identity Manager. This chapter contains conceptual information and sample code in the following sections: ■ Introducing the ICF Architecture ■ Using the ICF API ■ Introducing the ICF SPI ■ Extending an Identity Connector Bundle ■ Using an Identity Connector Server

16.1 Introducing the ICF Architecture

Identity connectors allow Oracle Identity Manager to carry out user provisioning and reconciliation operations on target systems in the enterprise. ICF decouples any calling application, such as Oracle Identity Manager, from the implementation of the connector. ICF also decouples the implementation of the connector from the calling application. The same connector implementation can work with several different calling applications. Figure 16–1 illustrates how this is accomplished by situating the ICF API and SPI between Oracle Identity Manager and the target system. The API implementation always post-processes the results returned by the SPI Search operation. This double-checks the SPI implementation if the connector bundle does not implement all Filter types, or does not implement them properly for all attributes. If the implementation of Search in the SPI returns every object of the specified type, then the API implementation discards every object that does not match the specified Filter. Post-processing in the API implementation is expensive in terms of processing-time and network-bandwidth, and therefore, it is more efficient if each connector-bundle supports every type of filter search predicate or logical operator Note: Earlier releases of Oracle Identity Manager have other options for building identity connectors. These options are still supported, but it is recommended that you build new identity connectors by using the ICF. 16-2 Oracle Fusion Middleware Developers Guide for Oracle Identity Manager that the target application can support natively. See the details for Filter Translator in Common Classes on page 16-18. Figure 16–1 illustrates that the calling application sees only the ICF API. The ICF API dedicates a classloader to each connector bundle, so that the calling application is not exposed to the classes and libraries in the implementation of the connector-bundle SPI. Bundle classloader also ensures isolation between the bundles as well as making any bundled library available to the connector bundle only, thereby avoiding conflicts between dependencies. Figure 16–1 Identity Connector Framework Deployment Figure 16–2 illustrates the backwards compatibility of the ICF. Newer bundles may be deployed without affecting existing ones. In addition, newer versions of the ICF are generally backward-compatible with existing bundles. Figure 16–2 Compatibility Between the ICF and Connector Bundles Identity connectors are stateless by design. An identity connector stores nothing. The calling application supplies to the connector the values for its configuration, including Understanding the Identity Connector Framework 16-3 the information required to connect to the target application. Because identity connectors are stateless, each bundle implementation are kept as simple as possible, and coupling the implementation with that of the calling application is also prevented.

16.2 Using the ICF API

The org.identityconnectors.framework.api package contains the ICF API. Oracle Identity Manager uses the API to call Connector implementations. The API provides a consistent view of any implemented Connector, regardless of the supported operations. The following sections explain these interfaces and classes. ■ The ConnectorInfoManagerFactory Class ■ The ConnectorInfoManager Interface ■ The ConnectorKey Class ■ The ConnectorInfo Interface ■ The APIConfiguration Interface ■ The ConfigurationProperties Interface ■ The ConnectorFacadeFactory Class ■ The ConnectorFacade Interface

16.2.1 The ConnectorInfoManagerFactory Class

The ConnectorInfoManagerFactory class allows Oracle Identity Manager to load Connector classes from a set of bundles. The static getInstance method returns an object of type ConnectorInfoManagerFactory. This object can then be used to get a reference to the ConnectorInfoManager. See Section 16.2.2, The ConnectorInfoManager Interface for more information. Example 16–1 illustrates the ConnectorInfoManagerFactory implementation. Example 16–1 ConnectorInfoManagerFactory Implementation create ConnectorInfoManagerFactory ConnectorInfoManagerFactory cInfoManagerFactory = ConnectorInfoManagerFactory.getInstance;

16.2.2 The ConnectorInfoManager Interface

The ConnectorInfoManager interface maintains a list of ConnectorInfo instances. Each instance describes an identity connector. ConnectorInfoManager can be obtained by calling the getLocalManager method on the ConnectorInfoManagerFactory, and a list of bundle URLs is passed to it. ConnectorInfoManager can also by obtained by calling getRemoteManager method on the ConnectorInfoManagerFactory. The getRemoteManager method accepts an instance of RemoteFrameworkConnectionInfoand, which is used for getting information about connectors deployed on Connector Server. In Example 16–2 , cInfoManagerFactory is the instance of the ConnectorInfoManagerFactory and bundleURL is a list of bundle URLs that may point to directories consisting of JAR-ed or un-JAR-ed bundles. Example 16–2 ConnectorInfoManager Implementation get the ConnectorInfoManager 16-4 Oracle Fusion Middleware Developers Guide for Oracle Identity Manager ConnectorInfoManager cInfoManager = cInfoManagerFactory.getLocalManagerbundleURL;

16.2.3 The ConnectorKey Class

A ConnectorKey uniquely identifies a Connector instance within an installation. The ConnectorKey class takes a bundleName name of the Connector bundle, a bundleVersion version of the Connector bundle and a connectorName name of the Connector bundle as illustrated in Example 16–3 . Example 16–3 ConnectorKey Implementation get the ConnectorKey reference ConnectorKey flatFileConnectorKey = new ConnectorKeybundleName, bundleVersion, connectorName;

16.2.4 The ConnectorInfo Interface

The ConnectorInfo interface contains information about a specific identity connector. It contains the display name, key and message details regarding the particular identity connector. Example 16–4 illustrates how to implement the ConnectorInfo. Example 16–4 ConnectorInfo Implementation get the ConnectorInfo ConnectorInfo info = cInfoManager.findConnectorInfoflatFileConnectorKey; In the example, cInfoManager is the ConnectorInfoManager and flatFileConnectorKey is the identity connector key.

16.2.5 The APIConfiguration Interface

The APIConfiguration interface shows the configuration properties from both the SPI and the API sides. The getConfigurationProperties method returns a ConfigurationProperties instance based on the connector Configuration implementation, initialized to the defaults. Caller can then modify the properties, as required. Example 16–5 illustrates this. Example 16–5 APIConfiguration Definition APIConfiguration apiConfig = info.createDefaultAPIConfiguration;

16.2.6 The ConfigurationProperties Interface

The ConfigurationProperties interface encapsulates the SPI Configuration and uses reflection to identify the individual properties that are available for an application to manipulate. Set all of the identity connectors configuration properties using the setPropertyValue method as defined in Example 16–6 . Example 16–6 setPropertyValue Method Signature public void setPropertyValue java.lang.String name, java.lang.Object value