Mostrando entradas con la etiqueta AS. Mostrar todas las entradas
Mostrando entradas con la etiqueta AS. Mostrar todas las entradas

jueves, 5 de enero de 2017

Axis2: Seguridad en WSO2 AS 5.3.0

image

Ayer revisando StackOverflow me he topado con una pregunta sobre como establecer la seguridad para un servicio axis2 desplegado en el WSO2 AS 5.3.0 y la verdad es que desconocía que esta funcionalidad, muy buena por cierto, había sido removida de la interfaz web.
Realmente no me ha gustado que se removiera, pues de una manera muy fácil permitía a los desarrolladores definir la seguridad para los servicios axis2, pero son cosas de la compañía WSO2 que habría que revisar los pro y los contras.

La respuesta a la pregunta está en el enlace que puse más arriba pero lleva un trabajo adicional a lo que se hacía antes a través de la UI. Se necesita:
  • Identificar el XML que define la política que queremos usar. En mi respuesta usé la más sencilla, UsernameToken over HTTPs.
  • Incluir en el fichero services.xml del servicio axis2, que está dentro del fichero .aar la referencia al módulo de rampart. Que es el que define la seguridad para el framework axis2.
  • Definir cómo se vinculará la política con las distintas operaciones del servicio y donde será adjuntada.
  • Definir algunas configuraciones propias de rampart dentro de la política para la encriptación y uso de los usuarios del WSO2 AS y también una configuración extra para el carbon definiendo los roles que tendrán permiso de acceso al servicio.
Una vez que se tiene un ejemplo resulta más fácil establecer la seguridad para cualquier servicio axis2 pero para aquellos que no dominan el framework puede llevarle horas o días dar con la configuración correcta. De ahí que me decidiera a compartir un ejemplo sencillo que les sirva a los que se enfrente a este pequeño problema.

viernes, 23 de enero de 2015

Exportando nuestras hojas de cálculo como Web Service (Parte I)

En esta entrada podremos ver el uso del DSS para exponer a través de un servicio web los datos que tengamos almacenados dentro de una hoja de cálculo Excel, creo que este escenario lo podemos encontrar hoy día en muchos lugares donde se tenga alguna información en formato digital.

Espero les pueda servir.
 


lunes, 24 de febrero de 2014

Despliegue de un servicio JAX-WS en tomcat y en el AS de WSO2

Desplegar un servicio jax-ws es realmente sencillo. Si seguimos los pasos de la entrada anterior, lo que tenemos que hacer ahora es ir a la carpeta  target y buscar el .war, en nuestro caso sería hello_person.war porque es el nombre que especificamos como final en el fichero pom.xml.

Para hacerlo en Tomcat:

Nos vamos donde tengamos un tomcat instalado y copiamos el fichero en [tomcat_install]\webapps

Al iniciar el tomcat podemos ir a esta ubicación:  http://localhost:8080/hello_person/helloPersonService y veremos lo siguiente:

Usando la ubicación del WSDL pueden probar el servicio usando SOAPUI, tal y como se ha mostrado en esta otra entrada.

Para hacerlo en el Application Server de WSO2:

Lo primero es tener una instancia corriendo de esta herramienta  e ir a la pestaña Main/Applications/Add/JAX-WS/JAX-RS, ahí veremos lo siguiente:
NOTA: como la implementación no es con CXF no la detecta como un servicio JAX-WS

Damos clic en Examinar, seleccionamos nuestra aplicación y le damos al botón Upload.

Una vez cargada podemos ver como se muestra:

Como en mi caso el offset está en 2 la url para acceder al servicio es la siguiente:

Espero les sea de utilidad

jueves, 23 de mayo de 2013

Desplegando un servicio Axis2 en el Application Server de WSO2

En esta entrada veremos como desplegar el servicio axis2 que creamos en la entrada anterior.

Para ello nos descargamos la instalación del Application Server versión 5.1.0 del siguiente sitio.

Una vez tengamos el .zip lo descompactamos, vamos a la carpeta [AS]/bin/ y ejecutamos el fichero wso2server.sh si estamos en Linux o wso2server.bat si estamos en Windows. [AS] es donde descompactamos el .zip.

Aquí pueden ver lo que tiene el .zip adentro.

Una vez que se inicie el servidor si se fijan en la consola podrán ver que muestra la URL que deben poner en el navegador para tener acceso a la herramienta. Tengan en cuenta también que por defecto  el usuario es admin y la contraseña es admin.

