Anda di halaman 1dari 40

Seguridad en aplicaciones Web con Microsoft ASP.

NET

ndice Descripcin Leccin: descripcin de la seguridad para aplicaciones Web Leccin: trabajar con autenticacin basada en Windows Leccin: trabajar con autenticacin basada en formularios Leccin: descripcin de la autenticacin mediante Microsoft Passport 1 2 14 25 36

Seguridad en aplicaciones Web con Microsoft ASP.NET

Descripcin
Descripcin de la seguridad para aplicaciones Web Trabajar con autenticacin basada en Windows Trabajar con autenticacin basada en formularios Descripcin de la autenticacin de Microsoft Passport

*****************************

Introduccin

La seguridad de las aplicaciones Web es un tema crtico y complejo para los desarrolladores Web. Un sistema seguro requiere una cuidadosa planificacin, y los administradores y desarrolladores de sitios Web deben tener un conocimiento muy claro de las opciones de que disponen cuando securizan sus aplicaciones Web. Microsoft ASP.NET est sincronizado con el .NET Framework e Internet Information Server (IIS) para proporcionar seguridad a las aplicaciones Web. Este mdulo trata en detalle los distintos mtodos de seguridad para las aplicaciones Web.

Objetivos

En este mdulo, aprenderemos a: Describir los mtodos de autenticacin de ASP.NET e IIS. Utilizar la autenticacin basada en Windows para asegurar aplicaciones Web ASP.NET. Utilizar la autenticacin basada en formularios para asegurar aplicaciones Web ASP.NET. Utilizar Microsoft Passport para asegurar aplicaciones Web ASP.NET.

Seguridad en aplicaciones Web con Microsoft ASP.NET

Leccin: descripcin de la seguridad para aplicaciones Web


Autenticacin frente a autorizacin Cules son los mtodos de autenticacin de ASP.NET? Multimedia: mtodos de autenticacin de ASP.NET Comparacin de los mtodos de autenticacin de ASP.NET Cules son los mecanismos de autenticacin de IIS? Demostracin: uso de los mecanismos de autenticacin de IIS Qu es Secure Sockets Layer?

*****************************

Introduccin

Por definicin, las aplicaciones Web ofrecen a los usuarios acceso a un recurso centralizado, el servidor Web, y, a travs de l, acceso a servidores de bases de datos. Conociendo e implementando medidas de seguridad adecuadas para nuestra aplicacin Web, podemos proteger nuestros propios recursos, adems de proporcionar un entorno seguro en el que los usuarios trabajen cmodamente. En esta leccin, se describen distintos conceptos de seguridad: autenticacin, autorizacin y mecanismos de autenticacin de IIS. Tambin estudiaremos el protocolo Secure Sockets Layer (SSL).

Objetivos de la leccin

En esta leccin, aprenderemos a: Describir los dos conceptos fundamentales de seguridad para asegurar una aplicacin Web. Describir los tres mtodos de autenticacin de ASP.NET. Distinguir entre los tres mtodos de autenticacin de ASP.NET. Describir los cuatro mecanismos de autenticacin de IIS. Describir SSL.

Seguridad en aplicaciones Web con Microsoft ASP.NET

Autenticacin frente a autorizacin


Autenticacin Acepta credenciales de un usuario Valida las credenciales Autorizacin En funcin de las credenciales de autenticacin suministradas, determina el derecho de acceso a un recurso Puede asignarse por nombre de usuario o por rol

*****************************

Introduccin

Para poder empezar a trabajar con temas relacionados con la seguridad, debemos estar familiarizados con los dos conceptos fundamentales de seguridad para las aplicaciones Web: Autenticacin Autorizacin

Autenticacin

La autenticacin es el proceso de obtener las credenciales de identificacin de un usuario, como un nombre y una contrasea, y validar esas credenciales consultando a alguna autoridad, como una base de datos. Si las credenciales son vlidas, la entidad que las ha presentado se considera una identidad autenticada. Por ejemplo, todos los usuarios deben proporcionar un nombre de usuario y una contrasea cada vez que inician sesin en una red. Estas credenciales se validan consultndolas a una autoridad, como una base de datos o un servidor de dominio basado en Microsoft Windows.

Autorizacin

Despus de que una identidad haya sido autenticada, el proceso de autorizacin determina si esa identidad tiene acceso a un recurso especfico. El proceso de autorizacin limita los derechos de acceso concediendo o denegando permisos especficos a una identidad autenticada. Por ejemplo, podemos autorizar al usuario Ricardo Heras para que acceda a la impresora de color, pero denegar el acceso al usuario Brbara Gmez. De modo similar, podemos autorizar nicamente a los usuarios del grupo Multimedia el acceso a la impresora de color y denegar el acceso al resto de usuarios.

Seguridad en aplicaciones Web con Microsoft ASP.NET

Cules son los mtodos de autenticacin de ASP.NET?


Autenticacin basada en Windows Depende del sistema operativo Windows y de IIS El usuario solicita una pgina Web segura y la solicitud pasa por IIS Una vez IIS verifica las credenciales, se devuelve la pgina Web segura Autenticacin basada en formularios Las solicitudes no autenticadas son redirigidas a un formulario HTML El usuario proporciona credenciales y enva el formulario HTML Una vez verificadas las credenciales, se suministra una cookie de autenticacin Autenticacin mediante Microsoft Passport Servicio de autenticacin centralizado que ofrece una nica opcin de inicio de sesin Microsoft Passport es un Servicio Web XML

*****************************

Introduccin

ASP.NET implementa la autenticacin mediante mtodos de autenticacin. Los mtodos de autenticacin de ASP.NET contienen el cdigo necesario para autenticar las credenciales de usuario. ASP.NET soporta tres tipos de mtodos de autenticacin: Autenticacin basada en Windows Autenticacin basada en formularios Autenticacin mediante Microsoft Passport

Mtodos de autenticacin

Autenticacin basada en Windows

En la autenticacin basada en Windows, la aplicacin Web ASP.NET depende del sistema operativo Windows para autenticar al usuario. ASP.NET utiliza la autenticacin basada en Windows conjuntamente con la autenticacin de IIS. En la autenticacin basada en Windows, el usuario solicita una pgina Web segura de la aplicacin Web, y la solicitud pasa por IIS. Si las credenciales del usuario no coinciden con las de un usuario autorizado, IIS rechaza la solicitud. A continuacin, el usuario debe introducir su nombre y contrasea en el formulario de inicio de sesin. IIS verifica de nuevo las credenciales. Si son correctas, IIS dirige la solicitud original a la aplicacin Web y el usuario recibe la pgina Web segura.

Autenticacin basada en formularios

La autenticacin basada en formularios hace referencia a un sistema donde solicitudes no autenticadas son redirigidas a un formulario Hypertext Markup Language (HTML) utilizando la redireccin en el lado del cliente Hypertext Transfer Protocol (HTTP). El usuario proporciona las credenciales y enva el formulario. Si la aplicacin valida las credenciales en el formulario, el sistema suministra al usuario una cookie de autenticacin. Las solicitudes subsiguientes

Seguridad en aplicaciones Web con Microsoft ASP.NET

del usuario se emiten con la cookie de autenticacin en el encabezado de la solicitud, y el usuario es autenticado en base a dicho encabezado. Autenticacin mediante Microsoft Passport La autenticacin mediante Passport consiste en un servicio de autenticacin centralizado, proporcionado por Microsoft, que ofrece una nica opcin de inicio de sesin y unos servicios con un perfil bsico a los sitios suscritos. Los usuarios que se registren utilizando Passport estarn autenticados para acceder a sitios Web utilizando una nica cuenta Passport. Microsoft Passport es un Servicio Web XML, y es una parte esencial de Microsoft .NET.

