Integrating OIM-OIA 11.1.1.5

The steps required to integrate OIM (11g PS1) and OIA (11.1.1.5) on weblogic (10.3.5)
March 22, 2013
OIA-11g

1. Copy .jar files

Copy the following .jar files from
<$OIM_HOME>/designconsole/lib --------> <$OIA_HOME>/WEB-INF/lib

  • xlAPI.jar
  • xlCache.jar
  • xlDataObjectBeans.jar
  • xlDataObjects.jar
  • xlScheduler.jar
  • xlUtils.jar
  • xlVO.jar
  • oimclient.jar
  • iam-platform-utils.jar
Copy the following .jars from
<$OIM_HOME>/server/lib --------> <$OIA_HOME>/WEB-INF/lib
  • xlCrypto.jar
  • wlXLSecurityProviders.jar
  • xlAuthentication.jar
  • xlLogger.jar
Copy the following .jars from
<$WLS_HOME>/server/lib --------> <$OIA_HOME>/WEB-INF/lib
  • wlfullclient.jar


2. Alter configuration file: iam.context.xml

Within <$OIA_HOME>/WEB-INF directory, alter the iam.context.xml file with the following:

On line 21, change the following:

<!--<import resource="oim-commons-context.xml"/>-->

to...

<import resource="oim-commons-context.xml"/>



On line 23, change the following:

<!--<import resource="oim-11g-context.xml"/>-->

to...

<import resource="oim-11g-context.xml"/>


On lines 65-67, change the following:

<!--entry key="oracle">
<ref bean="oimSolution"/>
</entry-->

to...

<entry key="oracle">
<ref bean="oimSolution"/>
</entry>


Save and Exit


3. Alter configuration file: oim-11g-content.xml

To ensure you are using the OIM password encrypted instead of it being plaintext, you will need to alter the <$OIA_HOME>/OIA/WEB-INF/oim-11g-content file.
Note: my deployed WEB-INF is located within a OIA directory, this may differ to yours

On line 25-26 alter the following:

<property name="password" value="${oim.jdbc.password}"/>
<!--<property name="password" value="${oim.jdbc.password.encrypted}"/>-->

to...

<!--<property name="password" value="${oim.jdbc.password}"/<--<
<property name="password" value="${oim.jdbc.password.encrypted}"/<


Save and Exit
(It is worth stopping your application server and restart this after step 6)


4. Determine the OIM database properties

https://technicalconfessions.com/images/postimages/postimages/_24_4_connection_successful_OIM.png

For step 5, you are required to determine the URL, Schema username and the password of the OIM database repository. The I used sqldeveloper to determine the correct jdbc connection is correct (saves coming into issues later). You must ensure the listener is up and running as well as knowing the following information:

Oracle Service Name: How to find out the Oracle service name
OIM Schema Username: Example of the configuration summary


5. Altering the oimjdbc.properties file

You are now required to configure the OIM JDBC information within the oimjdbc.properties file. You are required to know the following:

  • OIM database username (oim.jdbc.username)
  • Password for the OIM database
  • The OIM JDBC URL string (oim.jdbc.url), used in the example above

Locate the <$OIA_HOME>/conf/oimjdbc.properties file and alter the following:

from...

# OIM user credentials
oim.jdbc.username=oimdbuser

# For encrypting the password read the documentation and running of the
# vaau-commons-codec.2.0.jar utility
# uncomment either the oim.jdbc.password.encrypted or oim.jdbc.password

#oim.jdbc.password.encrypted=d83970156ba26d0095865ef757bf7731
#oim.jdbc.password=oimpassword


oim.jdbc.url=jdbc:oracle:thin:@$SERVER_NAME:$PORT:oim
oim.jdbc.driverClassName=oracle.jdbc.OracleDriver

to...

# OIM user credentials
oim.jdbc.username=SBX_OIM

# For encrypting the password read the documentation and running of the
# vaau-commons-codec.2.0.jar utility
# uncomment either the oim.jdbc.password.encrypted or oim.jdbc.password

#oim.jdbc.password.encrypted=d83970156ba26d0095865ef757bf7731
oim.jdbc.password=Password1


oim.jdbc.url=jdbc:oracle:thin:@localhost.localdomain:1521:orcl
oim.jdbc.driverClassName=oracle.jdbc.OracleDriver

Within this example, the oim.jdbc.url , oim.jdbc.username and oim.jdbc.password were altered. The oim.jdbc.password became active (delete the '#' symbol).