Por defecto la URL tiene esta estructura: https://IP:9443/carbon/ donde IP es la IP de su máquina, aunque también pueden poner el nombre.
Cuando entran a esa URL la página que se les muestra es la siguiente:

Ahí ponen usuario y contraseña y listo.
Una vez que entren buscan en el menú la opción “AAR Service”, dan clic y verán esta pantalla.
Es la que se usa para desplegar un archivo .aar así que da clic en el botón que dice “Examinar” buscan donde tienen su servicio, el primero que creamos, y lo despliegan dando clic en el botón Upload.
Deben de esperar unos segundos y refrescar la página para que vean el servicio.

El servicio en mi caso se llama “Holamundo” y eso es porque ese es el nombre que tiene en el fichero services.xml como pueden ver en la entrada anterior.
Para ver su WSDL basta con que den clic en WSDL1.1 y si quieren probar el servicio dan clic donde dice “Try it”.

Cuando le den al try it verán una página como esta.
Vean que le cambié la posición a horizontal para que se viera bien todo el XML del mensaje.

Cuando entren un nombre y un apellido y le den al botón “Send” les dará un error. Así que ya saben, no se preocupen. La causa está en que este servicio está inicialmente para desplegarse en una instalación de axis2, pero no en el Application Server y si se fijan en el endpoint verán que no apunta al puerto por el que escucha el Application Server si no por el 8080 como si fuera a desplegarse en axis2.

La solución es bastante sencilla y me permite enseñarles un poco más de la herramienta.
Debemos ir al dashboard del servicio: listamos todos los servicios, damos clic en el nombre del servicio y ya estamos en el dashboard. Luego damos clic donde dice “parameters” y veremos algo como esto:


Damos clic en “Add New” y ponemos el nombre “modifyUserWSDLPortAddress” damos OK y luego cambiamos esto “TODO: Enter value here” por esto “true”.

Le damos al botón Update y listo. Así le hemos dicho al Application Server que para este servicio modifique los puertos para que se correspondan con las herramientas.
Ahora vuelven a probar

Y ya pueden ver como tiene bien el endpoint. Esto una vez que se aprende se puede hacer en el mismo services.xml de la implementación del servicio cuando se está trabajando en el developer studio.

Cuando le dan al botón Send, la respuesta nos dice.


Y así probamos ya el primer servicio.

El segundo caso es casi lo mismo, aquí lo único que hice fue cambiarle el nombre al servicio en el WSDL que estoy usando, aunque si hubiera tenido el mismo nombre aún se lo hubiera podido cambiar en el fichero services.xml.
Lo desplegamos de la misma forma y cuando vamos a probarlo vemos lo siguiente.

Como ven ya en este caso tenía bien el puerto porque el parámetro se añadió automáticamente al services.xml cuando el servicio se creó desde un WSDL.
Le puse nombre y apellidos y la respuesta es la siguiente:

Y eso es todo.

En otra entrada veremos cómo crear un cliente para un servicio axis2 desde JAVA también usando el Developer Studio de WSO2.

lunes, 13 de mayo de 2013

Introducción a la Plataforma de WSO2.


WSO2 es una empresa registrada en los EE.UU con oficinas en varios países y con un personal que ronda las 150 personas y va creciendo.

Esta empresa de tecnología se dedica al desarrollo de una suite de herramientas desarrolladas bajo licencia Apache v2 enfocadas en los temas que tienen que ver con SOA y BPM.

La siguiente imagen les puede dar una idea:


De manera general estas herramientas tienen un núcleo base y común para todas que es el framework CARBON. Este framework contiene el conjunto de funcionalidades que es transversal a todas las herramientas y usa OSGI como framework para el desarrollo de dichas funcionalidades en forma de bundles. Las herramientas entonces son la suma de las funcionalidades del framework CARBON más un conjunto de plugins o bundles desarrollados usando OSGI que se integran para formar una herramienta independiente.

Entre estas herramientas tenemos las siguientes:

1.       Application Server (AS): es la herramienta para el despliegue de componentes. Y por componentes debemos entender servicios web desarrollados en axis2, jax-ws, spring-ws, etc; también sirve para desplegar aplicaciones web tradicionales y servicios restful. Las aplicaciones web desplegadas en esta plataforma y que fueran pensadas para ello pueden acceder a diversas funcionalidades que brinda la herramienta. En mi uso particular la utilizo para desplegar servicios de datos y servicios axis2 así como para el despliegue de las aplicaciones web.