Seguridad en aplicaciones Web con Microsoft ASP.NET

Comparacin de los mtodos de autenticacin de ASP.NET


Mtodo
Autenticacin basada en Windows Autenticacin basada en formularios

Ventajas
Utiliza infraestructura Windows existente Controla el acceso a informacin confidencial Adecuada para aplicaciones de Internet Soporta todo tipo de clientes Inicio de sesin nico para muchos sitios de Internet No es necesario mantener una base de datos para almacenar informacin del usuario Permite a los desarrolladores personalizar el aspecto de la pgina de inscripcin

Inconvenientes
No apropiado para la mayora de aplicaciones de Internet Basada en cookies

Autenticacin mediante Microsoft Passport

Basada en cookies Implica cuota

*****************************

Introduccin

Cada uno de los tres mtodos de autenticacin que soporta ASP.NET (basado en Windows, basado en formularios y Microsoft Passport) es adecuado para situaciones especficas. Cada mtodo tiene diversas ventajas e inconvenientes. La autenticacin basada en Windows utiliza la infraestructura de Windows existente y, por tanto, es ms adecuado en situaciones en las que se dispone de un nmero fijo de usuarios con cuentas de usuario Windows existentes. Dos ejemplos de situaciones de este tipo son: El desarrollo de una intranet para una organizacin. Es muy probable que la organizacin disponga de cuentas de usuario Windows configuradas para cada empleado. El control del acceso a informacin confidencial. Por ejemplo, los usuarios del grupo de Recursos Humanos de una empresa pueden acceder a directorios que contienen currculos de empleados e informacin de salarios. Podemos utilizar la autenticacin basada en Windows para evitar que los empleados de otros grupos, como el grupo de Desarrolladores, accedan a estos documentos confidenciales. El inconveniente de la autenticacin basada en Windows es que no es adecuada para la mayora de aplicaciones de Internet. Por ejemplo, si estamos generando un sistema pblico de registro de usuarios y contraseas, la autenticacin basada en Windows no es una buena opcin de autenticacin. Con la autenticacin basada en Windows, debe configurarse una cuenta de usuario de Windows vlida por cada usuario que acceda a una pgina restringida. El proceso de agregar nuevas cuentas de usuario no puede automatizarse fcilmente.

Autenticacin basada en Windows

Seguridad en aplicaciones Web con Microsoft ASP.NET

Autenticacin basada en formularios

La autenticacin basada en formularios es una buena solucin si se desea configurar un sistema personalizado de registro de usuarios para un sitio Web. La ventaja de este tipo de autenticacin es que nos permite almacenar nombres de usuario y contraseas en el mecanismo de almacenamiento que deseemos, ya sea el archivo web.config, un archivo Extensible Markup Language (XML) o la tabla en una base de datos. La autenticacin basada en formularios depende de cookies para determinar la identidad del usuario. Una vez habilitada la autenticacin basada en formularios, el usuario no puede acceder a la pgina solicitada a menos que se encuentre en el cliente una cookie especfica. Si esta cookie no est, o si no es vlida, ASP.NET rechaza la solicitud y devuelve una pgina de inicio de sesin.

Autenticacin mediante Microsoft Passport

La autenticacin mediante Microsoft Passport tiene varias ventajas, incluyendo: Permite a los usuarios utilizar el mismo nombre de usuario y contrasea para iniciar sesin en numerosos sitios Web; por tanto, es menos probable que los usuarios olviden sus contraseas. Por ejemplo, tanto Microsoft Hotmail como Microsoft MSN utilizan Microsoft Passport para autenticar usuarios. No es necesario configurar y mantener una base de datos para almacenar la informacin de registro. Microsoft se encarga de realizar todo el mantenimiento. Proporciona opciones para personalizar el aspecto de las pginas de registro e inicio de sesin mediante plantillas. El uso de la autenticacin mediante Microsoft Passport tiene dos inconvenientes. En primer lugar, existe una cuota de suscripcin por utilizar el servicio Microsoft Passport en desarrollo. En segundo lugar, la autenticacin Microsoft Passport est basada en cookies.

Seguridad en aplicaciones Web con Microsoft ASP.NET

Cules son los mecanismos de autenticacin de IIS?


Mecanismos
Acceso annimo

Nivel de seguridad
Ninguno Bajo (Medio con SSL)

Descripcin Descripci
No se produce autenticacin El cliente enva nombre de usuario y contrasea como texto claro Puede encriptarse utilizando SSL Parte de la especificacin HTTP y soportado por la mayora de exploradores Enva la informacin en un hash (o digest) codificado Requiere Internet Explorer 5 o superior Requiere Active Directory Utiliza NTLM o Kerberos Generalmente adecuado para intranets, no Internet No funciona a travs de muchos cortafuegos

Autenticacin bsica

Autenticacin implcita Seguridad integrada de Windows


*****************************

Medio

Alto

Introduccin

Para poder utilizar la autenticacin basada en Windows, debemos configurar antes el servidor Web IIS. Cuando un usuario solicita una pgina que requiere autorizacin, el usuario debe ser autenticado a travs de IIS. IIS proporciona varios mecanismos que pueden utilizarse para establecer autenticacin, incluyendo: Acceso annimo Autenticacin bsica Autenticacin implcita Seguridad integrada de Windows

Acceso annimo

Para aplicaciones Web en las que usuarios desconocidos realizan solicitudes, normalmente aplicaciones Web pblicas, IIS soporta un usuario annimo, un usuario que no dispone de credenciales de autenticacin. Cuando IIS recibe una solicitud de un usuario annimo, IIS hace la solicitud a Windows utilizando la cuenta predeterminada IUSR_nombreequipo.

Nota La cuenta predeterminada IUSR_ nombreequipo puede modificarse mediante el complemento de administracin de IIS. Autenticacin bsica
IIS tambin soporta un modelo de autenticacin bsica. En la autenticacin bsica, se solicita a los usuarios sin credenciales que suministren un nombre de usuario y una contrasea. Esta informacin se devuelve a IIS, y a partir de entonces est disponible para la aplicacin Web. La ventaja de la autenticacin bsica es que forma parte de la especificacin HTTP y est soportada por la mayora de navegadores. La autenticacin bsica proporciona un modo til para ofrecer acceso restringido a una aplicacin Web pblica. Sin embargo, debido a que el usuario pasa un nombre de usuario y una contrasea a IIS en forma de texto claro, la autenticacin bsica no ofrece un

Seguridad en aplicaciones Web con Microsoft ASP.NET

nivel alto de seguridad. Para incrementarlo, se utiliza SSL para encriptar nombres de usuario y contraseas cuando se transmiten a travs de la red.

Autenticacin implcita

La autenticacin implcita es similar a la autenticacin bsica, pero utiliza la encriptacin para enviar informacin del usuario al servidor. Si el acceso annimo est deshabilitado, se pide a los usuarios sus credenciales (informacin de inicio de sesin). El navegador combina esta informacin de inicio de sesin con el resto de informacin almacenada en el cliente, y enva al servidor un hash codificado denominado hash MD5 (o Message Digest). El servidor ya dispone de una copia de esta informacin y recrea los destalles originales desde su propio hash y autentica el usuario. Este mecanismo nicamente funciona con Microsoft Internet Explorer 5 y superior, pero pasa a travs de cortafuegos, servidores proxy e Internet. Sin embargo, la autenticacin implcita nicamente funciona con cuentas de dominio dadas de alta en el servicio de directorios Active Directory.

