No tiene mucho que salio el conector de OIM (Oracle Identity Manager) para conectarse con RSA ver. 7.1.
Entre las nuevas características, prevalece que ya no se necesita de un Remote Manager en el servidor de RSA para poder gestionar los comandos de aprovisionamiento, esto gracias a que a partir de la version 7.0 de RSA el esquema fue modificado de cliente-servidor a un esquema basado en servicios Web (bendito sea SOA).
Pues bien a continuación se despliegan los pasos necesarios para la integración, en parte porque la documentación esta incompleta, y en parte porque existen diferentes issues cuando se tiene desplegado el OIM en el Weblogic. Para empezar, un acercamiento a las versiones que se usarán en esta entrada:
- OIM ver. 9.1.0.2 BP 11
- WebLogic 10.3
- Oracle Enterprise Linux ver. 5.4
- RSA Connector: 9.1
- RSA ver. 7.1
- Para empezar es necesario descargar el conector, sin embargo este conector no esta disponible desde la página de Oracle, sino como un parche que se obtiene desde Metalink, el Patch ID es el 9622543.
- Instalar el conector desde el la consola de administración web
- Seguir todos los pasos de la documentación para conectarse, las modificaciones vienen a continuación
- Como parte de los archivos a copiar, es necesario uno denominado wlfullclient.jar, este se genera, instalando el java SDK ver. 1.5 en el servidor de RSA y tecleando los siguientes comandos:
cd RSA_AM_HOME/appserver/weblogic/server/lib/
java -jar ../../../modules/com.bea.core.jarbuilder_1.0.0.0.jar -profile wlfullclient - En general esos son los pasos necesarios para poder realizar la conexion con RSA, sin embargo cuando uno realiza una prueba, o inclusive cuando se comienza con la reconciliación de LookUp’s, salga un error de SSL HandShake a pesar de que el certificado de la CA fue dado de alta exitosamente, el error es:
DEBUG,19 nov 2010 13:26:49,102,[OIMCP.RSAM],oracle.iam.connectors.rsaauthmgr.usermgmt.tasks.RSALookupRecon : init():: STARTED
DEBUG,19 nov 2010 13:26:49,121,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ITResource : ITResource:: STARTED
DEBUG,19 nov 2010 13:26:49,146,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ITResource : ITResource : IT Resource Key :4
DEBUG,19 nov 2010 13:26:49,165,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ITResource : ITResource:: FINISHED
DEBUG,19 nov 2010 13:26:49,182,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : OIMUtil():: STARTED
DEBUG,19 nov 2010 13:26:49,264,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : OIMUtil():: FINISHED
DEBUG,19 nov 2010 13:26:49,266,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap():: STARTED
DEBUG,19 nov 2010 13:26:49,266,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap() : LookUpName : Lookup.RSA.AuthManager.Configuration
DEBUG,19 nov 2010 13:26:49,280,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap():: FINISHED
DEBUG,19 nov 2010 13:26:49,280,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap():: STARTED
DEBUG,19 nov 2010 13:26:49,280,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap() : LookUpName : Lookup.RSA.AuthManager.LookupReconMapping
DEBUG,19 nov 2010 13:26:49,288,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap():: FINISHED
DEBUG,19 nov 2010 13:26:49,288,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap():: STARTED
DEBUG,19 nov 2010 13:26:49,288,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap() : LookUpName : Lookup.RSA.AuthManager.Constants
DEBUG,19 nov 2010 13:26:49,296,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap():: FINISHED
DEBUG,19 nov 2010 13:26:49,296,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap():: STARTED
DEBUG,19 nov 2010 13:26:49,296,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap() : LookUpName : Lookup.RSA.AuthManager.ITResourceMapping
DEBUG,19 nov 2010 13:26:49,303,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getLookUpMap():: FINISHED
DEBUG,19 nov 2010 13:26:49,306,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ScheduledTask : getScheduledTaskDetails():: STARTED
DEBUG,19 nov 2010 13:26:49,315,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ScheduledTask : getScheduleTaskKey():: STARTED
DEBUG,19 nov 2010 13:26:49,322,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ScheduledTask : getScheduleTaskKey():: FINISHED
DEBUG,19 nov 2010 13:26:49,334,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ScheduledTask : getScheduledTaskDetails():: FINISHED
DEBUG,19 nov 2010 13:26:49,336,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ScheduledTask : validateMandatoryTaskAttrs():: STARTED
DEBUG,19 nov 2010 13:26:49,337,[OIMCP.RSAM],oracle.iam.connectors.common.vo.ScheduledTask : validateMandatoryTaskAttrs():: FINISHED
DEBUG,19 nov 2010 13:26:49,338,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getITResourceKey():: STARTED
DEBUG,19 nov 2010 13:26:49,338,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getITResourceKey() : ITResource Name = RSA Server Instance
DEBUG,19 nov 2010 13:26:49,348,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getITResourceKey() : tcresultSet.getRowCount() = 1
DEBUG,19 nov 2010 13:26:49,348,[OIMCP.RSAM],oracle.iam.connectors.common.dao.OIMUtil : getITResourceKey():: FINISHED
DEBUG,19 nov 2010 13:26:50,521,[OIMCP.RSAM],oracle.iam.connectors.rsaauthmgr.common.connection.RSAConnection : createConnection() : CommandTarget initialized...
ERROR,19 nov 2010 13:26:53,222,[OIMCP.RSAM],====================================================
ERROR,19 nov 2010 13:26:53,222,[OIMCP.RSAM],oracle.iam.connectors.rsaauthmgr.common.connection.RSAConnection : createConnection() : javax.net.ssl.SSLException: Received fatal a
lert: bad_record_mac
ERROR,19 nov 2010 13:26:53,222,[OIMCP.RSAM],====================================================ERROR,19 nov 2010 13:26:53,224,[OIMCP.RSAM],================= Start Stack Trace =======================
ERROR,19 nov 2010 13:26:53,224,[OIMCP.RSAM],oracle.iam.connectors.rsaauthmgr.common.connection.RSAConnection : createConnection()
ERROR,19 nov 2010 13:26:53,224,[OIMCP.RSAM],javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
ERROR,19 nov 2010 13:26:53,224,[OIMCP.RSAM],Description : javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
ERROR,19 nov 2010 13:26:53,224,[OIMCP.RSAM],com.rsa.common.SystemException: javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
at com.rsa.webservice.SOAPCommandTarget.remoteMethod
(SOAPCommandTarget.java:198)
at com.rsa.webservice.SOAPCommandTarget.executeCommand
(SOAPCommandTarget.java:136)
at com.rsa.command.TargetableCommand.execute
(TargetableCommand.java:237)
at com.rsa.authn.LoginCommand.execute
(LoginCommand.java:591)
at com.rsa.command.ConnectionFactory$AuthenticatedTarget.login
(ConnectionFactory.java:641)
at com.rsa.command.ConnectionFactory$ConnectionImpl.connect
(ConnectionFactory.java:827)
at com.rsa.command.ConnectionFactory$ConnectionImpl.connect
(ConnectionFactory.java:809)
at oracle.iam.connectors.rsaauthmgr.common.connection.RSAConnection.createConnection
(Unknown Source)
at oracle.iam.connectors.rsaauthmgr.usermgmt.tasks.RSALookupRecon.execute
(Unknown Source)
at com.thortech.xl.scheduler.tasks.SchedulerBaseTask.run
(Unknown Source)
at com.thortech.xl.scheduler.core.quartz.QuartzWrapper$TaskExecutionAction.run
(Unknown Source)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs
(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs
(Unknown Source)
at weblogic.security.Security.runAs
(Security.java:41)
at Thor.API.Security.LoginHandler.weblogicLoginSession.runAs
(Unknown Source)
at com.thortech.xl.scheduler.core.quartz.QuartzWrapper.execute
(Unknown Source)
at org.quartz.core.JobRunShell.run
(JobRunShell.java:178)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run
(SimpleThreadPool.java:477)
Caused by: javax.net.ssl.SSLException: Received fatal alert: bad_record_mac
at sun.reflect.NativeConstructorAccessorImpl.newInstance0
(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance
(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance
(Constructor.java:513)
at com.rsa.webservice.SOAPCommandTarget.remoteMethod
(SOAPCommandTarget.java:182)
... 17 moreERROR,19 nov 2010 13:26:53,224,[OIMCP.RSAM],================= End Stack Trace =======================
- Para habilitar el debug de SSL y ver con mas detalle el error es necesario incluir la siguiente linea en el arranque del servidor que gestiona el nodo del OIM: -Djavax.net.debug=ssl
- El error se da puesto que el servidor de RSA reinicializa la conexión. Para solucionarlo debemos recordar un par de conceptos referentes a la JSSE y que tienen que ver con el apego al RFC-5746.
- La solución consiste en establecer el modo de comunicación del WebLogic hacia Legacy, para ello se deben settear los siguientes parametros en el arranque de WebLogic:
-Dhttps.protocols=SSLv3,TLSv1
-Dsun.security.ssl.allowLegacyHelloMessages=true
-Dsun.security.ssl.allowUnsafeRenegotiation=true
- La desventaja de esta solución es que la comunicación entre ambos servidores es propensa a un ataque de MITM, pero de momento es la solución al error de bad_record_mac
- Finalmente solo es necesario reiniciar el servidor donde esta deployado el OIM
La solución de JSSE, es extensible hacia cualquier comunicación entre servidores que reinicialice las conexiones SSLv3 o TLSv1.
Dudas y/o comentarios son bienvenidos.
Happy Hacking!
—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio <mschejtman@nekasys.com>
[…] Actualizados : Integrando OIM ver 9.1.0.2 BP 11 con RSA 7.1 Instalando Oracle WebPass en OEL 5.4 + Apache […]