En este post veremos cómo es posible securizar una aplicación nativa que haga uso de WAAD, así como ver cómo es posible que ésta haga una llamada a un servicio Web API que también está securizado con WAAD. Las dos aplicaciones hacen uso del mismo tenant de Windows Azure.
Básicamente el ejemplo es prácticamente igual que los que veíamos meses atrás con ACS, con el principal cambio de que ya hay versión definitiva de la librería cliente de WAAD; Active Directory Authentication Library (ADAL).
Securizar aplicaciones Windows 8 con ACS y WAAD
Securizar aplicaciones Windows Phone 8 con ACS
En este ejemplo he creado una nueva aplicación WPF y el añadido el paquete de nuget de Active Directory Authentication Libray.
Una vez tenemos la aplicación creada, desde el portal de Windows Azure tenemos que dar de alta una nueva aplicación en nuestro tenant de WAAD. En este caso, creamos una nueva aplicación nativa.
Además de darle un nombre deberemos indicar una URI válida, que como dice en la información no tiene por qué ser real, pero si una URI válida. Este valor lo usaremos posteriormente en el código cliente que escribamos.
Así mismo, una vez creado veremos otro dato importante que necesitaremos, el ClientID.
Al inicio del post también comentábamos que queremos que esta aplicación pueda hacer llamadas a nuestro servicio Web API, securizado también con WAAD. Pues bien, en la sección Web APIs indicaremos que queremos que esta aplicación nativa pueda acceder al servicio de Web API, tan fácil como eso.
Una vez creada, tendremos que crear el código para que el usuario pueda autenticarse en la aplicación, conseguir un token de seguridad y hacer la llamada REST.
El siguiente código es el código necesario para conseguir un token de seguridad. Al llamar a AcquireToken se le mostrará al usuario la pantalla para que pueda autenticarse. Si la autenticación es correcta, podemos conseguir un token de seguridad haciendo uso del método CreateAuthorizationHeader.
Y una vez conseguido el token, sólo tenemos que enviarlo en las cabeceras de autenticación de las peticiones que hagamos.