2.       Enterprise Service Bus (ESB): es el corazón de cualquier solución de integración e interoperabilidad y no es la excepción en el caso de esta suite de herramientas, a través de su arquitectura de tuberías y filtros permite el desarrollo de servicios proxy a través de los cuales se pueden brindar todas las características que en la actualidad soportan los ESB más notables del mercado.


3.       Business Activity Monitoring (BAM): es la herramienta usada para el monitoreo de servicios, servidores y aplicaciones web. A través de su arquitectura permite que los elementos a monitorizar puedan conectarse a ella y enviar los datos requeridos los cuales son procesados y mostrados en un conjunto de graficas que conforman un dashboard sumamente útil para comprender el uso que pueden tener las distintas herramientas bajo monitorización.

4.       Identity Server (IS): es la herramienta encargada de la seguridad. Brinda servicios de autenticación única o SSO para el  resto de las herramientas y para cualquier aplicación web que lo requiera, servicios de autenticación de grano fino basado en el estándar  XACML3.0 compatible con la versión 2.0, emite token de seguridad para escenarios avanzado de autenticación en servicios web que requieren el uso de los estándares WS-Trust y WS-SecureConversation.

Del resto de las herramientas no van quedando las siguientes que serán descritas en otras entradas:

1.       WSO2 Developer Studio.
2.       Governance Registry.
3.       Message Broker.
4.       Elastic Load Balance.
5.       Stratos.
6.       Data Service Server.
7.       WSF-PHP.
8.       Business Process Server.
9.       Business Rules Server.
10.   API Manager.
11.   Cloud Gateway.
12.   Complex Event Processor.

Si suman serán 16 herramientas + el framework CARBON lo que hace que esta suite sea tan interesante para los proyectos que tienen que ver con los temas de SOA y BPM.

En la siguiente entrada describiré brevemente 4 herramientas más y así hasta terminar.

jueves, 9 de mayo de 2013

Creando un servicio de acceso a datos en 3 minutos

WSO2 como plataforma tiene un conjunto de herramientas bastante cool para el desarrollo rápido de soluciones. Cada herramienta tiene un conjunto de plugins asociados y uno de estos plugins para la creación de servicios de acceso a datos es bastante bueno. Lo pueden encontrar tanto en el Application Server como en el Data Service Server.

Veamos como en 3 minutos podemos crear un servicio de acceso a datos con las operación CRUD normales sobre una tabla de una base de datos relacional en postgresql.
Si no quieren descargar la herramienta bien pueden usar el Stratos Live ubicado en http://wso2.com/cloud/stratoslive/ lo que no se  si tenga el driver para postgresql, puede ser que trabaje solo con mysql.

Luego de autenticarse en la herramienta seleccionada se va a la sección Configure/Data Sources tal y como muestra la siguiente imagen:


Luego se le da en Add Data Source y se muestra lo siguiente que debe ser llenado en función de la BD done esté ubicada.
En este caso mi servidor de postgresql está local y la BD que usaré se llama BDIterar, tengan en cuenta que la herramienta debe tener el driver de postgresql ubicado en la carpeta:
[Herramienta] \repository\components\lib\

Pueden probar la conexión dándole al botón Test Connection.
Luego guardan esta configuración y les aparecerá así:
Ahora se debe crear un servicio de acceso a dato con las operaciones CRUD básicas sobre la BD configurada en la conexión. Para eso haremos lo siguiente:
Van a  Manage > Services          > Add   > Data Service  > Generate y verán lo siguiente:
Cuando den clic en SELECT les saldrá el data source que crearon en el paso anterior. Y deben especificar el nombre de la BD. Como se ve en la siguiente imagen.
Le dan next y les sale los schemas de esa BD.
Le dan next y se muestran las tablas existentes:
Seleccionamos  solo “datos” y seguimos, le dan next.
Aquí le pueden dar next también y luego finish.
Se les debe haber creado un servicio que se les muestra a continuación:

Si lo quieren probar le dan clic a la opción “Try this service”
Se les muestra lo siguiente:


Pueden ver todas las operaciones creadas, si usamos la operación
select_all_datos_operation veremos lo siguiente.

Pueden probar las otras operaciones para que vean cómo funciona.