[WebCast]–Sientete seguro con tu KATANA!!!

Seguramente muchos ya habréis oído algo sobre Katana, quizás algunos hasta habéis hecho vuestras primeras líneas de este proyecto de Microsoft  para flexibilizar nuestras aplicaciones ASP.NET.

Pues bien, el día 16 de octubre a las 19:00 (GMT+1) participaré en un Webcast junto con mi compañero Unai Zorrilla dónde veremos cómo autenticar y autorizar nuestras aplicaciones ASP.NET MVC y nuestros HTTP API construídas sobre Katana, tanto de forma personalizada como utilizando Windows Azure Active Directory, WADD, para entornos empresariales.

Registrohttps://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032567495&Culture=es-ES&community=0

El web cast no tratará sobre introducción a Katana, para ello, podéis ver/leer el blog del amigo Jose Maria Aguilar, el cual contiene una excelente serie sobre el tema, serie que va por la cuarta entrega ya.

[Codemotion]Gestión de la identidad en Cloud

El próximo 18 y 19 de Abril se celebrá en Madrid el Codemotion, un evento dónde participio como ponente con una sala sobre gestión de identidad en cloud. Aquí os dejo la descripción de la misma por si os interesa, mi charla será el día 19 de octubre, sábado, a las 12:30.

http://codemotion.es/talk/19-october/58 

La gestión de la identidad es uno los escenarios más habituales en el desarrollo de aplicaciones; cómo securizo mis aplicaciones, dónde y cómo creo que los usuarios y grupos, cómo consigo que las aplicaciones usen mis credenciales corporativas etc…Son problemáticas habituales para las cuáles no siempre se les da la mejor solución, más cuando aparecen por medio plataformas de Cloud como Windows Azure o servicios SaaS como Office 365.

Durante la sesión veremos de forma práctica:

  • Introducción a seguridad basada en claims.
  • Securización de aplicaciones Web y REST desplegadas en Cloud
  • Windows Azure Active Directory
  • Escenarios de Single Sing On

Plain Concepts Architecture Day

El próximo día 29 de octubre participaré con Unai Zorrilla en Madrid un evento centrado en el área de arquitectura, dónde intentaremos tratar diferentes temáticas que pueden ser de interes para muchas empresas.

  • 9:30 Arquitectura de aplicaciones
  • 10:30 Stack para el desarrollo de aplicaciones web
  • 11:30 Café
  • 12:00 Arquitectura Cloud
  • 13:00 Gestión de identidad

La información completa del evento, con la agenda detallada, la podéis encontrar en http://www.plainconcepts.com/ArchitectureDay/

El registro se puede hacer desde https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032566950&Culture=es-ES&community=0

Espero que os guste y poder veros allí.

[CASK213] Scrum en equipos multiproyecto

Este jueves y viernes próximo se celebra en Bilbao “Conference Agile Spain”" 2013” dónde tengo la suerte de participar con una sesión sobre cómo trabajar con Scrum en equipos multiproyectos. Si váis, espero veros allí si el tema os interesa.

Aquí os dejo la descripción de la sesión:

En Plain Concepts venimos trabajando con Scrum desde hace varios años desarrollando diferentes proyectos a nivel interno así como clientes. El objetivo de esta sesión sería comentar de forma práctica cuando es nuestra experiencia con Scrum trabajando en un entorno multiproyecto.

En la oficina de Bilbao somos unas 12 personas que trabajamos en diferentes proyectos dentro del mismo sprint. En la sesión veríamos cómo trabajamos con Scrum, cómo hacemos las planificaciones, dailys, reviews etc…

Además de que se puede haber como lo usamos nosotros me gustaría contar las lecciones que hemos ido aprendiendo por el camino, qué cosas nos funcionan, qué cosas no nos funcionan, los problemas con los que nos encontramos y cómo los hemos solucionado etc…Dejando claro que esta es nuestra forma de actuar, pero que no existen verdades absolutas.

La agenda completa de sesiones la podéis ver aquí.

Securizar una aplicación nativa con WAAD

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.

01-WAAD_WPF

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.

02-WAAD_WPF

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.

03-WAAD_WPF

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.

 

04-WAAD_WPF

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.

05-WAAD_WPF

06-WAAD_WPF

 

Y una vez conseguido el token, sólo tenemos que enviarlo en las cabeceras de autenticación de las peticiones que hagamos.

 

05.1-WAAD_WPF

Securizar Web API con WAAD

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.

02-WAAD_WebAPI

 

Una vez creado, añadiremos la atribute [Authorize] en aquellos controladores que queremos securizar.

04-WAAD_WebAPI

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.

03-WAAD_WebAPI

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.

05-WAAD_WebAPI

Si vamos al método ConfigureOAuth, veremos cómo se establece la seguridad…fácil, no?

06-WAAD_WebAPI

07-WAAD_WebAPI

 

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!

Desplegar en Azure una aplicación MVC con WAAD

En el post anterior veíamos cómo crear una aplicación ASP.NET Web y cómo securizarla con WAAD. En este post veremos cómo desplegar en Azure Web Sites.

El primer paso es crear un servicio de Web Sites, ya sea desde el portal de Windows Azure o directamente desde Visual Studio, desde el Server Explorer.

08-WAAD_MVC

Seleccionando la opción de Web Sites podemos crear un nuevo Web Site, que es dónde desplegaremos la aplicación Web creada anteriormente. En este paso es necesario también indicarle que hay que crear una base de datos, ya que la aplicación creada en el paso anterior hace uso de una base de datos para el mantenimiento de la información del tenant. Echadle un ojo al fichero de configuración para verlo.

09-WAAD_MVC

Una vez creado, lo que podemos hacer es descargarnos el perfil de publicación, el cuál contiene todos los datos para poder publicar la aplicación web directamente desde Visual Studio.

10-WAAD_MVC

Una vez descargado el perfil, podemos seleccionar la opción “publish” e importa el perfil recién descargado.

11-WAAD_MVC

En este punto fijaron que está activada la opción de usar seguridad corporativa. Tal y como veíamos en el paso anterior, el propio proceso de publicación será el encargado de crear una aplicación en el tenant de WAAD, para securizar la aplicación que desplegemos.

Si no lo tenéis rellenado por defecto, en este punto es importante que podáis la cadena de conexión a la base de datos.

12-WAAD_MVC

y nada, tras unos minutos tendremos ya la aplicación desplegada en Azure Web Sites! Se nos abrirá el navegador, se nos pedirá las credenciales de autenticación si no estamos ya autenticados, y veremos nuestra aplicación web tal y como lo hacíamos en el caso anterior.

Como en el caso anterior, si vamos al portal de Windows Azure veremos cómo se nos ha creado una nueva aplicación en el tenant de WAAD.

13-WAAD_MVC

14-WAAD_MVC

15-WAAD_MVC

Por supuesto, podríamos haber creado nosotros mismo la aplicación desde el portal de Windows Azure. En el portal dando a la opción de añadir poder crear fácilmente una aplicación, para securizar aplicaciones Web o para securizar aplicaciones nativas como Windows Store, WPF o Windows Phone.

En el wizard indicaremos el nombre, “App ID” único, la URL dónde estará etc…Así como el tipo de acceso que queremos dar. Por ejemplo, podemos controlar si la aplicación podrá hacer uso de los servicio REST para leer o modificar los objetos (usuarios, grupos…) de nuestro tenant.

19-WAAD_MVC

20-WAAD_MVC

21-WAAD_MVC