Posts etiquetados ‘RSA’

Hace ya algún tiempo, el cliente con el que estábamos realizó su instalación de Service Pack de RSA AM 7.1, en específico instalaron el SP2. Pues bien, inmediatamente comenzó a salir un error, el cual era parte de la API de integración de RSA (el famoso commandClient), a grandes rasgos el error era:

com.rsa.common.UnexpectedDataStoreException: unable to select user from IMS_PRINCIPAL java.sql.SQLException: ORA-00904: "IMS_PRINCIPAL"."EXUID": invalid identifier

Este es un bug de RSA debido a que con el upgrade modifican la tabla IMS_PRINCIPAL lo que provoca el error antes mencionado (pueden validarlo entrando directamente a la base de datos de RSA).
La solución es muy sencilla, consiste en:

  1. Actualizar a un nuevo Service Pack (si mal no recuerdo al día de hoy el último existente es el SP-4)
  2. Debido a la actualización del service pack necesitamos actualizar unos cuantos archivos en el dominio del OIM, esto para que tome los nuevos cambios y no nos marque errores. Los archivos recordemos debemos copiarlos a $DOMAIN_HOME/lib y $WLS_HOME/server/lib:
    am-client.jar am-server.jar ims-client.jar iScreen-ognl-1-1-0rsa-2.jar
    ims-server.jar iScreen-1-1-0rsa-2.jar ims-server-0.jar
  3. Reiniciamos el dominio del OIM

Con esos sencillos pasos tenemos funcional nuestro conector de OIM hacia RSA 7.1 una vez mas.

Dudas, comentarios, sugerencias y/o quejas son siempre bien recibidas!

Happy Hacking!

—–
Entrada generada por:
NataS::: The Lord of Chaos
Marcos Ricardo Schejtman Rubio <mschejtman@nekasys.com>

Anuncios

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
  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.
  2. Instalar el conector desde el la consola de administración web
  3. Seguir todos los pasos de la documentación para conectarse, las modificaciones vienen a continuación
  4. 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
  5. 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 more

    ERROR,19 nov 2010 13:26:53,224,[OIMCP.RSAM],================= End Stack Trace =======================

  6. 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
  7. 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.
  8. 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
  9. 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
  10. 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>