viernes, 15 de febrero de 2019

WSO2 y Admin Web Services: Donde estan y como ejecutarlos


Todos los productos de WSO2 tienen una consola de administración que no es más que la interfaz gráfica de una seríe de servicios de administración. 

Para ver un listado de los mismos tienes que hacer tres cosas:
  • Modificar el fichero carbon.xml e indicar el atributo 'HideAdminServiceWSDLs' a true. 
  • Arrancar el producto añadiendo el comando -DosgiConsole
  • Tras arrancar, presionar 'Enter' en la consola donde este ejecutandose y teclear posteriormente 'listAdminServices'.
De esta forma aparecerá en la misma consola el amplio catálogo de servicios de los que disponen los productos de WSO2, junto con su nombre podemos ver la ruta en la que se encuentran. En un formato similar al siguiente:

UserAdmin, UserAdmin, https://localhost:9443/services/UserAdmin

Estos servicios puedes invocarlos a través de: SoapUI, Postman o cURL. Pero hay que tener en cuenta que no hay documentación relativa de los mismos, y por tanto puede ser buena idea usar los WSDL para importarlos en el SoapUI. Al menos de esta forma podremos ver cual es la request y a través del nombre de los parámetros de entrada hacernos una idea de su funcionamiento.

Para empezar a usarlos, lo primero que hay que hacer es logarse en a través del servicio de administración de 'Authentication'.

curl -kvX POST 'https://localhost:9443/services/AuthenticationAdmin' \
  -H 'Content-Type: text/xml' -H 'SoapAction: urn:login' \
  -d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://org.apache.synapse/xsd">
 <soapenv:Header/>
 <soapenv:Body>
      <aut:login xmlns:aut="http://authentication.services.core.carbon.wso2.org">
         <aut:username>admin</aut:username>
         <aut:password>admin</aut:password>
         <aut:remoteAddress>localhost</aut:remoteAddress>
      </aut:login>
   </soapenv:Body>
</soapenv:Envelope>'

Este servicio nos indicará si se ha logado correctamente o no. Ahora podremos invocar el resto de los servicios con la ayuda de la autenticación BASIC. Por ejemplo este otro que nos permite obtener los permisos de los roles asociados a un determinado usuario:

curl -vkX POST 'https://localhost:9443/services/UserAdmin' \
  -H 'Content-Type: text/xml' \
  -H 'Authorization: Basic YWRtaW46YWRtaW4=' \
  -H 'SoapAction: urn:getRolePermissions' \
  -d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://org.apache.axis2/xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <xsd:getRolePermissions>
         <xsd:roleName>admin</xsd:roleName>
      </xsd:getRolePermissions>
   </soapenv:Body>
</soapenv:Envelope>'

No hay comentarios:

Publicar un comentario