6. Running the OIA Property Encryption Utility of OIM

You have already executed the OIA encryption utility when you followed my other awesome post on 'HOW TO: Install OIA 11.1.1.5'. You will need to do this again, though specifically for the OIM password encryption located within the oimjdbc.properties file.

The goal is to automatically remove the oim.jdbc.password string and replace it with an encrypted version (oim.jdbc.password.encrypted).

Firstly, make sure you are within the <$OIA_HOME>/conf directory

Secondly, you will need to execute the following command:

/home/oracle/Oracle/Middleware/jdk160_24/bin/java -jar ../OIA/WEB-INF/lib/vaau-commons-crypt.jar -encryptProperty -cipherKeyProperties ./cipherKey.properties -propertyFile ./oimjdbc.properties -propertyName oim.jdbc.password


It is likely that you'll need to change some of the following:
  • Ensure you're pointing to your deployed JDK java file in order to execute the command
    Replace my path '/home/oracle/Oracle/Middleware/jdk160_24/bin/java' with your path.
  • Alter the '../OIA/WEB-INF/lib/vaau-commons-crypt.jar' string.
    Ensuring it's pointing to your vaau_commons-crypt.jar file.

Assuming you executed this correctly, you will be able to view the alteration within the oimjdbc.properties file.

Within my environment, my oim.jdbc.password.encrypted sting has appeared with a long alphanumeric value (aka the cipher text).


7. OIA GUI Configurations

Restart the OIA and OIM app servers and ensure they are up and running.

The next stage will be to setup the GUI configuration within OIA. This is completed by logging into OIA and going to Administation --> Provisioning Servers --> New Provisioning Server Connection

From the drop down list, select the type of provisioning server connection = Oracle. Click Next.

https://technicalconfessions.com/images/postimages/postimages/_24_8_provisioning_server_conf_OIA.png


Enter in the following:

  • Connection Name= OIM SBX Connection
  • Xellerate Home = The path to your local xellerate folder ( Mine is: /home/oracle/Oracle/Middleware/Oracle_OIA11115/xellerate)
  • Login Config = The path to the authwl.conf file
    ( Mine is: /home/oracle/Oracle/Middleware/Oracle_OIA11115/xellerate/config/authwl.conf)
  • User Name = xelsysadm
  • Password = The xelsysadm password
Note: the Xellerate Home is actually the path to where your conf directory can be located (containing the authwl.conf file), not the home of OIM.

In this example I copied over the conf directory from the <OIM_HOME>/designconsole path into a newly created directory called <OIM_HOME>/xellerate to use as the configuation settings. This is a mandatory effort if OIM and OIA instances are on separate environments.

The next step will be to schedule an import job.
Go to Administation --> Import/Export --> Schedule Job

As this is your first effort, you need to click on
import Users, Accounts, User Role Memberships and Entitlements

Click on the newly created Oracle connection OIM SBX Connection and click next. Click on Load all resources defined in the system at the time the job is run and click Next Call the Job Name Initial imports and click Finish.

https://technicalconfessions.com/images/postimages/postimages/_24_10_new_IDC_job.png

Once you have executed this, you can then go the the Identity Warehouse and determine what has been imported


COMMON ISSUE: xelsysadm, failed to be authenticated

After these steps, you may experience the following error: [Security:090304]Authentication Failed: User xelsysadm javax.security.auth.login.FailedLoginException: [Security:090302]Authentication Failed: User xelsysadm denied.

I double-checked the credentials by logging through the OIM GUI and design console though I was quick to realise this was not a UN/PW issue. It's likely that OIA is unable to locate the xellerate home directory and/or the authwl.conf file (probably because of server hardening, port restrictions, permissions on files etc).

The solution here will be to ensure you copy the config folder located at <OIMDesignConsole_home>/config path and paste it in the Oracle Identity Analytics $RBACX_HOME/xellerate folder.

Next will be to make alterations on the logging.
On line 41 within the /WEB-INF/log4j.properties, alter logging to DEBUG

#RBACx IAM logging log4j.logger.com.vaau.rbacx.iam=DEBUG

Once you've saved the efforts, bounce the application server. for the order to take effect.

Try the same import procedure and then review the OIA logs (rbacx.log) to determine if you can firstly connect to OIM. You are looking for the line ********** Connection successful ********** within the logs to ensure this has connected. Alternatively, you may receive a ERROR [DBIAMSolution] Error connecting to OIM with a more defined detail.