Nota Para ms informacin sobre la configuracin de las cuentas de dominio de Active Directory para permitir la autenticacin implcita, consultar la documentacin de IIS. Seguridad integrada de Windows
Si el usuario que realiza la solicitud ya ha sido autenticado en una red basada en Windows, IIS puede pasar las credenciales del usuario cuando solicite acceso a un recurso. Las credenciales no incluyen el nombre de usuario y la contrasea, nicamente un token encriptado que indica el estado de seguridad del usuario. La seguridad integrada de Windows funciona con Microsoft Windows NTLM (Windows NT Local Area Network (LAN) Manager) o con Kerberos. La seguridad integrada de Windows tambin utiliza un algoritmo hash para codificar y decodificar las credenciales del usuario. Sin embargo, la seguridad integrada de Windows no resulta prctica en las aplicaciones Web que deben atravesar cortafuegos. Por tanto, es ms adecuada en escenarios de intranets corporativas.

Nota Cuando se configura IIS, se pueden utilizar mltiples mecanismos de autenticacin de IIS. Se puede seleccionar el acceso annimo u otros mtodos, como la autenticacin bsica, implcita o integrada de Windows. Si se utilizan mltiples mecanismos de autenticacin de IIS, y si la autenticacin annima falla, el servidor Web intentar utilizar la autenticacin bsica, implcita o integrada de Windows, dependiendo de los mtodos que estn seleccionados.

10

Seguridad en aplicaciones Web con Microsoft ASP.NET

Demostracin: uso de los mecanismos de autenticacin de IIS


Hacer clic con el botn derecho en Mod16 y hacer clic en Propiedades Hacer clic en la pestaa Seguridad de directorios Hacer clic en Modificar Mostrar los mtodos de autenticacin

*****************************

Introduccin

En esta demostracin, visualizaremos el cuadro de dilogo que se utiliza par configurar los mecanismos de autenticacin de IIS. Ejecutar la demostracin 1. En el men Inicio, hacer clic con el botn derecho en Mi PC y hacer clic en Administrar. 2. En la consola Administracin de equipos, expandir Servicios y aplicaciones, expandir Internet Information Services, expandir Sitios Web, y expandir Sitio Web predeterminado. 3. Hacer clic con el botn derecho en la aplicacin Web Pract14VB o Pract14CS y hacer clic en Propiedades. 4. En el cuadro de dilogo Pract14VB o Propiedades de Pract14CS, en la ficha Seguridad de directorios, en la seccin Control de autenticacin y acceso annimo, hacer clic en Modificar. 5. Mostrar los mtodos de autenticacin disponibles.

Seguridad en aplicaciones Web con Microsoft ASP.NET

11

Qu es Secure Sockets Layer?


SSL es un protocolo que se utiliza para transmitir datos de forma segura a travs de una red. SSL securiza los datos mediante: Encriptacin de datos
- Asegura que los datos enviados son ledos nicamente por un servidor destinatario seguro - Asegura que los datos se envan al servidor correcto - Utiliza los certificados de servidor y de cliente - Protege la integridad de los datos - Incluye un cdigo de autenticacin de mensajes que detecta si un mensaje ha sido o no modificado

Autenticacin de servidor Integridad de los datos

Utiliza HTTPS (Hypertext Transfer Protocol Secure) para recuperar una pgina Web ASP.NET

*****************************

Introduccin

IIS proporciona a los usuarios un canal de comunicacin seguro al soportar el protocolo SSL y la encriptacin RSA Data Security tanto en el servidor como en el cliente.

Nota RSA son las siglas de Rivest, Shamir y Adleman, los nombres de los cientficos que crearon este algoritmo. Qu es SSL?
SSL es un protocolo que se utiliza para transmitir datos de modo seguro a travs de una red. SSL securiza la comunicacin de datos mediante: Encriptacin de datos Autenticacin de servidor Integridad de datos

Encriptacin de datos

Cuando se introduce informacin en un formulario HTML y se enva a un sitio Web, la informacin se transmite desde el navegador al servidor del sitio Web. En el proceso de transmisin de la informacin, los datos introducidos en el formulario pueden ser interceptados y ledos. SSL encripta la informacin transmitida entre un servidor Web y un navegador Web. La informacin se encripta utilizando un algoritmo pblicamente conocido y una clave de sesin. El servidor Web genera una clave pblica que puede utilizar cualquier cliente. El cliente genera una clave de sesin y utiliza la clave pblica para encriptarla antes de enviarla al servidor Web. Los datos se transmiten utilizando esta clave de sesin.

12

Seguridad en aplicaciones Web con Microsoft ASP.NET

El nmero de bits de la clave de sesin determina la potencia de la encriptacin. IIS soporta claves de sesin de 40 bits y claves de sesin ms potentes de 128 bits.

Seguridad en aplicaciones Web con Microsoft ASP.NET

13

La siguiente tabla muestra las ventajas e inconvenientes del uso de claves de sesin de 40 bits y de 128 bits.
Clave de sesin Clave de sesin de 40 bits Clave de sesin de 128 bits Ventaja La comunicacin es mucho ms rpida. Muy segura, los mensajes encriptados con clave de sesin de 128 bits se consideran inquebrantables. Inconveniente No es muy segura, los mensajes pueden ser modificados. La comunicacin es bastante ms lenta; cuanto ms larga es la clave, ms trabajo deben realizar el servidor y el navegador para encriptar y desencriptar el mensaje.

Autenticacin de servidor

La autenticacin de servidor garantiza que los datos se envan al servidor correcto y que ste es seguro. Por ejemplo, podra ocurrir que visitramos un sitio Web que fuera muy parecido a un sitio Web de comercio electrnico al que accedisemos frecuentemente. Podra parecer igual que el sitio Web que conocemos, y proporcionaramos la informacin de nuestra tarjeta de crdito para adquirir un artculo. Sin embargo, alguien que deseara engaarnos podra crear un sitio Web idntico al sitio Web de comercio electrnico autntico y robar la informacin de nuestra tarjeta de crdito.

Certificado de servidor

Para evitar que un sitio Web se haga pasar por otro, utilizamos SSL para autenticar sitios Web. Cuando instalamos SSL en nuestro servidor Web, debemos instalar un certificado de servidor. El certificado de servidor contiene informacin sobre nuestra organizacin, nuestro sitio Web y el emisor del certificado. Para funcionar como un ID digital, un certificado de servidor debe estar firmado por una autoridad de certificacin. La autoridad de certificacin acta como un tercero de confianza que verifica la identidad de un sitio Web para sus usuarios.

Certificado de cliente Integridad de datos

SSL tambin soporta certificados de cliente. Los certificados de cliente se utilizan para autenticar navegadores Web en lugar de servidores Web. SSL protege la integridad de los datos cuando viajan entre el servidor Web y los navegadores Web. SSL garantiza que los datos recibidos por el servidor de destino no han sufrido ninguna modificacin. Cuando los mensajes se transmiten con SSL, incluyen un cdigo de autenticacin de mensaje. Este cdigo detecta si el mensaje ha sido modificado.

Uso de SSL en pginas ASP.NET

Despus de configurar nuestro servidor para que utilice SSL, podemos solicitar cualquier pgina de nuestro sitio Web utilizando una conexin segura. Para recuperar una pgina Web, SSL utiliza Hypertext Transfer Protocol Secure (HTTPS). Por ejemplo, una direccin con la forma https://www.nuestrodominio.com/login.aspx en lugar de http://www. nuestrodominio.com/pagina.aspx. Esto funciona para cualquier pgina de nuestro sitio Web.

Nota ASP.NET proporciona la propiedad Request.IsSecureConnection que nos permite determinar si nos encontramos en una conexin https segura.

14

Seguridad en aplicaciones Web con Microsoft ASP.NET

Leccin: trabajar con autenticacin basada en Windows


Cmo habilitar la autenticacin basada en Windows Leer informacin del usuario Demostracin: uso de la autenticacin basada en Windows

*****************************

Introduccin

