miércoles, 9 de junio de 2010

Consumir desde BPEL un Web Service con seguridad habilitada

Con frecuencia es necesario consumir servicios Web, con seguridad habilitada, desde Oracle BPEL, aquí tienes la manera de realizarlo utilziando JDeveloper:

Lo primero es crear un PartnerLink para comsumir el servicio, esto lo hacemos dando click derecho en el área de trabajo de BPEL o arrastrando el ícono correspondiente desde "BPEL Services" en la "Component Pallete".


En la ventana "Create PartnerLink" damos click sobre el botón "Define Service":


Seleccionamos "Web Service" y damos clic en OK.


En la pagina de configuración introducimos la dirección de WSDL del servicio web y le damos un nombre al mismo. Damos clic en OK.


Ahora hay que agregar una actividad "Invoke" al flujo BPEL para justamente invocar al PartnerLink recién creado. Para hacer esto debemos dar clic sobre la flecha que apunta hacia el PartnerLink y arrastrarla hasta el mismo.

Una vez incluida en el flujo, damos doble clic sobre la actividad "Invoke" para configurarla. Le damos un nombre y generamos las variables de entrada y salida dando clic sobre el signo "+" correspondiente a cada una y aceptando el nombre por defecto.


Ahora es justamente cuando vamos a editar nuestro PartnerLink para incorporarle las características de seguridad:


abrimos el archivo "Composite"


jueves, 3 de junio de 2010

BAM-00404: Authentication Failed

A propósito del Post anterior "Tip: Excepción BAM-00404 Authentication failed. User is marked inactive" hay varios puntos que comentar:
  1. La solución recomendada por la documentación de BAM para el ya mencionado error, es entrar al administrador de BAM (Lo que implica crear un usuario nuevo con privilegios de administrador) y eliminar el usuario inactivo, cerrar la sesión y volver a autenticarse con el usuario recien eliminado. Esto resuelve el problema de la inactivación.
  2. La solución anterior es parcial, ya que depués de algunos minutos el usuario se vuelve a inactivar, inclusi si estas en una sesión activa en ese momento. Esto es por que BAM checa periodicamente al usuario utilizando la API user/role y no la esta encontrando en el Security Provider en el que JPS/OPSS busca.
  3. La solución correcta para este problema es (que a mi me funcionó) fue desactivar este chequeo periódico por medio del archivo de configuración de BAM. Esto s hace agregando la siguiente etiqueta al archivo.


El archivo de configuración del servidor de BAM se encuentra ubicado en:

\...\ORA_HOME\user_projects\domains\\servers\\tmp\_WL_user\oracle-bam_11.1.1\1o1igs\APP-INF\classes\config\BAMServerConfig.xml

*La versión de BAM que utilizo es la 11.1.1.2.0

Quiero agradecer a Sanjay Baldwa (usuario de los oracle forums) por su valiosa inforamción para resolver este problema.


WaLeX