Hace ya tiempo hablé de como securizar una aplicación Web API con ACS. En ese post se usaba un DelegationHandler para validar en todas las peticiones que el cliente que realiza la llamada envie un token de seguridad válido en las cabeceras de autenticación. Ese post es completamente válido y podría usarse esa misma aproximación con Windows Azure Active Directory.
Es válido, pero si usamos las plantillas y el código que genera Visual Studio 2013, veremos otra opción mucho más simple, que no es otra que usar OWIN para establecer la seguridad. Vamos a verlo.
Si seleccionamos crear un nuevo proyecto web, indicaremos que queremos crear una aplicación Web API, indicando a su vez que queremos usar nuestro tenant de WAAD para disponer de una aplicación Single-tenant. Los pasos son exactamente los mismos que veíamos en el post anterior dónde hablábamos de una aplicación MVC.
Una vez creado, añadiremos la atribute [Authorize] en aquellos controladores que queremos securizar.
Una vez hecho esto, podemos ejecutar la aplicación (F5) e intentar realizar una petición GET a “api/values”. En este momento veremos cómo NO podemos hacer la petición y recibiremos en un error de autenticación.
Tened cuidado no estéis ya autenticados! Que entonces sí funcionará. Si en el ejemplo de MVC le distéis a recordar contraseña es posible que estéis autenticados y por tanto, esta petición os devuelva resultados.
En el caso de la aplicación MVC os comentaba que era en el fichero de configuración dónde se establecía la configuración para indicar que queríamos usar WAAD. En este caso, se usa OWIN…aquí vemos el código que hace posible que el servicio Web API esté securizado.
En el proyecto Web API veremos una clase Startup.cs la cuál se usa para configurar todos aquellos módulos basado en OWIN. El nombre de esta clase es una convención, si arrancamos el proyecto y ponemos un punto de parada veremos cómo se ejecuta de forma automática el código de este clase.
Si vamos al método ConfigureOAuth, veremos cómo se establece la seguridad…fácil, no?
Una aplicación cliente (WPF, Windows Store, WP…) que quiera hacer uso de este servicio tendrá que disponer de un token de seguridad válido y enviarlo en las cabeceadas de autenticación, tal y como veremos en el siguiente post.
Más fácil imposible!