Sunday, May 31, 2009

HTTPS con Servicios Web

Este artículo se centra en la habilitación de HTTPS sobre un OC4J Standalone, y la utilización de servicios web desplegados en el mismo.  Estos pueden ser consumidos por distintos clientes, incluyendo el Oracle Service Bus.

1. Configurar HTTPS en OC4J

1.1. Crear el Keystore

Un keystore es el almacén donde se guardan los certificados.  A nivel de desarrollo, se puede realizar a través del keytool de SUN:

keytool -genkey -alias oracle-server -dname "CN=Oracle, OU=Blog O=FMW L=LAD, S=CA, C=US" -keyalg RSA -keypass welcome -storepass welcome -keystore server.keystore

Para simplificar la configuración posterior, se puede copiar el archivo server.keystore a la carpeta $ORACLE_HOME/j2ee/home/config

1.2. Configurar el OC4J

En el OC4J se debe crear un web-site con la configuración de seguridad correspondiente, de modo que se pueda tener configurado HTTP y HTTPS en los puertos 8888 y 4443.

1.2.1. Copiar el archivo default-web-site.xml ($ORACLE_HOME/j2ee/home/config/default-web-site.xml) a secure-web-site.xml

1.2.2. Editar el archivo secure-web-site.xml, donde debe quedar como se muestra a continuación:

<web-site   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://xmlns.oracle.com/oracleas/schema/web-site-10_0.xsd"
            port="4443"
            secure="true"
            display-name="OC4J 10g (10.1.3) Default Web Site"
            schema-major-version="10"
            schema-minor-version="0" >
        ...
        <ssl-config keystore="server.keystore" keystore-password="welcome" />
        ...
</web-site>

1.2.3. Importar el secure-web-site.xml en el OC4J, editanto el archivo $ORACLE_HOME/j2ee/home/server.xml en el tag web-site:

    ...   
    <web-site default="true" path="./default-web-site.xml" />
    <web-site path="./secure-web-site.xml" />
    ...

Con esta configuración, las aplicaciones están disponibles vía HTTP y HTTPS (puerto 4443).  Se puede iniciar el OC4J y probar esta nueva configuración.

 

2. Consumir el servicio usando HTTPS

2.1. Generar y configurar un keystore de cliente

De forma similar al keystore del lado server, se crea un keystore para el cliente:

keytool -genkey -alias oracle-client -dname "CN=John Doe, OU=Blog O=DummyClient, S=CA, C=US" -keyalg RSA -keypass welcomeClient -storepass welcomeClient -keystore client.keystore

Luego, se debe exportar el certificado del keystore del servidor:

keytool -keystore server.keystore -export -alias oracle-server -file server.cer

Y por último, se debe importar el certificado en el keystore del cliente:

keytool -keystore client.keystore -import -file server.cer

2.2. Generar el proxy

Es posible utilizar el Oracle Web Service Assembler para generar el proxy, especificando el keystore a utilizar.

java -Djavax.net.ssl.trustStore=/Users/tgrall/ssl/client.keystore
     -Djavax.net.ssl.keyStore=/Users/tgrall/ssl/client.keystore
     -Djavax.net.ssl.trustStorePassword=welcomeClient
     -Djavax.net.ssl.keyStorePassword=welcomeClient
     -jar $ORACLE_HOME/webservices/lib/wsa.jar
     -genProxy
     -wsdl https://127.0.0.1:4443/URL_SERVICIO?WSDL

2.3. Ejecutar el proxy generado.  En el método main de la clase cliente se puede agregar la siguiente configuración para habilitar el uso de seguridad realizada en las propiedades de ambiente:

System.setProperty("javax.net.ssl.trustStore", client.keystore");
   System.setProperty("javax.net.ssl.keyStore", client.keystore");
   System.setProperty("javax.net.ssl.trustStorePassword", "welcomeClient");
   System.setProperty("javax.net.ssl.keyStorePassword", "welcomeClient");

Saturday, May 30, 2009

Accediendo a Tuxedo con Web Services

Tuxedo, plataforma para procesamiento alto de transacciones, puede ser accedido de diferentes formas, incluyendo Web Services.  Sin embargo, existen diferentes componentes a nivel de middleware para interoperar con Tuxedo, los cuales son: SALT (Service Architecture Leveraging Tuxedo), WTC (Weblogic Tuxedo Connector) y OSB (Oracle Service Bus)

SALT permite exponer los servicios Tuxedo como Web Services, para que otros clientes los puedan consumir y a su vez,  invocar Web Services desde Tuxedo.  Es compatible con SOAP 1.1, SOAP 1.2 y WSDL 1.1.

clip_image002

 

Weblogic Tuxedo Connector (WTC) es un componente del servidor de aplicaciones para conectarse a Tuxedo.  Aquí se heredan ciertas características del servidor de aplicaciones para seguridad, transaccionalidad, aunque no existe orquestación de servicios, y es necesario codificar para manejarlos, aunque aplicaciones que se encuentren desplegadas en el Weblogic Server, podrían utilizar este componente para establecer la conexión.

clip_image004

 

Oracle Service Bus (OSB o AquaLogic Service Bus) utiliza Business Service con Tuxedo Transport para conectarse a Tuxedo.  Hereda las características del servidor de aplicaciones más los beneficios que tiene como bus (seguridad, transformación, enriquecimiento, orquestación, escalabilidad, flexibilidad, etc.) permitiendo establecer una arquitectura de integración basada en SOA.

clip_image006

 

Otra alternativa aparte a Web Services es utilizar un API nativo para conectividad con clientes JAVA, conocido como JOLT.  Clientes JAVA, incluidos servidores de aplicaciones pueden utilizar este componente para interactuar con Tuxedo, sin necesidad de Web Services, a través de invocación remota sobre TCP/IP.

image

 

En la siguiente tabla, se aprecia la comparación entre cada una de las opciones anteriormente descritas.

image