Microsoft Dynamics AX 2012, Azure Services y Windows Phone

Hace unos meses, desde Microsoft publicaron una aplicación de ejemplo para la captura de datos de gastos desde Windows Phone. Esta aplicación no es descargable desde España, pero lo relevante del asunto no es la aplicación en sí (cuyo funcionamiento se intuye) sino la arquitectura necesaria para que los datos de nuestra instalación de Microsoft Dynamics AX 2012 lleguen hasta el terminal móvil de manera inmediata y segura.

Microsoft Dynamics Tile

Para entender este funcionamiento hay que introducir al juego los nuevos servicios disponibles en Microsoft Windows Azure (sí!, en la nube). Hay que ir acostumbrándose a ellos, ya que Microsoft está rehaciendo toda la estrategia de sus productos alrededor de estos servicios. Por eso vamos a hacer una pequeña introducción de cómo utilizar estos servicios para llevar al móvil los datos empresariales de nuestro ERP. Todo ello se basa en el siguiente esquema, que vamos a explicar:

Microsoft Windows Azure, Windows Phone, Microsoft Dynamics AX 2012Click en la imagen para ver más grande

Para empezar, es obligatoria la lectura del White Paper publicado hace unas semanas Microsoft Dynamics AX 2012 White Paper: Developing secure mobile apps for Microsoft Dynamics AX 2012. El esquema anterior y las explicaciones que vienen son una versión muy simplificada de lo que dice este documento, donde además se explica cada componente y configuración con todo detalle, paso a paso, y con ejemplos. También es interesante el proyecto Developing Secure Mobile Apps for Dynamics AX 2012 publicado en el sitio de ejemplos de código de Microsoft, donde se pueden descargar los ejemplos de lo descrito en el White Paper anterior.

La configuración de la arquitectura necesaria podríamos resumirla de esta manera:

  • En primer lugar, se desarrollan servicios web mediante Microsoft Dynamics AX 2012 y AIF para realizar las acciones que se deban publicar hacia la aplicación móvil. Recordemos que esto se puede hacer de manera nativa en AX 2012. No entraremos en detalle en esto, aunque puede que en otro artículo profundice más sobre servicios, ya que son una parte fundamental de esta nueva versión.
  • Para facilitar el acceso a estos servicios desde fuera de la red o a través de un firewall, se utiliza un Service Bus Service de Microsoft Windows Azure,  que nos permite dos posibilidades:

AX2012 Azure service bus configuration

    • Desarrollar servicios WPF a medida, que se mantengan en escucha del Service Bus y re-envien las peticiones a los servicios de AX. Este servicio utilizará un certificado para verificar la seguridad junto a ADFS (ahora lo veremos).
    • Publicar un servicio utilizando el AIF Windows Azure Service Bus Adapter (KB2845539). De esta manera se puede publicar un servicio de escucha en IIS, que enviará los mensajes al servicio AIF publicado con este adaptador.

Microsoft Windows Azure - Service Bus RelayOrigen de la imagen: How to Use the Service Bus Relay Service

  • Otro servicio fundamental en esta arquitectura es Windows Azure Active Directory Access Control Service (ACS). Este servicio permite la autenticación y autorización de usuarios para aplicaciones y servicios en la nube. Este servicio se integra con diversos servicios de manejo de usuarios existentes, como el Active Directory que ya tendremos configurado en nuestra instalación, pero también con otros como Live ID, Google Id, Facebook, etc. ACS puede establecer una relación de confianza con nuestro controlador de dominio (que está dentro del firewall de nuestra red), ya que es compatible de forma nativa con Active Directory Federation Services (ADFS).

Windows Azure Active Directory Federation Services (ADFS)Origen de la imagen: How does WAAD work with Windows Server Active Directory?

El proceso paso a paso de petición desde el móvil a Microsoft Dynamics AX y la recepción de respuesta tras la autorización, quedaría más o menos así:

  • Autorización (paso 1)
    • La aplicación móvil solicita credenciales de acceso al servicio ADFS con un usuario y contraseña que deben existir en el dominio corporativo.
    • Si las credenciales son correctas, se devuelve un token de autenticación a la aplicación cliente.
    • Este token se envía a su vez a ACS para validar el acceso del usuario autenticado a los servicios de Azure (en concreto, al Service Bus).
    • Si la el usuario tiene acceso, se devuelve otro token a la aplicación cliente confirmando que el tándem ACS + ADFS han validado la identidad del usuario y los permisos para la acción solicitada.
  • Petición y respuesta (paso 2)
    • Los dos token recibidos durante el paso anterior, se envían al Service Bus de Azure junto a la petición que se quiere realizar contra los servicios de AX.
    • El Service Bus realiza la petición al servicio web intermedio, enviando el token de autenticación para que el servicio sepa el usuario que ha realizado la petición inicialmente.
    • La respuesta del servicio se devuelve al Service Bus, y éste a su vez la reenvia a la aplicación cliente, que finalmente recibe una respuesta.

¿Sencillo no? 🙂 Pues no mucho, pero es una arquitectura segura y totalmente escalable para canalizar peticiones desde la red internet hacia nuestra intranet, utilizando mecanismos de autenticación y autorización existentes, seguros y escalables (ya que son procesados por servicios en Azure) que utilizan un sistema conocido de mantenimiento de usuarios y permisos como es Active Directory (que obligatoriamente existe en cualquier instalación de Dynamics AX) y que mediante los servicios de mensajes de Azure puede dar soporte no sólo a aplicaciones móviles sino a cualquier aplicación externa que se nos ocurra: Windows 8, Tablets, Móviles, Aplicaciones de terceros, TPV’s, Aplicaciones B2B, sitios y servicios web, APIs, etc.  …

Microsoft Windows Azure

De esta forma se puede comprobar que, aunque Microsoft Dynamics AX no se puede instalar íntegramente, de momento, sobre Windows Azure (salvo en una máquina virtual), ésto no impide que vayamos adoptando esta plataforma que ofrece tantas posibilidades para extender e integrar nuestro sistema con el exterior, tanto con dispositivos como con otras plataformas y que podamos implementar parte de la infraestructura en la nube, mientras seguimos utilizando nuestros servidores on-premise.

REFERENCIAS

EDITADO

3 comentarios
  • Dani
    marzo 20, 2014

    Muchas gracias por articulo, mirando el White paper en el subapartado de Add the middle-tier WCF service reference del apartado Create a Windows Phone application, entiendo que puedes crear la aplicación desde cualquier máquina, no es necesario tener el visual studio en la máquina de azure. Que dirección se deberia poner para que detecte el middle-tier WCF service?

    Saludos!

  • jaestevan
    junio 17, 2013

    Sí, ADFS en realidad no tiene que ver con Azure, se instala sobre nuestro Windows Server para establecer confianzas entre varios dominios. En nuestro caso con nuestro dominio en Azure, pero no tiene por que ser así, puede ser entre dominios de un mismo grupo de empresas, etc.

    Saludos.

  • Andrés M
    junio 17, 2013

    Muy buen artículo, gracias JA.
    Una cuestión, para montar esta infraestructura, el ADFS, sería un componente on-premise? correcto? , tengo que echar una lectura al white paper que indicas…
    Saludos!