Video: Run Web Camp Buenos Aires

por Alejandra Federico  10. mayo 2011

A mediados de Marzo participó Daniel Laco junto a Martin Salías como orador en una de las conferencias del evento sobre web que organizó Microsoft, donde contaron con la presencia de dos invitados "oficiales", Phil Haack (Program Manager de ASP.NET MVC) y Drew Robbins (Technical Evangelist).

Les dejo el video de Acceso a datos con Entity Framework, con Daniel Laco y Martín Salías. 

 

Pueden encontrar el resto de las charlas Aquí.

Tags: ,

ASP.NET | Entity Framework

Ejemplos y Presentación del Run WebCamp – Acceso a Datos y Modelado con Entity Framework

por Daniel Laco  15. marzo 2011

 

Yá están publicados los ejemplos y la presentación de la charla que realizamos en el evento Run WebCamp con el compañero de ruta, Martín Salías.

Pueden encontrar los archivos en www.vemn.com.ar/conferencias

 

Tags: , , ,

ASP.NET | Entity Framework | General | Sharepoint

Run Web Camp en Buenos Aires

por Daniel Laco  1. marzo 2011

El 15 de Marzo estaré participando junto a Martin Salías como orador en una de las conferencias del evento sobre web que organiza Microsoft.

En esta oportunidad estaremos hablando de Acceso a Datos y Modelado con Entity Framework, siempre dentro del ambiente de ASP.NET MVC.

En http://www.microsoft.com/argentina/run/ pueden encontrar toda la agenda y el link de registración.

Es una jornada muy interesante porque contaremos con la visita de Phil Haack, Program Manager de ASP.NET

Tags: ,

ASP.NET | Desarrollo Web | Entity Framework

Seguridad y Autorizacion centralizada en base de datos con Asp.Net MVC

por Andres Stang  22. diciembre 2010

La palabra Seguridad es siempre una consulta que recibo cuando hablo de cómo programar en Asp.Net, y siempre me gusta dar el mismo chiste como respuesta: “Vamos por partes decía Jack el Destripador”. Es importante dividir un problema grande en problemas más pequeños y por ende más manejables, y hablando de seguridad la fórmula es sencilla.

 

SEGURIDAD = AUTENTICACIÓN + AUTORIZACIÓN


Es decir, tenes que resolver por un lado como identificar al usuario, para saber que es quien dice ser que es, y por el otro lado una vez que sepamos su identidad, tenemos que decidir si lo dejamos acceder o no.

Cuando creamos un proyecto nuevo de MVC, el template nos da una GRAN ayuda y propone resolver (mejor dicho, ya lo implementa y lo resuelve por defecto) cada tema con un componente específico. Para la autenticación utiliza Asp.Net Membership y para la autorización el decorador [Authorize].

Ambos componentes funcionan maravillosamente pero hay uno que me gusta y otro que no. Concretamente Asp.Net Membership me parece perfecto para resolver una gran cantidad de escenarios y contextos, y generalmente lo utilizo en mis proyectos. Pero el decorador de autorización a mi criterio tiene dos grandes falencias:

  • Falta de flexibilidad: el componente de autorización puede recibir como parámetro el usuario y el rol, pero esto queda explícito en el código, es decir, si me surge la necesidad de agregar un nuevo rol al sistema deberé recorrer el código, cambiarlo, recompilar y realizar un deploy del sitio.
  • Verborragico: el componente requiere gran escritura y definición por parte del programador. Esto, mas allá de la poca elegancia del código, define que sea el programador quien decide quien esté autorizado a entrar a cada acción. Y ante un error, descuido o falta de memoria del programador podemos comprometer a nuestra aplicación dejando expuesta funcionalidad sensible a usuarios indeseados.

 

¿Cómo resolvemos esto?


Allá por el año 2007 Daniel Laco escribió uno de los post más consultados de este sitio:


Autenticación de usuarios basada en Roles utilizando HTTPModules en ASP.NET


De forma muy sencilla y elegante resuelve las dos falencias presentadas. Y si bien el código no es compatible con todas las versiones del .net framework, o con el paradigma MVC, el concepto si aplica en el universo Asp.net.

Lo que haremos el día de hoy, es actualizar un poco el código para que puede ser utilizado en nuestros proyectos de MVC ;)

Lo primero que tenemos que hacer es programar el método de nuestro modulo, quedaría algo así:

 

 public void Init(HttpApplication context)
 {
     context.AuthorizeRequest += new EventHandler(OnAuthorizeRequest);
 }
 
 void OnAuthorizeRequest(object sender, EventArgs e)
 {
     HttpContext context = ((HttpApplication)sender).Context;
 
     RouteData routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));
 
     if (routeData != null)
     {
         string controller = routeData.GetRequiredString("controller");
         string action = routeData.GetRequiredString("action");
 
         if (!EstaAutorizado(controller, action, context.User))
         {
             /// 401 es el codigo de resultado HTTP para acceso no autorizado
             context.Response.StatusCode = 401; 
             context.Response.End();
         }
     }
 }

 

En el código vemos cómo recuperar la información de la ruta para saber que método estamos ejecutando, y luego definir que si no se encuentra autorizado el usuario, le responderemos con un código HTTP estándar: 401 (lista de códigos)

De esta forma dejamos actuar al framework de asp.net que ya tiene resuelto el enganche y resolución del caso. Por ejemplo, MVC viene configurado por defecto que ante un error de autenticación redirija al usuario automáticamente a la página de login:

 

<authentication mode="Forms">
   <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

 

Lo único que nos falta, es recordar agregar el modulo a nuestro web.config para que se ejecute:

<httpModules>
  <add name="MiModulo" type="AutorizacionMVCHttpModule.Models.MiModulo"/>
</httpModules>

 

Listo! Con muy pocas líneas hemos resuelto de manera elegante y limpia un requerimiento esencial y controversial en la mayoría de nuestros proyectos.

Les dejo el código fuente de ejemplo para que lo puedan descargar y ver implementado
Download AutorizacionMVCHttpModule.zip (262,77 kb)

Happy coding!

Tags: , , , , ,

.NET | ASP.NET | Desarrollo Web

Clonando Twitter de 0 a 100% con Asp.NET MVC

por Alejandra Federico  2. diciembre 2010

El 15 de Diciembre se realizará una charla en el MUG, sobre "Clonando Twitter de 0 a 100% con Asp.NET MVC"

Aqui les dejo los datos del evento:

Título: Clonando Twitter de 0 a 100% con Asp.NET MVC

Oradores: Andrés Stang (Vemn Sistemas) / Fernando Abuin (Vemn Sistemas)
Horario: 18:30 a 21:30 hs.
Dirección: Auditorio MUG - Rivadavia 1479 1º A , Ciudad de Buenos Aires


Descripción: Utilizando Asp.NET como plataforma, y apoyados en MVC, Entity Framework y JQuery entre otros, se mostrará el armado de una aplicación compleja como lo es Twitter de forma completa y práctica. Tanto desarrolladores con experiencia como aquellos que están haciendo sus comienzos en la plataforma podrán tener una visión de los requerimientos y componentes que hacen falta para la construcción de una aplicación funcional. Se propone una reunión abierta y dinámica donde los asistentes puedan participar tanto en propuestas como en consultas.

Tags:

ASP.NET

Acerca de los Autores

Este es el blog del equipo de VEMN SA 
Presentaremos temas que nos parezcan de interés sobre tecnología .NET, Procesos y Metodologías y todo aquello relacionado con el proceso de desarrollo de Software

Month List