domingo, 24 de mayo de 2015

Integracion WCP - BPM: Access Denied (keyName=BPM-CRYPTO)

En los entornos de desarrollo es típico el ejecutar SOA y WebCenter en un mismo dominio de WebLogic.

En este caso en concreto se trata de un entorno con WebCenter Portal 11.1.1.8.7 y Oracle SOA/BPM 11.1.1.7.7. En el que se quiere habilitar Process-Spaces para poder usar los Task Flows de BPM dentro de los portales de WebCenter Portal.
BPM-Process Spaces
  Al habilitar la extensión de BPM Process Spaces para poder usar los Task Flows de BPM e intentar utilizar los Task Flows de BPM te puedes encontrar con la siguiente excepción:

Caused by: java.security.AccessControlException: access denied (oracle.security.jps.service.credstore.CredentialAccessPermission context=SYSTEM,mapName=BPM-CRYPTO,keyName=BPM-CRYPTO read)

A qué es debido esta excepción?.

La instalación de SOA y WebCenter (tanto Portal como Content) traen consigo la siguiente librería compartida: oracle.soa.workflow.wc(11.1.1,11.1.1)

oracle.soa.workflow.wc shared-lib usando WebCenter HOME
Al abrir esta librería compartida en la consola de administración de WebLogic comprobamos que esta cogiendo las librerías de la home de Oracle_WC1 (Home de WebCenter).

Sin embago, en el Policy Store (en este caso en el fichero system-jazn-data.xml dado que es un entorno de desarrollo con policies en fichero, en uno productivo deberia comprobarse mediante WLST o Enterprise Manager Console) encontramos que las policies solamente están aplicadas sobre la la HOME de SOA.


 
  
   file:${soa.oracle.home}/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
  
 
 
  
   oracle.security.jps.JpsPermission
   VerificationService.createInternalWorkflowContext
  
  
   oracle.security.jps.service.policystore.PolicyStoreAccessPermission
   context=APPLICATION, name=*
   getApplicationPolicy
 
 ...

Solución?

La solución se basa en dar los permisos al modulo que corresponda con el despliegue oracle.soa.workflow.wc(11.1.1,11.1.1) en el policy-store. En este caso duplicar las policies asignadas para la home de SOA pero para la home de WC.
Si esta basado en fichero, solamente copiar y pegar el bloque cambiando la variable de la oracle home.

 
  
   file:${wc.oracle.home}/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
  
 
 
  
   oracle.security.jps.JpsPermission
   VerificationService.createInternalWorkflowContext
  
  
   oracle.security.jps.service.policystore.PolicyStoreAccessPermission
   context=APPLICATION, name=*
   getApplicationPolicy
 
 ...

En caso de Policy Store basado en base de datos hacerlo por WLST usando como ejemplo los siguientes scripts:

grantPermission(codeBaseURL="file:/u01/oracle/Middleware/Oracle_WC1/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar", permClass="oracle.security.jps.JpsPermission" ,permTarget="VerificationService.createInternalWorkflowContext" )
grantPermission(codeBaseURL="file:/u01/oracle/Middleware/Oracle_WC1/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar", permClass="oracle.security.jps.service.policystore.PolicyStoreAccessPermission" ,permTarget="context=APPLICATION, name=*" , permActions="getApplicationPolicy")

Para cualquier duda extra consultar el siguiente Document de Oracle My Support relacionado con este problema:
While Deploying A Project, The Application Link Is Not Visible Within BPM Workspace (Doc ID 1583533.1)

1 comentario:

  1. Gracias Dani por compartir los trucos de integración de WC con BPM

    ResponderEliminar