La autenticacin basada en Windows debera utilizarse para securizar las aplicaciones Web cuando sabemos qu usuarios accedern a nuestro sitio Web. En esta leccin, estudiaremos el procedimiento para utilizar la autenticacin basada en Windows para securizar nuestras aplicaciones Web.

Objetivos de la leccin

En esta leccin, aprenderemos a: Utilizar la autenticacin basada en Windows para securizar aplicaciones Web. Leer la identidad del usuario que est autenticado utilizando la autenticacin basada en Windows.

Seguridad en aplicaciones Web con Microsoft ASP.NET

15

Cmo habilitar la autenticacin basada en Windows


1 1

Configurar IIS para utilizar uno o varios de los siguientes mecanismos de autenticacin : Bsica Implcita Seguridad de Windows integrada Establecer la autenticacin basada en Windows en Web.config

2 2

<system.web> <system.web> <Authentication mode="Windows" /> <Authentication mode="Windows" /> </system.web> </system.web>

*****************************

Introduccin

El proceso de securizar aplicaciones Web mediante la autenticacin basada en Windows requiere cuatro pasos: 1. Configurar IIS. 2. Configurar la autenticacin en Web.config. 3. Configurar la autorizacin en Web.config. 4. IIS solicita informacin de inicio de sesin a los usuarios.

Configurar IIS

El primer paso para securizar aplicaciones Web utilizando la autenticacin basada en Windows implica configurar IIS utilizando uno o varios de los tres mecanismos de autenticacin: Autenticacin bsica Autenticacin implcita Seguridad integrada de Windows

Nota Normalmente, se habilita la autenticacin bsica o la seguridad integrada de Windows. Si deseamos que nuestra aplicacin Web sea compatible con otros navegadores, deberamos utilizar la autenticacin bsica. Si no estamos utilizando un cortafuegos o servidor proxy, podemos utilizar la seguridad integrada de Windows.

16

Seguridad en aplicaciones Web con Microsoft ASP.NET

Configurar la autenticacin

El segundo paso para securizar aplicaciones Web utilizando la autenticacin basada en Windows es establecer la seguridad de ASP.NET a autenticacin basada en Windows en el archivo Web.config. Las opciones de configuracin de seguridad en Web.config se incluyen en las secciones <authentication>, <authorization> e <identity>. Establecer el mtodo de autenticacin a Windows para la aplicacin en una subseccin <authentication> de la seccin <system.web> en Web.config, como muestra el siguiente ejemplo:
<system.web> <authentication mode="Windows" /> </system.web>

Seguridad en aplicaciones Web con Microsoft ASP.NET

17

Cmo habilitar la autenticacin basada en Windows (continuacin)


3 3

Establecer la autorizacin en Web.config

<location path="ShoppingCart.aspx"> <location path="ShoppingCart.aspx"> <system.web> <system.web> <Authorization> <Authorization> <deny users="?"/> <deny users="?"/> </Authorization> </Authorization> </system.web> </system.web> </location> </location>
4 4

Cuando los usuarios acceden al formulario Web Form, IIS solicita informacin de inicio de sesin

*****************************

Introduccin

Securizar las aplicaciones Web utilizando la autenticacin basada en Windows es un proceso de cuatro pasos: 1. Configurar IIS. 2. Establecer la autenticacin en Web.config. 3. Establecer la autorizacin en Web.config. 4. IIS solicita informacin de inicio de sesin a los usuarios. Hemos estudiado los dos primeros pasos en el apartado anterior. Esta seccin explica los dos ltimos pasos.

Configurar la autorizacin

Para indicar que slo algunas pginas especficas son seguras, debemos crear una seccin <location> con subsecciones <system.web> y <authorization> para cada pgina segura de nuestra aplicacin Web:
<location path="ShoppingCart.aspx"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location>

Las opciones de configuracin que contiene la seccin <location> sern dirigidas al archivo o directorio que se indica en el atributo path. La seccin <configuration> puede tener mltiples secciones <location>.

Nota La seccin <location> puede ser un formulario Web Form ASP.NET o una carpeta. Si se especifica un nombre de carpeta, todas las subcarpetas bajo ella sern seguras. Para asegurar mltiples formularios Web Forms o carpetas, se utilizarn mltiples secciones <location>.

18

Seguridad en aplicaciones Web con Microsoft ASP.NET

En la seccin <system.web>, crear una subseccin <authorization> para especificar qu tipo de autorizacin se impondr. Crear las etiquetas <allow> o <deny> para permitir o denegar a los usuarios el acceso a una pgina. En estas etiquetas, ? indica usuarios annimos y * significa todos los usuarios. Por ejemplo, el siguiente cdigo deniega el acceso a todos los usuarios annimos:
<authorization> <deny users="?" /> </authorization>

El siguiente cdigo permite al usuario Mary acceder a una pgina:


<authorization> <allow users="Mary" /> </authorization>

Nota No es recomendable autorizar a usuarios individualmente, ya que este proceso puede revelar informacin confidencial en caso de que el archivo Web.config sea ledo. Adems, codificar directamente nombres de usuario en el archivo Web.config no es un planteamiento flexible ya que no permite modificar esta informacin programticamente en tiempo de ejecucin. La codificacin directa de usuarios en el archivo Web.config resulta adecuado slo para realizar pruebas.
El siguiente cdigo deniega a todos los usuarios annimos el acceso a la pgina ShoppingCart.aspx:
<location path="ShoppingCart.aspx"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location>

Tras especificar el modo de autenticacin, debemos indicar que toda la aplicacin Web necesita autorizacin, o especificar qu pginas son seguras y, por tanto, que requieren autorizacin. Para indicar que toda la aplicacin es segura, crear una seccin <authorization> en la seccin <system.web>, como muestra el siguiente cdigo de ejemplo:
<system.web> <authorization> <deny users="?" /> </authorization> </system.web>

Seguridad en aplicaciones Web con Microsoft ASP.NET

19

Utilizamos el elemento <identity> para habilitar la impersonalizacin. La impersonalizacin permite al servidor ejecutar cdigo bajo el contexto de seguridad de una entidad solicitante o como un usuario annimo. En ASP.NET, la impersonalizacin es opcional, y est deshabilitada de forma predeterminada. El elemento <identity> debe estar bajo la seccin <system.web> en el archivo Web.config o Machine.config. El siguiente cdigo muestra la sintaxis que se utiliza con el elemento <identity>:
<identity impersonate="true|false" username="username" password="password" />

En el cdigo anterior, los atributos username y password especifican las credenciales a utilizar si impersonate est establecido a true. Se utiliza una cuenta especial de Windows denominada ASPNET si impersonate est establecido a false, el valor predeterminado.

IIS solicita informacin de inicio de sesin a los usuarios

El ltimo paso del proceso para habilitar la autenticacin basada en Windows se produce cuando los usuarios intentan acceder a un formulario Web Form desde nuestra aplicacin Web e IIS solicita informacin de inicio de sesin al usuario. El usuario debe proporcionar su nombre de usuario y contrasea. Si IIS aprueba las credenciales del usuario, ste obtiene acceso a la pgina Web segura solicitada.

20

Seguridad en aplicaciones Web con Microsoft ASP.NET

Leer informacin del usuario


Tras la autenticacin, el servidor Web puede leer la identidad del usuario
lblAuthUser.Text = User.Identity.Name lblAuthUser.Text = User.Identity.Name lblAuthType.Text = User.Identity.AuthenticationType lblAuthType.Text = User.Identity.AuthenticationType lblIsAuth.Text = User.Identity.IsAuthenticated lblIsAuth.Text = User.Identity.IsAuthenticated