Example Below:

15:34:48,835 DEBUG [OimUtilityFactory] ********** Connecting to OIM Server **********
15:34:49,330 DEBUG [OimUtilityFactory] ********** Connection successful **********

About the author

Daniel is a Technical Manager with over 10 years of consulting expertise in the Identity and Access Management space.
Daniel has built from scratch this blog as well as technicalconfessions.com
Follow Daniel on twitter @nervouswiggles

Comments

Other Posts

AWS-PHP integration - Email not sent. SMTP Error: Could not authenticate.

phpsmtpaws

February 6, 2020
Created by: Daniel Redfern
AS I was migrating my environment into an S3 environment, I wanted to leverage off the SES services that AWS provide, more specifically, to leverage the off the SMTP functionality by sending an email via PHP
Read More...

SOLUTION: no headers files (.h) found in softwareserial - Arduino

Arduino

February 24, 2019
Created by: Daniel Redfern
The WeMos D1 is a ESP8266 WiFi based board is an extension to the current out-of-the-box library that comes with the Arduino installation. Because of this, you need to import in the libraries as well as acknowledging the specific board. This process is highly confusion with a number of different individuals talking about a number of different ways to integrate.
Read More...

NameID element must be present as part of the Subject in the Response message

ShibbolethSAML

August 7, 2018
Created by: Daniel Redfern
NameID element must be present as part of the Subject in the Response message, please enable it in the IDP configuration.
Read More...

HOW TO provision AD group membership from OpenIDM

OpenIDMICFAD-connector

June 15, 2018
Created by: Daniel Redfern
For what I see, there's not too many supportive documentations out there that will demonstrate how provision AD group membership with the ICF connector using OpenIDM. The use of the special ldapGroups attribute is not explained anywhere in the Integrators guides to to the date of this blog. This quick blog identifies the tasks required to provision AD group membership from OpenIDM to AD using the LDAP ICF connector. However this doesn't really explain what ldapGroups actually does and there's no real worked example of how to go from an Assignment to ldapGroups to an assigned group in AD. I wrote up a wiki article for my own reference: AD group memberships automatically to users This is just my view, others may disagree, but I think the implementation experience could be improved with some more documentation and a more detailed example here.
Read More...

ForgeRock OpenIDM - InvalidCredentialException: Remote framework key is invalid

ICFIDMOpenIDMOpenICF

November 8, 2017
Created by: Daniel Redfern
In the past, the similar error occurred though for the Oracle Identity Management solution. invalidcredentialexception remote framework key is invalid Because they all share the ICF connector framework, the error/solution would be the same.
Read More...

org.forgerock.script.exception.ScriptCompilationException: missing ; before statement

IDMsync.confforgerockopenidm

November 8, 2017
Created by: Daniel Redfern
org.forgerock.script.exception.ScriptCompilationException: missing ; before statement
Read More...

ForgeRock IDM - org.forgerock.script.exception.ScriptCompilationException: missing ; before statemen

OpenIDMsync.confForgeRock

September 17, 2017
Created by: Daniel Redfern
ForgeRock IDM - org.forgerock.script.exception.ScriptCompilationException: missing ; before statement
Read More...

Caused by: org.forgerock.json.resource.BadRequestException: Target does not support attribute groups

OpenIDMForgeRockICFConnector

September 17, 2017
Created by: Daniel Redfern
When performing the attempt of a reconciliation from ForgeRock IDM to Active Directory, I would get the following error
Read More...

ForgeRock OpenIDM - InvalidCredentialException: Remote framework key is invalid

OpenIDMForgeRockICFConnectorAD

September 17, 2017
Created by: Daniel Redfern
In the past, the similar error occurred though for the Oracle Identity Management solution. invalidcredentialexception remote framework key is invalid Because they all share the ICF connector framework, the error/solution would be the same.
Read More...

ERROR Caused by com.google.api.client.auth.oauth2.TokenResponseException 400 Bad Request - invalid_g

OpenIDMIDMGoogleGoogle-AppsICFreconciliation

September 12, 2017
Created by: Daniel Redfern
During the reconcilation from OpenIDM to the ICF google apps connector, the following error response would occur. ERROR Caused by com.google.api.client.auth.oauth2.TokenResponseException 400 Bad Request - invalid_grant
Read More...