viernes, 24 de julio de 2015

WSO2 ESB v4.9.0: Un cambio a tener en cuenta.

image 

Revisando una beta snapshot del WSO2 ESB v4.9.0 me he dado cuenta de que desde la consola web ha sido eliminada la funcionalidad de agregarle seguridad a un servicio proxy. Algo que podía realizarse dando par de clic ahora ya no se puede.


image

En su lista de desarrollo aparece el correo siguiente:
=======================================================================
Hi ESB team,
Since Applying QOS is moved completely to developer studio from ESB 4.9.0 release (no UI support in ESB), do we have a way to migrate services that has QOS applied (secured proxy services etc..)?
We can't just copy those artifacts to ESB 4.9.0. I tried but it's not supported (Issue reported at [1]). Is there some workaround or are we going to fix it?
[1] https://wso2.org/jira/browse/ESBJAVA-3909
=======================================================================
Y luego la respuesta que le dan:
=======================================================================
I've used following way to enable security to the proxy service from Dev Studio project. I think this will help you.
1. Create the policy
  1. Create a proxy service from ESB management console. (lets say passthroughProxy)
  2. Apply security (Username token) from management console
  3. Go to the source view of passthroughProxy and you may see something like follows is added to that.
  <parameter name="ScenarioID">scenario1</parameter>
   <enableSec/>
   <policy key="conf:/repository/axis2/service-groups/passthrough/services/passthrough/policies/UTOverTransport"/>
2. Browse the registry from management console to locate the /repository/axis2/service-groups/passthrough/services/passthrough/policies/ and download the UTOverTransport file and rename it as UTOverTransport.xml
3. Create a registry resource from policy
  1. Create a registry resource project from devstudio
  2. Create a registry resource and choose “import from file system” in the wizard and point to the UTOverTransport.xml which we have downloaded in 4.
4. Apply security to your proxy service.
  1. Create a ESB project and proxy service if you don’t have already.
  2. Go to the proxy service properties as in[1] and configure securtyEnable=true and policyKey. When setting policy key you have to point to the registry resource we created in 2.2
  3. Additionally add the following parameter in ServiceParameters section.
property name=allowRoles value= admin
5. Once you configured you will see the source of your proxy config as follows
        <proxy xmlns="http://ws.apache.org/ns/synapse" name="LoopBackProxy" transports="http https" startOnLoad="true" trace="disable">
    <target>
        <inSequence>
            <log level="full"/>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </target>
    <policy key="conf:custom/UTOverTransport.xml"/>
    <parameter name="allowRoles">admin</parameter>
    <enableSec/>
</proxy>
6. Deploy
  1. Create a composite application project
  2. Tick (check) your proxy from ESB project and UTOverTransport from Registry project to include them to the project. When adding use server role as EnterpriseServiceBus for both proxy and policy since we are going to deploy both in ESB
  3. Right click on created composite project and select “Export as Deployable archive”
=======================================================================

Que opinan de este cambio?

6 comentarios:

  1. En mi caso, sí consigo migrar los servicios proxy seguros de la versión 4.8.1 a la 4.9.0 directamente (con Scenario2 - no repudio). El funcionamiento prevalece salvo el tratamiento de los errores. Antes cuando fallaba la validación de la WS-Security de la request, el WSO2 ESB generaba una response Fault y ahora, con la versión nueva, no.
    Opino del cambio, que han quitado una facilidad muy útil y no entiendo bien los motivos, que supongo existirán, aunque los desconozco.

    ResponderEliminar
  2. Hola Isabel. La verdad es que el motivo no queda claro, lo manejaron internamente y en la lista solo se mencionó por arriba. Ponerle la seguridad a un servicio desde la web UI era una de las mejores cosas que se podían hacer. Al parecer nos quieren forzar a usar el IDE de todas todas. Saludos y gracias por pasarte por el blog.

    ResponderEliminar
  3. Buenos días Jorge!

    Cierto es que el cambio es algo drástico. En pruebas iniciales me estoy encontrando con bastantes problemas a la hora de poner en funcionamiento un servicio proxy seguro que ataca a un servicio web inseguro empleando la "policy - UTOverTransport". Este ejemplo sencillo en la versión 4.8.1 es trivial y en la nueva versión aún no he sido capaz de ponerlo en funcionamiento (incluso habiendo seguido las indicaciones comentadas en esta entrada). Me estoy encontrando con el problema de que a nivel de Rampart el usuario autentica bien pero falla en la "autorización" según veo en el log en modo DEBUG.

    [2015-10-06 14:59:14,475] DEBUG - User admin login attempt. Login success :: true {org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager}
    [2015-10-06 14:59:14,475] DEBUG - Authorization cache miss for username : admin resource temperaturalocal/temperaturalocal action : invoke-service {org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager}
    [2015-10-06 14:59:14,475] DEBUG - No roles have permission for resource : temperaturalocal/temperaturalocal action : invoke-service {org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager}
    [2015-10-06 14:59:14,475] DEBUG - admin user is not Authorized to perform invoke-service on temperaturalocal/temperaturalocal {org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager}

    Seguiremos explorando la nueva versión y buscando la solución a problemas que vayan apareciendo...

    Un saludo
    Ramón

    ResponderEliminar
    Respuestas
    1. Buenas Jorge!

      En relación al comentario anterior y tras varias pruebas, añado que con la configuración de base de la versión 4.9.0 de WSO2 ESB no "consigo" que la gestión de "Autorización" en esta versión funcione correctamente. En comparación con la versión 4.8.1, al desplegar un servicio proxy no se generan en base de datos los registros asociados a Autorización en las tablas correspondientes de permisos(donde se especifica la acción "invoke-service") y roles-permisos y tampoco se crean las entradas correspondientes en el registro asociado al ESB. En resumen, algo en principio trivial en la v4.8.1 se ha complicado algo en la v4.9.0... (quizás se deba a falta de experiencia en la herramienta por mi parte en esta nueva versión...)

      Un saludo
      Ramón

      Eliminar
  4. Hola Ramon, probare lo que me dices a ver si damos con una solucion. Te sugiero que lo pongas en stackoverflow a ver si responden desde wso2 por esa via. Saludos.

    ResponderEliminar
  5. Se ha posteado una nueva entrada donde se muestra una manera de asignar la seguridad a un servicio proxy con WSO2 ESB y WSO2 Developer Server, la pueden ver aquí:
    http://desarrollosoa.blogspot.com/2015/11/la-seguridad-en-wso2-esb-490.html

    ResponderEliminar