lblAuthUser.Text = User.Identity.Name; lblAuthUser.Text = User.Identity.Name; lblAuthType.Text = User.Identity.AuthenticationType; lblAuthType.Text = User.Identity.AuthenticationType; lblIsAuth.Text = User.Identity.IsAuthenticated; lblIsAuth.Text = User.Identity.IsAuthenticated;

*****************************

Introduccin

Una vez finalizado el proceso de autenticacin basada en Windows, el servidor Web puede leer la identidad del usuario desde cualquier pgina de la aplicacin Web. El servidor Web puede leer la identidad del usuario utilizando User.Identity.Name. El servidor Web tambin puede identificar el mecanismo de autenticacin de IIS que se utiliza para autenticar al usuario utilizando User.Identity.AuthenticationType. Adems, el servidor Web puede comprobar si el usuario est autenticado utilizando User.Identity.IsAuthenticated. El siguiente cdigo de ejemplo muestra cmo se permite al servidor Web leer la identidad del usuario:

Visual Basic .NET

lblAuthUser.Text = User.Identity.Name lblAuthType.Text = User.Identity.AuthenticationType lblIsAuth.Text = User.Identity.IsAuthenticated lblAuthUser.Text = User.Identity.Name; lblAuthType.Text = User.Identity.AuthenticationType; lblIsAuth.Text = User.Identity.IsAuthenticated;

C#

Nota User.Identity es un objeto de la clase WindowsIdentity.

Seguridad en aplicaciones Web con Microsoft ASP.NET

21

Demostracin: uso de la autenticacin basada en Windows


Abrir IIS y configurarlo nicamente con autenticacin annima Crear un nuevo usuario en el equipo local Abrir Web.config y configurarlo para soportar autenticacin y autorizacin Ejecutar la aplicacin Web ASP.NET segura Los estudiantes pueden acceder a la aplicacin Web ASP.NET segura en el equipo del instructor

*****************************

Introduccin

En esta demostracin, veremos cmo configurar IIS para utilizar la autenticacin basada en Windows con autenticacin bsica de IIS. Seguidamente, veremos cmo crear un nuevo usuario en el servidor local, y cmo configurar la autenticacin y autorizacin en Web.config. A continuacin, veremos algunas demostraciones de acceso a pginas seguras y no seguras. Finalmente, aprenderemos a conectarnos a una pgina segura en el equipo del instructor. Los archivos para esta demostracin se encuentran en el proyecto Pract14VB o Pract14CS dentro del fichero demos14.zip. Ejecutar la demostracin

Configurar IIS con autenticacin bsica

1. Hacer clic con el botn derecho en Mi PC y hacer clic en Administrar. 2. Expandir Servicios y aplicaciones, expandir Internet Information Services, y hacer clic en Sitios Web. 3. Hacer clic con el botn derecho en Sitio Web predeterminado y hacer clic en Propiedades. 4. Hacer clic en la ficha Seguridad de directorios, y clic en Modificar para abrir el cuadro de dilogo Mtodos de autenticacin de IIS. 5. Seleccionar la casilla de verificacin de autenticacin bsica (la contrasea se enva en texto claro) y hacer clic en S en el cuadro de dilogo Administrador de Servicios de Internet.

Nota Comprobar que est seleccionada la casilla de verificacin de Acceso

22

Seguridad en aplicaciones Web con Microsoft ASP.NET

annimo. Verificar que no estn seleccionadas las casillas de verificacin de Autenticacin implcita para servidores de dominios Windows y Autenticacin integrada de Windows. 6. Escribir nombreequipo en el campo Dominio predeterminado, ya que esta demostracin se realizar con una cuenta local creada en este equipo. 7. Hacer clic en Aceptar para cerrar el cuadro de dilogo Mtodos de autenticacin de IIS. 8. Hacer clic en Aceptar para cerrar el cuadro de dilogo Propiedades del sitio Web predeterminado. En el cuadro de dilogo Herencia omitida, hacer clic en Aceptar.

Crear un nuevo usuario en el equipo local

9. En la consola Administracin de equipos, expandir Herramientas del sistema, y expandir Usuarios y grupos locales. 10. Hacer clic con el botn derecho en la carpeta Usuarios y clic en Nuevo usuario: Introducir la siguiente informacin en el cuadro de dilogo Nuevo usuario.
Campo Nombre de usuario Nombre completo Descripcin Contrasea Confirmar contrasea Valor someone someone Cuenta de demostracin de someone Secreto1 Secreto1

a. Desactivar la casilla de verificacin de El usuario debe cambiar la contrasea en el siguiente inicio de sesin. b. Seleccionar la casilla de verificacin de El usuario no puede cambiar la contrasea. c. Hacer clic en Crear y clic en Cerrar. En el lado derecho de la ventana del cuadro de dilogo Administracin de equipos, debera aparecer el usuario someone.

Mostrar la configuracin de seguridad en el archivo Web.config

11. Abrir el proyecto Pract14VB o Pract14CS y visualizar el archivo Web.config en Microsoft Visual Studio .NET. Una seccin <authentication> est configurada con autenticacin basada en Windows. Son necesarias dos secciones <location> para securizar dos pginas: SecurePageDemo1.aspx y SecurePageDemo2.aspx. Con la configuracin actual de IIS, si un usuario intenta acceder a una de estas pginas, se utilizar la autenticacin bsica. Si un usuario intenta acceder las otras pginas, se utilizar la autenticacin annima.

Mostrar el nombre y tipo de autenticacin en un formulario Web Form.

12. Abrir la pgina de cdigo subyacente SecurePageDemo1.aspx y explicar el cdigo User.Identity.Name y User.Identity.AuthenticationType.

Note No se requiere ninguna instruccin Imports para utilizar User.Identity.xxx.


13. Generar el proyecto Pract14VB o Pract14CS en la solucin 2310Demos. 14. Abrir un nuevo navegador e ir a:

Seguridad en aplicaciones Web con Microsoft ASP.NET

23

Visual Basic .NET C#

http://localhost/Pract14VB/NonSecurePageDemo.aspx http://localhost/Pract14CS/NonSecurePageDemo.aspx

24

Seguridad en aplicaciones Web con Microsoft ASP.NET

15. Ir a:

Visual Basic .NET C#

http://localhost/Pract14VB/SecurePageDemo1.aspx http://localhost/Pract14CS/SecurePageDemo1.aspx Mostrar que aparece el cuadro de dilogo Connect to localhost. 16. Hacer clic en Cancelar y mostrar que se obtiene un error de servidor porque se deniega el acceso. 17. Ir a:

Visual Basic .NET C#

http://localhost/Pract14VB/SecurePageDemo2.aspx http://localhost/Pract14CS/SecurePageDemo2.aspx Mostrar que tambin aparece el cuadro de dilogo Connect to localhost. 18. Escribir las credenciales Nombre de usuario como someone y Contrasea como Secreto1 y hacer clic en Aceptar. 19. La pgina SecurePageDemo2.aspx debera mostrar el nombre de usuario someone y el tipo de autenticacin bsica. Ahora, podemos acceder a cualquier pgina segura, siempre que no cerremos el navegador. Si cerramos el navegador, deberemos repetir el proceso de autenticacin. 20. Ir a:

Visual Basic .NET C# Los estudiantes acceder al equipo del instructor Visual Basic .NET C#

http://localhost/Pract14VB/SecurePageDemo1.aspx http://localhost/Pract14CS/SecurePageDemo1.aspx Mostrar que esta vez no se solicitan las credenciales. 21. Indicar a los estudiantes que vayan a:

http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx Escribir las credenciales someone y Secreto1 cuando se solicite. Tras introducir las credenciales, los estudiantes deberan poder ver SecurePageDemo1.aspx y SecurePageDemo2.aspx.

Seguridad en aplicaciones Web con Microsoft ASP.NET

25

Leccin: trabajar con autenticacin basada en formularios


