Aquí os dejo la grabación del hangout que compartí con la gente de desarrollo web sobre Windows Azure y los servicios de infraestructura; crear redes virtuales, máquinas, aspectos a tener en cuenta etc…
[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.
Registro – https://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
Resumen de Windows Azure Active Directory
A continuación hago un resumen de algunos de los post de Windows Azure Active Directory que creo que puede seros de interés:
- Windows Azure Active Directory
- Cómo crear un tenant de Windows Azure Active Directory
- Securizar aplicaciones MVC con WAAD
- Desplegar en Azure una aplicación MVC con WAAD
- Securizar Web API con WAAD
- Securizar una aplicación nativa con WAAD
Además, incluyo algunos enlaces a post anteriores que aplican tanto a WAAD como a Access Control:
- Securizar aplicaciones Windows Phone 8
- Securizar aplicaciones Windows 8 con ACS y WAAD
- Cómo securizar servicios WebAPI usando ACS y tokens JWT (usando un DelegationHandler)
y estos post que aplicarían si usáis ACS y a versiones de Visual Studio anteriores a 2013:
- Cómo securizar aplicaciones web usando ACS y tokens JWT.
- Desplegar aplicaciones web en Windows Azure WebSites que hagan uso de WIF.
- Cómo securizar servicios WebAPI usando ACS y tokens JWT.
- Cómo securizar una aplicación MVC que contenga tanto aplicaciones web como servicios WebAPI.
- Cómo securizar aplicaciones web usando Windows Azure Active Directory ( WAAD ).
- Cómo hacer uso del tenant de WAAD de Office 365 para securizar aplicaciones web con ACS.
- Securizar aplicaciones Windows 8 con ACS y WAAD
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.
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.
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.
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!
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.
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.
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.
Una vez descargado el perfil, podemos seleccionar la opción “publish” e importa el perfil recién descargado.
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.
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.
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.