Descripcin de la autenticacin basada en formularios Multimedia: autenticacin basada en formularios Cmo habilitar la autenticacin basada en formularios Crear una pgina de inicio de sesin Demostracin: uso de la autenticacin basada en formularios

*****************************

Introduccin

El mtodo de autenticacin que ms se utiliza habitualmente para securizar aplicaciones Web con ASP.NET es la autenticacin basada en formularios. En esta leccin, estudiaremos la arquitectura basada en formularios, y los pasos para habilitar la autenticacin basada en formularios. Tambin estudiaremos cmo configurar la seguridad en Web.config, y crear una pgina de inicio de sesin.

Objetivos de la leccin

En esta leccin, aprenderemos a: Identificar la serie de eventos que tiene lugar durante la autenticacin basada en formularios. Identificar los pasos para habilitar la autenticacin basada en formularios. Configurar autenticacin y autorizacin en un archivo Web.config. Describir cmo crear una pgina de inicio de sesin.

26

Seguridad en aplicaciones Web con Microsoft ASP.NET

Descripcin de la autenticacin basada en formularios


1 1

IIS
No autenticado

2 2

Autenticacin ASP.NET Forms

Autenticado

El cliente solicita pgina

6 6 Acceso denegado
No autenticado

Nombre usuario Alguien Contrasea ***********

4 4 Pgina de inicio
(los usuarios introducen sus credenciales) Autenticado

Autorizado

Enviar Enviar

3 3

Cookie de autenticacin

Autorizado

5 5

7 7

Pgina segura solicitada

*****************************

Introduccin

Cuando un usuario solicita una pgina Web que est protegida por autenticacin basada en formularios, la solicitud debe pasar primero por IIS. Por ello, debemos establecer la autenticacin de IIS a acceso annimo. Establecer IIS a annimo requiere que todas las solicitudes pasen por ASP.NET antes de ser autenticadas. En la autenticacin basada en formularios, se produce la siguiente serie de eventos: 1. Un cliente genera una solicitud de una pgina .aspx protegida. 2. IIS recibe la solicitud y la pasa a ASP.NET. El modo de autenticacin est establecido en acceso annimo y, por ello, la solicitud pasa directamente por IIS. 3. ASP.NET comprueba si la solicitud dispone de una cookie de autenticacin vlida anexa. Si es as, significa que las credenciales del usuario ya han sido confirmadas y que la solicitud se ha examinado para su autorizacin. ASP.NET realiza la verificacin de autorizacin comparando las credenciales que contiene la cookie de autorizacin de la solicitud con las opciones de configuracin de autorizacin del archivo Web.config. Si el usuario es autorizado, se concede el acceso a la pgina segura solicitada. 4. Si la solicitud no tiene ninguna cookie anexa, ASP.NET redirecciona la solicitud a una pgina de inicio de sesin (cuya ruta reside en el archivo de configuracin de la aplicacin), donde el usuario introduce las credenciales requeridas, normalmente un nombre y una contrasea.

Serie de eventos que tienen lugar durante la autenticacin basada en formularios

Seguridad en aplicaciones Web con Microsoft ASP.NET

27

5. El cdigo de la aplicacin en la pgina de inicio de sesin comprueba las credenciales para confirmar su autenticidad y, si son autenticadas, adjunta a la solicitud una cookie que contiene las credenciales. 6. Si la autenticacin falla, la solicitud se devuelve con un mensaje de Acceso denegado. 7. Si el usuario es autenticado, ASP.NET comprueba la autorizacin, como en el paso 3, y puede permitir el acceso a la pgina segura solicitada originalmente o redireccionar la solicitud a otra pgina, dependiendo del diseo de la aplicacin. Por otra parte, ASP.NET puede dirigir la solicitud a un formulario de autorizacin personalizado donde se examinan las credenciales para la autorizacin a la pgina protegida. Normalmente, si la autorizacin falla, la solicitud se devuelve con un mensaje de Acceso denegado.

28

Seguridad en aplicaciones Web con Microsoft ASP.NET

Cmo habilitar la autenticacin basada en formularios


1 Configurar IIS para utilizar autenticacin annima 1 2 Establecer la autenticacin basada en formularios en 2

Web.config

<Authentication mode="Forms" > <Authentication mode="Forms" > <forms name=".namesuffix" <forms name=".namesuffix" loginUrl="login.aspx" /> loginUrl="login.aspx" /> </Authentication> </Authentication>
3 Establecer la autorizacin 3 4 Generar un formulario Web 4

Form de inicio de sesin

*****************************

Introduccin Habilitar la autenticacin basada en formularios Configurar la autenticacin

Para habilitar la autenticacin basada en formularios para nuestra aplicacin Web, debemos realizar los cuatro pasos siguientes: 1. Configurar IIS para utilizar la autenticacin annima, para que el usuario sea autenticado por ASP.NET y no por IIS. 2. Configurar el mtodo de autenticacin basado en formularios (Forms) para la aplicacin en una subseccin <authentication> de la seccin <system.web> en Web.config, como muestra el siguiente ejemplo:
<system.web> <authentication mode="Forms"> <forms name=".namesuffix" loginUrl="login.aspx" /> </authentication> </system.web>

Si se establece el modo de autenticacin en Forms, se debe agregar un elemento <forms> a la seccin <authentication>, como muestra el ejemplo anterior. En la seccin <forms>, se configura la cookie. Establecer el atributo name con el sufijo que utilizarn las cookies y el atributo loginUrl con la URL (Uniform Resource Locator) de la pgina a la que se redirigen las solicitudes no autenticadas.

Configurar la autorizacin

3. Configurar la seccin <authorization> de Web.config. El proceso de configurar la autorizacin para autenticacin basada en formularios es idntico al proceso de la autenticacin basada en Windows. Al configurar la seccin <authorization> en Web.config, podemos denegar o permitir a los usuarios el acceso a nuestra aplicacin Web. Tambin

Seguridad en aplicaciones Web con Microsoft ASP.NET

29

podemos indicar que toda la aplicacin Web requiere autorizacin o especificar qu pginas son seguras y, por tanto, requieren autorizacin.

Generar un formulario Web Form de inicio de sesin

4. Generar un formulario Web Form de inicio de sesin, login.aspx. Login.aspx puede ser una pgina sencilla con dos campos, uno para el nombre de usuario y otro para la contrasea. Login.aspx requiere que los usuarios introduzcan su nombre de usuario y contrasea para establecer autenticacin y poder acceder a nuestra aplicacin Web.

30

Seguridad en aplicaciones Web con Microsoft ASP.NET

Crear una pgina de inicio de sesin


Aadir una referencia a System.Web.Security La pgina de inicio de sesin verifica y examina las credenciales de un usuario
private void cmdLogin_Click(object sender, EventArgs e) private void cmdLogin_Click(object sender, EventArgs e) { { if (login(txtEmail.Text, txtPassword.Text)) if (login(txtEmail.Text, txtPassword.Text)) FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false); FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false); } } Sub cmdLogin_Click(s As Object, e As eventArgs) Sub cmdLogin_Click(s As Object, e As eventArgs) If (login(txtEmail.Text, txtPassword.Text)) If (login(txtEmail.Text, txtPassword.Text)) FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False) FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False) End If End If End Sub End Sub

Leer las credenciales del usuario desde una cookie User.Identity.Name devuelve el valor guardado por FormsAuthentication.RedirectFromLoginPage

*****************************

Introduccin

Durante la autenticacin, todas las solicitudes son redirigidas a la pgina de inicio de sesin especificada en el atributo loginUrl de la etiqueta <forms>. La pgina de inicio de sesin verifica y examina las credenciales de un usuario. Si el modo de autenticacin est establecido a Forms, ASP.NET busca una cookie de autenticacin adjunta a la solicitud de una pgina segura. Si ASP.NET no encuentra la cookie de autenticacin, redirecciona la solicitud a la pgina de inicio de sesin especificada. En la pgina de inicio de sesin, el usuario introduce las credenciales requeridas. La pgina las examina, bien a travs de cdigo especfico de la aplicacin o invocando a FormsAuthentication.Authenticate. Si las credenciales con vlidas, se genera una cookie y el usuario es redirigido a la pgina solicitada originalmente invocando a FormsAuthentication.RedirectFromLoginPage. Sin embargo, si las credenciales no son vlidas, el usuario permanece en la pgina de inicio de sesin y recibe un mensaje que indica que las credenciales de inicio de sesin no son vlidas. El mtodo RedirectFromLoginPage toma dos parmetros: userName, que especifica el nombre del usuario para la autenticacin basada en formularios, y createPersistentCookie. Si el valor de createPersistentCookie es true, una cookie de autenticacin persistente, una cookie escrita en el sistema de archivos cliente, se crea en el equipo del usuario. De lo contrario, se crea una cookie de autenticacin temporal (no persistente).

Cmo funciona una pgina de inicio de sesin?

Seguridad en aplicaciones Web con Microsoft ASP.NET

31

La siguiente tabla muestra una lista todos los mtodos del objeto FormsAuthentication, que pueden utilizarse en el proceso de autenticacin.
Mtodo Authenticate Funcin Dadas las credenciales suministradas, este mtodo intenta validar las credenciales comparndolas con las que contiene el almacn de credenciales configurado. Crea una cookie de autenticacin para un determinado nombre de usuario. La cookie no se establece como parte de la respuesta saliente; por tanto, una aplicacin puede tener un mayor control sobre cmo se emite la cookie. Devuelve la URL redirigida para la solicitud original que ha provocado la redireccin a la pgina de inicio de sesin. Redirige a los usuarios autenticados a la URL solicitada originalmente. Crea un ticket de autenticacin para el userName dado y lo adjunta a la coleccin de cookies de la respuesta saliente. No realiza una redireccin. Dado un usuario autenticado, invocar SignOut elimina el ticket de autenticacin estableciendo un SetCookie con un valor vaco. De este modo, se eliminan las cookies duraderas y las cookies por sesin.

GetAuthCookie

GetRedirectUrl

RedirectFromLoginPage SetAuthCookie

SignOut

Crear una pgina de inicio de sesin

Para poder utilizar la clase FormsAuthentication, deberamos referenciar la biblioteca System.Web.Security utilizando Imports o using. Una pgina de inicio de sesin es simplemente una pgina ASP.NET con un formulario HTML, un botn Submit y un procedimiento de evento Click para el botn Submit. El siguiente es un ejemplo de un formulario en una pgina de inicio de sesin:
<form id="Login" method="post" runat="server"> <P>Email: <asp:TextBox id="txtEmail" runat="server"> </asp:TextBox></P> <P>Password<asp:TextBox id="txtPassword" TextMode="password" runat="server"> </asp:TextBox></P> <P><asp:Button id="cmdLogin" Text="Sign In Now" OnClick="cmdLogin_Click" runat="server"> </asp:Button></P> <P><asp:Label id="lblInfo" runat="server"> </asp:Label></P> </form>

En el procedimiento de evento Click del botn Submit, se valida la informacin que se introduce en el formulario, y si sta es vlida, invocar FormsAuthentication.RedirectFromLoginPage. El mtodo RedirectFromLoginPage emite la cookie y, a continuacin, redirige al usuario a la pgina solicitada originalmente.

32

Seguridad en aplicaciones Web con Microsoft ASP.NET

El siguiente cdigo de ejemplo utiliza una funcin personalizada denominada Login para validar el nombre de usuario y la contrasea, e invoca RedirectFromLoginPage si el nombre de usuario y la contrasea son vlidos:

Visual Basic .NET

Private Sub cmdLogin_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles cmdLogin.Click Dim strCustomerId As String 'Validate User Credenciales strCustomerId = Login(txtEmail.Text, txtPassword.Text) If (strCustomerId <> "") Then FormsAuthentication.RedirectFromLoginPage _ (strCustomerId, False) Else lblInfo.Text = "Invalid Credenciales: Please try again" End If End Sub

C#

private void cmdLogin_Click(object sender, EventArgs e) { string strCustomerId; //Validate User Credenciales strCustomerId = Login(txtEmail.Text, txtPassword.Text); if (strCustomerId != "") { FormsAuthentication.RedirectFromLoginPage (strCustomerId, false); } else { lblInfo.Text = "Invalid Credenciales: Please try again"; } }

Leer credenciales desde cookies

Despus de que un usuario haya sido autenticado, podemos obtener su nombre de usuario programticamente utilizando la propiedad User.Identity.Name. Esta propiedad resulta til para generar una aplicacin que utilice el nombre del usuario como una clave para guardar informacin en una tabla de una base de datos o un recurso del directorio. Tambin podemos identificar dinmicamente el mecanismo de autenticacin (Forms en este caso) utilizando User.Identity.AuthenticationType y ver si el usuario est autenticado utilizando User.Identity.IsAuthenticated. Con la autenticacin basada en formularios, User.Identity es un objeto de la clase FormsIdentity.

Nota Cuando se utiliza la autenticacin basada en formularios, la contrasea que un usuario introduce en la pgina de inicio de sesin se enva a travs de la red en texto claro. Es importante utilizar SSL para encriptar estas contraseas.

Seguridad en aplicaciones Web con Microsoft ASP.NET

33

Demostracin: uso de la autenticacin basada en formularios


Abrir IIS y configurar para autenticacin annima Abrir Web.config y configurarlo para autenticacin y autorizacin Abrir la pgina de inicio de sesin y mostrar el cdigo Ejecutar la aplicacin Web ASP.NET Los estudiantes pueden acceder a la aplicacin Web ASP.NET segura en el equipo del instructor

*****************************

Introduccin

En esta demostracin, veremos cmo configurar IIS para utilizar la autenticacin basada en formularios con autenticacin annima; a continuacin, veremos cmo configurar la autenticacin y autorizacin en el archivo Web.config. Veremos cmo funciona la pgina de inicio de sesin, y algunas demostraciones de acceso a pginas seguras y a pginas no seguras. Finalmente, aprenderemos a conectar a una pgina segura en el equipo del instructor. Los archivos para demostracin se encuentran en el proyecto Pract14VB o Mob16CS de la solucin 2310Demos. Ejecutar la demostracin

Configurar IIS para acceso annimo

1. Hacer clic con el botn derecho en Mi PC y clic en Administrar. 2. Ir a Servicios y aplicaciones, expandir Internet Information Services, y hacer clic en Sitios Web. 3. Hacer clic con el botn derecho en Sitio Web predeterminado y hacer clic en Propiedades. 4. Hacer clic en la ficha Seguridad de directorios y clic en Modificar para abrir el cuadro de dilogo Mtodos de autenticacin de IIS. 5. Desactivar la casilla de verificacin de Autenticacin bsica (la contrasea se enva en texto claro).

Nota Verificar que las casillas de verificacin Autenticacin implcita para servidores de dominios Windows y Autenticacin integrada de Windows estn desactivadas y que la casilla de verificacin Acceso annimo est seleccionada.

34

Seguridad en aplicaciones Web con Microsoft ASP.NET

6. Hacer clic en Aceptar. 7. Hacer clic en Aceptar. 8. Hacer clic en Aceptar en el cuadro de dilogo Herencia omitida.

Configurar la seguridad en el archivo Web.config

9. Abrir el archivo Web.config. Utilizando los comentarios <!-- y -->, comentar la seccin <system.web> que contiene el modo de autenticacin Windows y quitar los comentarios de la seccin <system.web> que contiene el modo de autenticacin Forms. Explicar la nueva seccin <authentication> que redirige todas las solicitudes no autenticadas a la pgina LoginDemo.aspx. Las mismas dos pginas (SecurePageDemo1.aspx y SecurePageDemo2.aspx) se han configurado como pginas seguras. 10. Guardar los cambios.

Mostrar la pgina LoginDemo.aspx

11. Abrir la pgina de cdigo subyacente LoginDemo.aspx.vb o LoginDemo.asox.cs. Mostrar lo siguiente: El procedimiento de evento cmdLogin_Click que valida el nombre de usuario y contrasea invocando la funcin Login, e invocar RedirectFromLoginPage, si las credenciales son vlidas. El primer parmetro de RedirectFromLoginPage es la identidad de usuario que deseamos guardar se encuentra en la cookie. A continuacin, durante la sesin, esta identidad puede ser leda desde cualquier pgina utilizando User.Identity.Name. RedirectFromLoginPage crea una cookie de autenticacin temporal (no persistente) (segundo parmetro establecido a false). Para utilizar RedirectFromLoginPage, debemos importar System.Web.Security. El cdigo de la funcin Login. Mostrar cmo la funcin Login invoca el procedimiento almacenado EmployeeLogin para verificar las credenciales introducidas consultndolas a la base de datos. Abrir Microsoft SQL Server Enterprise Manager, y, a continuacin, abrir la base de datos de Coho y mostrar el registro en la tabla Logins. Finalmente, mostrar el procedimiento almacenado EmployeeLogin.

Importante Cuando veamos la base de datos Coho, observar que en la autenticacin basada en formularios, a diferencia de la autenticacin basada en Windows, depende de nosotros como desarrolladores el disear y gestionar una base de datos de usuarios.
12. Generar el proyecto. 13. Abrir un nuevo navegador e ir a

Visual Basic .NET C# Visual Basic .NET C#

http://localhost/Pract14VB/NonSecurePageDemo.aspx http://localhost/Pract14CS/NonSecurePageDemo.aspx 14. Ir a: http://localhost/Pract14VB/SecurePageDemo1.aspx http://localhost/Pract14CS/SecurePageDemo1.aspx

Seguridad en aplicaciones Web con Microsoft ASP.NET

35

Mostrar que somos redirigidos automticamente a la pgina LoginDemo.aspx. Mostrar que la URL, que contiene la pgina SecurePageDemo1.aspx, es la pgina necesaria para redirigir al usuario a la pgina solicitada, si las credenciales son correctas. 15. Escribir las credenciales someone@cohowinery.com en Nombre de usuario (Email), introducir una contrasea no vlida y hacer clic en Sign In Now. El inicio de sesin fallar porque la contrasea no es vlida. 16. Introducir las credenciales someone@cohowinery.com en Nombre de usuario (Email), someone en Contrasea, y hacer clic de nuevo en Sign In Now. Seremos redirigidos a la pgina SecurePageDemo1.aspx. 17. La pgina SecurePageDemo1.aspx debera mostrar el nombre de usuario 1 (que es la identidad que est almacenada en la cookie en LoginDemo.aspx) y el tipo de autenticacin Forms. Ahora podemos acceder a cualquier pgina segura, siempre que no cerremos el navegador. Si cerramos el navegador, deberemos pasar de nuevo por el proceso de autenticacin debido a que la cookie es temporal (no persistente). 18. Ir a:

Visual Basic .NET C#

http://localhost/Pract14VB/SecurePageDemo2.aspx http://localhost/Pract14CS/SecurePageDemo2.aspx Mostrar que esta vez no se nos pide que introduzcamos nuestras credenciales.

Los estudiantes acceden al equipo del instructor Visual Basic .NET C#

19. Indicar a los estudiantes que vayan a:

http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx Escribir las siguientes credenciales, nombre: someone@cohowinery.com, y contrasea: someone, cuando se soliciten. Despus de introducir las credenciales, los estudiantes deberan poder ver SecurePageDemo1.aspx y SecurePageDemo2.aspx.

36

Seguridad en aplicaciones Web con Microsoft ASP.NET

Leccin: descripcin de la autenticacin mediante Microsoft Passport


Cmo funciona Microsoft Passport Otros recursos de Microsoft Passport

*****************************

Introduccin

La ventaja de Microsoft Passport es que los usuarios pueden presentar las mismas credenciales en cualquier sitio Web participante, y nicamente deben iniciar sesin una vez. Cuando los usuarios cierran su navegador o indican que desean finalizar la sesin, la cookie se destruye y el usuario debe iniciar sesin de nuevo para acceder a los recursos de alguno de los sitios participantes. En esta leccin, estudiaremos el conjunto de eventos que tiene lugar durante la autenticacin mediante Microsoft Passport. Tambin estudiaremos cmo implementar la autenticacin con Microsoft Passport.

Objetivos de la leccin

En esta leccin, aprenderemos a: Describir el conjunto de eventos que tiene lugar durante la autenticacin con Microsoft Passport. Identificar otros recursos de Microsoft Passport.

Seguridad en aplicaciones Web con Microsoft ASP.NET

37

Cmo funciona Microsoft Passport

1 El cliente solicita una pgina al host 1 2 El sitio redirige al cliente a Passport.com 2 3 El cliente es redirigido e inicia sesin en 3 Passport.com 4 Passport devuelve una cookie 4 con la informacin del ticket 5 El cliente accede al host, esta 5 vez con la informacin del ticket 6 El host devuelve un formulario 6 Web Form y posiblemente una nueva cookie que puede leer y escribir Cliente

sitioweb.msft

Passport.com

*****************************

Introduccin Serie de eventos que tienen lugar en la autenticacin de Microsoft Passport

Durante la autenticacin de usuarios utilizando Microsoft Passport, se producen una serie de eventos. 1. Cuando el cliente solicita una pgina segura del sitio Web (host), la solicitud se enva primero a IIS. IIS autentica al usuario como annimo y pasa la solicitud a ASP.NET. 2. ASP.NET comprueba si existe una cookie especial en el cliente. Si la cookie no est presente, la solicitud es rechazada y el cliente es redirigido al sitio Web Passport.com para ser autenticado. 3. Passport genera un formulario de inicio de sesin que enva al cliente. El usuario proporciona la informacin adecuada de inicio de sesin y la enva al sitio de Passport. 4. Si las credenciales suministradas coinciden con las de la base de datos de Passport, ste autentica al usuario y devuelve al cliente una cookie con un ticket de autenticacin. 5. El cliente enva la solicitud inicial, esta vez con la informacin del ticket de autenticacin, a la aplicacin Web ASP.NET. 6. De nuevo, IIS autentica al usuario como annimo. ASP.NET autentica al usuario basndose en el ticket de autenticacin, y devuelve al cliente el formulario Web Form seguro. Una vez el usuario ha sido autenticado con Passport, es posible que se le conceda acceso a otros sitios Web que tambin utilicen la autenticacin mediante Microsoft Passport.

38

Seguridad en aplicaciones Web con Microsoft ASP.NET

Otros recursos de Microsoft Passport


Sitios Web http://www.passport.com http://msdn.microsoft.com

*****************************

Introduccin

Es posible que, cuando estudiemos de Microsoft Passport, necesitemos acceder a recursos para encontrar respuestas a preguntas especficas. Los dos sitios Web siguientes pretenden ofrecer un punto de partida para encontrar ms informacin sobre Microsoft Passport. Podemos encontrar informacin sobre Microsoft Passport en los siguientes sitios: El enlace de informacin para desarrolladores en http://www.passport.com Los recursos de http://msdn.microsoft.com

Sitios Web