14.- Seguridad en aplicaciones Web ASP.NET · 2 Seguridad en aplicaciones Web con Microsoft ASP.NET...

40
Índice Descripción 1 Lección: descripción de la seguridad para aplicaciones Web 2 Lección: trabajar con autenticación basada en Windows 14 Lección: trabajar con autenticación basada en formularios 25 Lección: descripción de la autenticación mediante Microsoft Passport 36 Seguridad en aplicaciones Web con Microsoft ASP.NET

Transcript of 14.- Seguridad en aplicaciones Web ASP.NET · 2 Seguridad en aplicaciones Web con Microsoft ASP.NET...

Índice

Descripción 1

Lección: descripción de la seguridad para aplicaciones Web 2

Lección: trabajar con autenticación basada en Windows 14

Lección: trabajar con autenticación basada en formularios 25

Lección: descripción de la autenticación mediante Microsoft Passport 36

Seguridad en aplicaciones Web con Microsoft ASP.NET

Seguridad en aplicaciones Web con Microsoft ASP.NET 1

Descripción

Descripción de la seguridad para aplicaciones Web

Trabajar con autenticación basada en Windows

Trabajar con autenticación basada en formularios

Descripción de la autenticación de Microsoft Passport

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

La seguridad de las aplicaciones Web es un tema crítico y complejo para los desarrolladores Web. Un sistema seguro requiere una cuidadosa planificación, 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 módulo trata en detalle los distintos métodos de seguridad para las aplicaciones Web.

En este módulo, aprenderemos a:

Describir los métodos de autenticación de ASP.NET e IIS. Utilizar la autenticación basada en Windows para asegurar aplicaciones

Web ASP.NET. Utilizar la autenticación basada en formularios para asegurar aplicaciones

Web ASP.NET. Utilizar Microsoft Passport para asegurar aplicaciones Web ASP.NET.

Introducción

Objetivos

2 Seguridad en aplicaciones Web con Microsoft ASP.NET

Lección: descripción de la seguridad para aplicaciones Web

Autenticación frente a autorización

¿Cuáles son los métodos de autenticación de ASP.NET?

Multimedia: métodos de autenticación de ASP.NET

Comparación de los métodos de autenticación de ASP.NET

¿Cuáles son los mecanismos de autenticación de IIS?

Demostración: uso de los mecanismos de autenticación de IIS

¿Qué es Secure Sockets Layer?

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

Por definición, las aplicaciones Web ofrecen a los usuarios acceso a un recurso centralizado, el servidor Web, y, a través de él, acceso a servidores de bases de datos. Conociendo e implementando medidas de seguridad adecuadas para nuestra aplicación Web, podemos proteger nuestros propios recursos, además de proporcionar un entorno seguro en el que los usuarios trabajen cómodamente.

En esta lección, se describen distintos conceptos de seguridad: autenticación, autorización y mecanismos de autenticación de IIS. También estudiaremos el protocolo Secure Sockets Layer (SSL).

En esta lección, aprenderemos a:

Describir los dos conceptos fundamentales de seguridad para asegurar una aplicación Web.

Describir los tres métodos de autenticación de ASP.NET. Distinguir entre los tres métodos de autenticación de ASP.NET. Describir los cuatro mecanismos de autenticación de IIS. Describir SSL.

Introducción

Objetivos de la lección

Seguridad en aplicaciones Web con Microsoft ASP.NET 3

Autenticación frente a autorización

Autenticación

Acepta credenciales de un usuario

Valida las credenciales

Autorización

En función de las credenciales de autenticación suministradas, determina el derecho de acceso a un recurso

Puede asignarse por nombre de usuario o por rol

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

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:

Autenticación Autorización

La autenticación es el proceso de obtener las credenciales de identificación de un usuario, como un nombre y una contraseña, y validar esas credenciales consultando a alguna autoridad, como una base de datos. Si las credenciales son válidas, la entidad que las ha presentado se considera una identidad autenticada.

Por ejemplo, todos los usuarios deben proporcionar un nombre de usuario y una contraseña cada vez que inician sesión en una red. Estas credenciales se validan consultándolas a una autoridad, como una base de datos o un servidor de dominio basado en Microsoft Windows®.

Después de que una identidad haya sido autenticada, el proceso de autorización determina si esa identidad tiene acceso a un recurso específico. El proceso de autorización limita los derechos de acceso concediendo o denegando permisos específicos 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 Bárbara Gómez. 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.

Introducción

Autenticación

Autorización

4 Seguridad en aplicaciones Web con Microsoft ASP.NET

¿Cuáles son los métodos de autenticación de ASP.NET?

Autenticación basada en WindowsDepende del sistema operativo Windows y de IISEl usuario solicita una página Web segura y la solicitud pasa por IISUna vez IIS verifica las credenciales, se devuelve la página Web segura

Autenticación basada en formulariosLas solicitudes no autenticadas son redirigidas a un formulario HTMLEl usuario proporciona credenciales y envía el formulario HTMLUna vez verificadas las credenciales, se suministra una cookie de autenticación

Autenticación mediante Microsoft PassportServicio de autenticación centralizado que ofrece una única opción de inicio de sesiónMicrosoft Passport es un Servicio Web XML

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

ASP.NET implementa la autenticación mediante métodos de autenticación. Los métodos de autenticación de ASP.NET contienen el código necesario para autenticar las credenciales de usuario.

ASP.NET soporta tres tipos de métodos de autenticación:

Autenticación basada en Windows Autenticación basada en formularios Autenticación mediante Microsoft Passport

En la autenticación basada en Windows, la aplicación Web ASP.NET depende del sistema operativo Windows para autenticar al usuario. ASP.NET utiliza la autenticación basada en Windows conjuntamente con la autenticación de IIS.

En la autenticación basada en Windows, el usuario solicita una página Web segura de la aplicación 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 continuación, el usuario debe introducir su nombre y contraseña en el formulario de inicio de sesión. IIS verifica de nuevo las credenciales. Si son correctas, IIS dirige la solicitud original a la aplicación Web y el usuario recibe la página Web segura.

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

Introducción

Métodos de autenticación

Autenticación basada en Windows

Autenticación basada en formularios

Seguridad en aplicaciones Web con Microsoft ASP.NET 5

del usuario se emiten con la cookie de autenticación en el encabezado de la solicitud, y el usuario es autenticado en base a dicho encabezado.

La autenticación mediante Passport consiste en un servicio de autenticación centralizado, proporcionado por Microsoft, que ofrece una única opción de inicio de sesión y unos servicios con un perfil básico a los sitios suscritos. Los usuarios que se registren utilizando Passport estarán 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.

Autenticación mediante Microsoft Passport

6 Seguridad en aplicaciones Web con Microsoft ASP.NET

Comparación de los métodos de autenticación de ASP.NET

Inicio de sesión único para muchos sitios de InternetNo es necesario mantener una base de datos para almacenar información del usuarioPermite a los desarrolladores personalizar el aspecto de la página de inscripción

Adecuada para aplicaciones de InternetSoporta todo tipo de clientes

Utiliza infraestructura Windows existente Controla el acceso a información confidencial

VentajasVentajas

Basada en cookiesImplica cuota

Autenticación mediante Microsoft Passport

Basada en cookiesAutenticación basada en formularios

No apropiado para la mayoría de aplicaciones de Internet

Autenticación basada en Windows

InconvenientesInconvenientesMMéétodotodo

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

Cada uno de los tres métodos de autenticación que soporta ASP.NET (basado en Windows, basado en formularios y Microsoft Passport) es adecuado para situaciones específicas. Cada método tiene diversas ventajas e inconvenientes.

La autenticación basada en Windows utiliza la infraestructura de Windows existente y, por tanto, es más adecuado en situaciones en las que se dispone de un número fijo de usuarios con cuentas de usuario Windows existentes. Dos ejemplos de situaciones de este tipo son:

El desarrollo de una intranet para una organización. Es muy probable que la organización disponga de cuentas de usuario Windows configuradas para cada empleado.

El control del acceso a información confidencial. Por ejemplo, los usuarios del grupo de Recursos Humanos de una empresa pueden acceder a directorios que contienen currículos de empleados e información de salarios. Podemos utilizar la autenticación 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 autenticación basada en Windows es que no es adecuada para la mayoría de aplicaciones de Internet. Por ejemplo, si estamos generando un sistema público de registro de usuarios y contraseñas, la autenticación basada en Windows no es una buena opción de autenticación. Con la autenticación basada en Windows, debe configurarse una cuenta de usuario de Windows válida por cada usuario que acceda a una página restringida. El proceso de agregar nuevas cuentas de usuario no puede automatizarse fácilmente.

Introducción

Autenticación basada en Windows

Seguridad en aplicaciones Web con Microsoft ASP.NET 7

La autenticación basada en formularios es una buena solución si se desea configurar un sistema personalizado de registro de usuarios para un sitio Web. La ventaja de este tipo de autenticación es que nos permite almacenar nombres de usuario y contraseñas 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 autenticación basada en formularios depende de cookies para determinar la identidad del usuario. Una vez habilitada la autenticación basada en formularios, el usuario no puede acceder a la página solicitada a menos que se encuentre en el cliente una cookie específica. Si esta cookie no está, o si no es válida, ASP.NET rechaza la solicitud y devuelve una página de inicio de sesión.

La autenticación mediante Microsoft Passport tiene varias ventajas, incluyendo:

Permite a los usuarios utilizar el mismo nombre de usuario y contraseña para iniciar sesión en numerosos sitios Web; por tanto, es menos probable que los usuarios olviden sus contraseñas. 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 información de registro. Microsoft se encarga de realizar todo el mantenimiento.

Proporciona opciones para personalizar el aspecto de las páginas de registro e inicio de sesión mediante plantillas.

El uso de la autenticación mediante Microsoft Passport tiene dos inconvenientes. En primer lugar, existe una cuota de suscripción por utilizar el servicio Microsoft Passport en desarrollo. En segundo lugar, la autenticación Microsoft Passport está basada en cookies.

Autenticación basada en formularios

Autenticación mediante Microsoft Passport

8 Seguridad en aplicaciones Web con Microsoft ASP.NET

¿Cuáles son los mecanismos de autenticación de IIS?

Alto

Medio

Bajo (Medio con SSL)

Ninguno

Nivel de Nivel de seguridadseguridad

Utiliza NTLM o KerberosGeneralmente adecuado para intranets, no InternetNo funciona a través de muchos cortafuegos

Seguridad integrada de Windows

Envía la información en un hash (o digest) codificadoRequiere Internet Explorer 5 o superiorRequiere Active Directory

Autenticación implícita

El cliente envía nombre de usuario y contraseña como texto claroPuede encriptarse utilizando SSLParte de la especificación HTTP y soportado por la mayoría de exploradores

Autenticación básica

No se produce autenticaciónAcceso anónimo

DescripciDescripcióónnMecanismosMecanismos

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

Para poder utilizar la autenticación basada en Windows, debemos configurar antes el servidor Web IIS. Cuando un usuario solicita una página que requiere autorización, el usuario debe ser autenticado a través de IIS.

IIS proporciona varios mecanismos que pueden utilizarse para establecer autenticación, incluyendo:

Acceso anónimo Autenticación básica Autenticación implícita Seguridad integrada de Windows

Para aplicaciones Web en las que usuarios desconocidos realizan solicitudes, normalmente aplicaciones Web públicas, IIS soporta un usuario anónimo, un usuario que no dispone de credenciales de autenticación. Cuando IIS recibe una solicitud de un usuario anónimo, IIS hace la solicitud a Windows utilizando la cuenta predeterminada IUSR_nombreequipo.

La cuenta predeterminada IUSR_ nombreequipo puede modificarse mediante el complemento de administración de IIS.

IIS también soporta un modelo de autenticación básica. En la autenticación básica, se solicita a los usuarios sin credenciales que suministren un nombre de usuario y una contraseña. Esta información se devuelve a IIS, y a partir de entonces está disponible para la aplicación Web. La ventaja de la autenticación básica es que forma parte de la especificación HTTP y está soportada por la mayoría de navegadores. La autenticación básica proporciona un modo útil para ofrecer acceso restringido a una aplicación Web pública.

Sin embargo, debido a que el usuario pasa un nombre de usuario y una contraseña a IIS en forma de texto claro, la autenticación básica no ofrece un

Introducción

Acceso anónimo

Nota

Autenticación básica

Seguridad en aplicaciones Web con Microsoft ASP.NET 9

nivel alto de seguridad. Para incrementarlo, se utiliza SSL para encriptar nombres de usuario y contraseñas cuando se transmiten a través de la red.

La autenticación implícita es similar a la autenticación básica, pero utiliza la encriptación para enviar información del usuario al servidor. Si el acceso anónimo está deshabilitado, se pide a los usuarios sus credenciales (información de inicio de sesión). El navegador combina esta información de inicio de sesión con el resto de información almacenada en el cliente, y envía al servidor un hash codificado denominado hash MD5 (o Message Digest). El servidor ya dispone de una copia de esta información 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 través de cortafuegos, servidores proxy e Internet.

Sin embargo, la autenticación implícita únicamente funciona con cuentas de dominio dadas de alta en el servicio de directorios Active Directory®.

Para más información sobre la configuración de las cuentas de dominio de Active Directory para permitir la autenticación implícita, consultar la documentación de IIS.

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 contraseña, ú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 también utiliza un algoritmo hash para codificar y decodificar las credenciales del usuario.

Sin embargo, la seguridad integrada de Windows no resulta práctica en las aplicaciones Web que deben atravesar cortafuegos. Por tanto, es más adecuada en escenarios de intranets corporativas.

Cuando se configura IIS, se pueden utilizar múltiples mecanismos de autenticación de IIS. Se puede seleccionar el acceso anónimo u otros métodos, como la autenticación básica, implícita o integrada de Windows. Si se utilizan múltiples mecanismos de autenticación de IIS, y si la autenticación anónima falla, el servidor Web intentará utilizar la autenticación básica, implícita o integrada de Windows, dependiendo de los métodos que estén seleccionados.

Autenticación implícita

Nota

Seguridad integrada de Windows

Nota

10 Seguridad en aplicaciones Web con Microsoft ASP.NET

Demostración: uso de los mecanismos de autenticación de IIS

Hacer clic con el botón derecho en Mod16 y hacer clic en Propiedades

Hacer clic en la pestaña Seguridad de directorios

Hacer clic en Modificar

Mostrar los métodos de autenticación

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

En esta demostración, visualizaremos el cuadro de diálogo que se utiliza par configurar los mecanismos de autenticación de IIS.

Ejecutar la demostración

1. En el menú Inicio, hacer clic con el botón derecho en Mi PC y hacer clic en Administrar.

2. En la consola Administración de equipos, expandir Servicios y aplicaciones, expandir Internet Information Services, expandir Sitios Web, y expandir Sitio Web predeterminado.

3. Hacer clic con el botón derecho en la aplicación Web Pract14VB o Pract14CS y hacer clic en Propiedades.

4. En el cuadro de diálogo Pract14VB o Propiedades de Pract14CS, en la ficha Seguridad de directorios, en la sección Control de autenticación y acceso anónimo, hacer clic en Modificar.

5. Mostrar los métodos de autenticación disponibles.

Introducción

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 través de una red. SSL securiza los datos mediante:

Encriptación de datos- Asegura que los datos enviados son leídos únicamente por un servidor destinatario seguro

Autenticación de servidor- Asegura que los datos se envían al servidor correcto- Utiliza los certificados de servidor y de cliente

Integridad de los datos- Protege la integridad de los datos- Incluye un código de autenticación de mensajes que detecta si un mensaje ha sido o no modificado

Utiliza HTTPS (Hypertext Transfer Protocol Secure) para recuperar una página Web ASP.NET

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

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

RSA son las siglas de Rivest, Shamir y Adleman, los nombres de los científicos que crearon este algoritmo.

SSL es un protocolo que se utiliza para transmitir datos de modo seguro a través de una red. SSL securiza la comunicación de datos mediante:

Encriptación de datos Autenticación de servidor Integridad de datos

Cuando se introduce información en un formulario HTML y se envía a un sitio Web, la información se transmite desde el navegador al servidor del sitio Web. En el proceso de transmisión de la información, los datos introducidos en el formulario pueden ser interceptados y leídos.

SSL encripta la información transmitida entre un servidor Web y un navegador Web. La información se encripta utilizando un algoritmo públicamente conocido y una clave de sesión. El servidor Web genera una clave pública que puede utilizar cualquier cliente. El cliente genera una clave de sesión y utiliza la clave pública para encriptarla antes de enviarla al servidor Web. Los datos se transmiten utilizando esta clave de sesión.

Introducción

Nota

¿Qué es SSL?

Encriptación de datos

12 Seguridad en aplicaciones Web con Microsoft ASP.NET

El número de bits de la clave de sesión determina la potencia de la encriptación. IIS soporta claves de sesión de 40 bits y claves de sesión más 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 sesión de 40 bits y de 128 bits.

Clave de sesión Ventaja Inconveniente Clave de sesión de 40 bits

La comunicación es mucho más rápida.

No es muy segura, los mensajes pueden ser modificados.

Clave de sesión de 128 bits

Muy segura, los mensajes encriptados con clave de sesión de 128 bits se consideran inquebrantables.

La comunicación es bastante más lenta; cuanto más larga es la clave, más trabajo deben realizar el servidor y el navegador para encriptar y desencriptar el mensaje.

La autenticación de servidor garantiza que los datos se envían al servidor correcto y que éste es seguro.

Por ejemplo, podría ocurrir que visitáramos un sitio Web que fuera muy parecido a un sitio Web de comercio electrónico al que accediésemos frecuentemente. Podría parecer igual que el sitio Web que conocemos, y proporcionaríamos la información de nuestra tarjeta de crédito para adquirir un artículo. Sin embargo, alguien que deseara engañarnos podría crear un sitio Web idéntico al sitio Web de comercio electrónico auténtico y robar la información de nuestra tarjeta de crédito.

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 información sobre nuestra organización, 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 certificación. La autoridad de certificación actúa como un tercero de confianza que verifica la identidad de un sitio Web para sus usuarios.

SSL también 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 modificación.

Cuando los mensajes se transmiten con SSL, incluyen un código de autenticación de mensaje. Este código detecta si el mensaje ha sido modificado.

Después de configurar nuestro servidor para que utilice SSL, podemos solicitar cualquier página de nuestro sitio Web utilizando una conexión segura. Para recuperar una página Web, SSL utiliza Hypertext Transfer Protocol Secure (HTTPS). Por ejemplo, una dirección con la forma https://www.nuestrodominio.com/login.aspx en lugar de http://www. nuestrodominio.com/pagina.aspx.

Esto funciona para cualquier página de nuestro sitio Web.

ASP.NET proporciona la propiedad Request.IsSecureConnection que nos permite determinar si nos encontramos en una conexión https segura.

Autenticación de servidor

Certificado de servidor

Certificado de cliente

Integridad de datos

Uso de SSL en páginas ASP.NET

Nota

14 Seguridad en aplicaciones Web con Microsoft ASP.NET

Lección: trabajar con autenticación basada en Windows

Cómo habilitar la autenticación basada en Windows

Leer información del usuario

Demostración: uso de la autenticación basada en Windows

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

La autenticación basada en Windows debería utilizarse para securizar las aplicaciones Web cuando sabemos qué usuarios accederán a nuestro sitio Web.

En esta lección, estudiaremos el procedimiento para utilizar la autenticación basada en Windows para securizar nuestras aplicaciones Web.

En esta lección, aprenderemos a:

Utilizar la autenticación basada en Windows para securizar aplicaciones Web.

Leer la identidad del usuario que está autenticado utilizando la autenticación basada en Windows.

Introducción

Objetivos de la lección

Seguridad en aplicaciones Web con Microsoft ASP.NET 15

Cómo habilitar la autenticación basada en Windows

Configurar IIS para utilizar uno o varios de los siguientes mecanismos de autenticación :

Básica

Implícita

Seguridad de Windows integrada

Establecer la autenticación basada en Windows en Web.config

111

222

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

</system.web>

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

</system.web>

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

El proceso de securizar aplicaciones Web mediante la autenticación basada en Windows requiere cuatro pasos:

1. Configurar IIS. 2. Configurar la autenticación en Web.config. 3. Configurar la autorización en Web.config. 4. IIS solicita información de inicio de sesión a los usuarios.

El primer paso para securizar aplicaciones Web utilizando la autenticación basada en Windows implica configurar IIS utilizando uno o varios de los tres mecanismos de autenticación:

Autenticación básica Autenticación implícita Seguridad integrada de Windows

Normalmente, se habilita la autenticación básica o la seguridad integrada de Windows. Si deseamos que nuestra aplicación Web sea compatible con otros navegadores, deberíamos utilizar la autenticación básica. Si no estamos utilizando un cortafuegos o servidor proxy, podemos utilizar la seguridad integrada de Windows.

Introducción

Configurar IIS

Nota

16 Seguridad en aplicaciones Web con Microsoft ASP.NET

El segundo paso para securizar aplicaciones Web utilizando la autenticación basada en Windows es establecer la seguridad de ASP.NET a autenticación basada en Windows en el archivo Web.config. Las opciones de configuración de seguridad en Web.config se incluyen en las secciones <authentication>, <authorization> e <identity>.

Establecer el método de autenticación a “Windows” para la aplicación en una subsección <authentication> de la sección <system.web> en Web.config, como muestra el siguiente ejemplo:

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

Configurar la autenticación

Seguridad en aplicaciones Web con Microsoft ASP.NET 17

Cómo habilitar la autenticación basada en Windows (continuación) Establecer la autorización en Web.config

Cuando los usuarios acceden al formulario Web Form, IIS solicitainformación de iniciode sesión

<location path="ShoppingCart.aspx"><system.web>

<Authorization><deny users="?"/>

</Authorization></system.web>

</location>

<location path="ShoppingCart.aspx"><system.web>

<Authorization><deny users="?"/>

</Authorization></system.web>

</location>

444

333

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

Securizar las aplicaciones Web utilizando la autenticación basada en Windows es un proceso de cuatro pasos:

1. Configurar IIS. 2. Establecer la autenticación en Web.config. 3. Establecer la autorización en Web.config. 4. IIS solicita información de inicio de sesión a los usuarios.

Hemos estudiado los dos primeros pasos en el apartado anterior. Esta sección explica los dos últimos pasos.

Para indicar que sólo algunas páginas específicas son seguras, debemos crear una sección <location> con subsecciones <system.web> y <authorization> para cada página segura de nuestra aplicación Web:

<location path="ShoppingCart.aspx"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location> Las opciones de configuración que contiene la sección <location> serán dirigidas al archivo o directorio que se indica en el atributo path. La sección <configuration> puede tener múltiples secciones <location>.

La sección <location> puede ser un formulario Web Form ASP.NET o una carpeta. Si se especifica un nombre de carpeta, todas las subcarpetas bajo ella serán seguras. Para asegurar múltiples formularios Web Forms o carpetas, se utilizarán múltiples secciones <location>.

Introducción

Configurar la autorización

Nota

18 Seguridad en aplicaciones Web con Microsoft ASP.NET

En la sección <system.web>, crear una subsección <authorization> para especificar qué tipo de autorización se impondrá. Crear las etiquetas <allow> o <deny> para permitir o denegar a los usuarios el acceso a una página. En estas etiquetas, “?” indica usuarios anónimos y “*” significa todos los usuarios.

Por ejemplo, el siguiente código deniega el acceso a todos los usuarios anónimos:

<authorization> <deny users="?" /> </authorization> El siguiente código permite al usuario “Mary” acceder a una página:

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

No es recomendable autorizar a usuarios individualmente, ya que este proceso puede revelar información confidencial en caso de que el archivo Web.config sea leído. Además, codificar directamente nombres de usuario en el archivo Web.config no es un planteamiento flexible ya que no permite modificar esta información programáticamente en tiempo de ejecución. La codificación directa de usuarios en el archivo Web.config resulta adecuado sólo para realizar pruebas.

El siguiente código deniega a todos los usuarios anónimos el acceso a la página ShoppingCart.aspx:

<location path="ShoppingCart.aspx"> <system.web> <authorization> <deny users="?" /> </authorization> </system.web> </location> Tras especificar el modo de autenticación, debemos indicar que toda la aplicación Web necesita autorización, o especificar qué páginas son seguras y, por tanto, que requieren autorización.

Para indicar que toda la aplicación es segura, crear una sección <authorization> en la sección <system.web>, como muestra el siguiente código de ejemplo:

<system.web> <authorization> <deny users="?" /> </authorization> </system.web>

Nota

Seguridad en aplicaciones Web con Microsoft ASP.NET 19

Utilizamos el elemento <identity> para habilitar la impersonalización. La impersonalización permite al servidor ejecutar código bajo el contexto de seguridad de una entidad solicitante o como un usuario anónimo. En ASP.NET, la impersonalización es opcional, y está deshabilitada de forma predeterminada.

El elemento <identity> debe estar bajo la sección <system.web> en el archivo Web.config o Machine.config. El siguiente código muestra la sintaxis que se utiliza con el elemento <identity>:

<identity impersonate="true|false" username="username" password="password" /> En el código 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.

El último paso del proceso para habilitar la autenticación basada en Windows se produce cuando los usuarios intentan acceder a un formulario Web Form desde nuestra aplicación Web e IIS solicita información de inicio de sesión al usuario. El usuario debe proporcionar su nombre de usuario y contraseña. Si IIS aprueba las credenciales del usuario, éste obtiene acceso a la página Web segura solicitada.

IIS solicita información de inicio de sesión a los usuarios

20 Seguridad en aplicaciones Web con Microsoft ASP.NET

Leer información del usuario

Tras la autenticación, el servidor Web puede leer la identidad del usuario

lblAuthUser.Text = User.Identity.NamelblAuthType.Text = User.Identity.AuthenticationTypelblIsAuth.Text = User.Identity.IsAuthenticated

lblAuthUser.Text = User.Identity.NamelblAuthType.Text = User.Identity.AuthenticationTypelblIsAuth.Text = User.Identity.IsAuthenticated

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;

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

Una vez finalizado el proceso de autenticación basada en Windows, el servidor Web puede leer la identidad del usuario desde cualquier página de la aplicación Web.

El servidor Web puede leer la identidad del usuario utilizando User.Identity.Name. El servidor Web también puede identificar el mecanismo de autenticación de IIS que se utiliza para autenticar al usuario utilizando User.Identity.AuthenticationType. Además, el servidor Web puede comprobar si el usuario está autenticado utilizando User.Identity.IsAuthenticated.

El siguiente código de ejemplo muestra cómo se permite al servidor Web leer la identidad del usuario:

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;

User.Identity es un objeto de la clase WindowsIdentity.

Introducción

Visual Basic .NET

C#

Nota

Seguridad en aplicaciones Web con Microsoft ASP.NET 21

Demostración: uso de la autenticación basada en Windows

Abrir IIS y configurarlo únicamente con autenticación anónima

Crear un nuevo usuario en el equipo local

Abrir Web.config y configurarlo para soportar autenticación y autorización

Ejecutar la aplicación Web ASP.NET segura

Los estudiantes pueden acceder a la aplicación Web ASP.NET segura en el equipo del instructor

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

En esta demostración, veremos cómo configurar IIS para utilizar la autenticación basada en Windows con autenticación básica de IIS. Seguidamente, veremos cómo crear un nuevo usuario en el servidor local, y cómo configurar la autenticación y autorización en Web.config. A continuación, veremos algunas demostraciones de acceso a páginas seguras y no seguras. Finalmente, aprenderemos a conectarnos a una página segura en el equipo del instructor.

Los archivos para esta demostración se encuentran en el proyecto Pract14VB o Pract14CS dentro del fichero demos14.zip.

Ejecutar la demostración

1. Hacer clic con el botón 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 botón 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 diálogo Métodos de autenticación de IIS. 5. Seleccionar la casilla de verificación de autenticación básica (la contraseña

se envía en texto claro) y hacer clic en Sí en el cuadro de diálogo Administrador de Servicios de Internet.

Comprobar que está seleccionada la casilla de verificación de Acceso

Introducción

Configurar IIS con autenticación básica

Nota

22 Seguridad en aplicaciones Web con Microsoft ASP.NET

anónimo. Verificar que no están seleccionadas las casillas de verificación de Autenticación implícita para servidores de dominios Windows y Autenticación integrada de Windows.

6. Escribir nombreequipo en el campo Dominio predeterminado, ya que esta demostración se realizará con una cuenta local creada en este equipo.

7. Hacer clic en Aceptar para cerrar el cuadro de diálogo Métodos de autenticación de IIS.

8. Hacer clic en Aceptar para cerrar el cuadro de diálogo Propiedades del sitio Web predeterminado. En el cuadro de diálogo Herencia omitida, hacer clic en Aceptar.

9. En la consola Administración de equipos, expandir Herramientas del sistema, y expandir Usuarios y grupos locales.

10. Hacer clic con el botón derecho en la carpeta Usuarios y clic en Nuevo usuario: Introducir la siguiente información en el cuadro de diálogo Nuevo usuario. Campo Valor Nombre de usuario someone

Nombre completo someone

Descripción Cuenta de demostración de someone

Contraseña Secreto1

Confirmar contraseña Secreto1

a. Desactivar la casilla de verificación de El usuario debe cambiar la contraseña en el siguiente inicio de sesión.

b. Seleccionar la casilla de verificación de El usuario no puede cambiar la contraseña.

c. Hacer clic en Crear y clic en Cerrar. En el lado derecho de la ventana del cuadro de diálogo Administración de equipos, debería aparecer el usuario someone.

11. Abrir el proyecto Pract14VB o Pract14CS y visualizar el archivo Web.config en Microsoft Visual Studio® .NET. Una sección <authentication> está configurada con autenticación basada en Windows. Son necesarias dos secciones <location> para securizar dos páginas: SecurePageDemo1.aspx y SecurePageDemo2.aspx. Con la configuración actual de IIS, si un usuario intenta acceder a una de estas páginas, se utilizará la autenticación básica. Si un usuario intenta acceder las otras páginas, se utilizará la autenticación anónima.

12. Abrir la página de código subyacente SecurePageDemo1.aspx y explicar el código User.Identity.Name y User.Identity.AuthenticationType.

No se requiere ninguna instrucción Imports para utilizar User.Identity.xxx.

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

Crear un nuevo usuario en el equipo local

Mostrar la configuración de seguridad en el archivo Web.config

Mostrar el nombre y tipo de autenticación en un formulario Web Form.

Note

Seguridad en aplicaciones Web con Microsoft ASP.NET 23

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

Visual Basic .NET C#

24 Seguridad en aplicaciones Web con Microsoft ASP.NET

15. Ir a: http://localhost/Pract14VB/SecurePageDemo1.aspx http://localhost/Pract14CS/SecurePageDemo1.aspx Mostrar que aparece el cuadro de diálogo 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: http://localhost/Pract14VB/SecurePageDemo2.aspx http://localhost/Pract14CS/SecurePageDemo2.aspx Mostrar que también aparece el cuadro de diálogo Connect to localhost.

18. Escribir las credenciales Nombre de usuario como someone y Contraseña como Secreto1 y hacer clic en Aceptar.

19. La página SecurePageDemo2.aspx debería mostrar el nombre de usuario someone y el tipo de autenticación básica. Ahora, podemos acceder a cualquier página segura, siempre que no cerremos el navegador. Si cerramos el navegador, deberemos repetir el proceso de autenticación.

20. Ir a: 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 deberían poder ver SecurePageDemo1.aspx y SecurePageDemo2.aspx.

Visual Basic .NET C#

Visual Basic .NET C#

Visual Basic .NET C#

Los estudiantes acceder al equipo del instructor

Visual Basic .NET C#

Seguridad en aplicaciones Web con Microsoft ASP.NET 25

Lección: trabajar con autenticación basada en formularios

Descripción de la autenticación basada en formularios

Multimedia: autenticación basada en formularios

Cómo habilitar la autenticación basada en formularios

Crear una página de inicio de sesión

Demostración: uso de la autenticación basada en formularios

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

El método de autenticación que más se utiliza habitualmente para securizar aplicaciones Web con ASP.NET es la autenticación basada en formularios.

En esta lección, estudiaremos la arquitectura basada en formularios, y los pasos para habilitar la autenticación basada en formularios. También estudiaremos cómo configurar la seguridad en Web.config, y crear una página de inicio de sesión.

En esta lección, aprenderemos a:

Identificar la serie de eventos que tiene lugar durante la autenticación basada en formularios.

Identificar los pasos para habilitar la autenticación basada en formularios. Configurar autenticación y autorización en un archivo Web.config. Describir cómo crear una página de inicio de sesión.

Introducción

Objetivos de la lección

26 Seguridad en aplicaciones Web con Microsoft ASP.NET

Descripción de la autenticación basada en formularios

El cliente solicita página

Autorizado

Autenticación ASP.NET Forms

No autenticado

Autenticado

Página de inicio(los usuarios introducen sus credenciales)

Autenticado

Cookie de autenticación

Autorizado

No autenticado

Acceso denegado

Página segurasolicitada

IIS

Nombre usuario

ContraseñaAlguien

***********

EnviarEnviar

111 222

333

444666

555777

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

Cuando un usuario solicita una página Web que está protegida por autenticación basada en formularios, la solicitud debe pasar primero por IIS. Por ello, debemos establecer la autenticación de IIS a acceso anónimo. Establecer IIS a anónimo requiere que todas las solicitudes pasen por ASP.NET antes de ser autenticadas.

En la autenticación basada en formularios, se produce la siguiente serie de eventos:

1. Un cliente genera una solicitud de una página .aspx protegida. 2. IIS recibe la solicitud y la pasa a ASP.NET. El modo de autenticación está

establecido en acceso anónimo y, por ello, la solicitud pasa directamente por IIS.

3. ASP.NET comprueba si la solicitud dispone de una cookie de autenticación válida anexa. Si es así, significa que las credenciales del usuario ya han sido confirmadas y que la solicitud se ha examinado para su autorización. ASP.NET realiza la verificación de autorización comparando las credenciales que contiene la cookie de autorización de la solicitud con las opciones de configuración de autorización del archivo Web.config. Si el usuario es autorizado, se concede el acceso a la página segura solicitada.

4. Si la solicitud no tiene ninguna cookie anexa, ASP.NET redirecciona la solicitud a una página de inicio de sesión (cuya ruta reside en el archivo de configuración de la aplicación), donde el usuario introduce las credenciales requeridas, normalmente un nombre y una contraseña.

Introducción

Serie de eventos que tienen lugar durante la autenticación basada en formularios

Seguridad en aplicaciones Web con Microsoft ASP.NET 27

5. El código de la aplicación en la página de inicio de sesión comprueba las credenciales para confirmar su autenticidad y, si son autenticadas, adjunta a la solicitud una cookie que contiene las credenciales.

6. Si la autenticación falla, la solicitud se devuelve con un mensaje de “Acceso denegado”.

7. Si el usuario es autenticado, ASP.NET comprueba la autorización, como en el paso 3, y puede permitir el acceso a la página segura solicitada originalmente o redireccionar la solicitud a otra página, dependiendo del diseño de la aplicación. Por otra parte, ASP.NET puede dirigir la solicitud a un formulario de autorización personalizado donde se examinan las credenciales para la autorización a la página protegida. Normalmente, si la autorización falla, la solicitud se devuelve con un mensaje de “Acceso denegado”.

28 Seguridad en aplicaciones Web con Microsoft ASP.NET

Cómo habilitar la autenticación basada en formularios

Configurar IIS para utilizar autenticación anónima

Establecer la autenticación basada en formularios en Web.config

Establecer la autorización

Generar un formulario Web Formde inicio de sesión

111

222

333

444

<Authentication mode="Forms" ><forms name=".namesuffix" loginUrl="login.aspx" />

</Authentication>

<Authentication mode="Forms" ><forms name=".namesuffix" loginUrl="login.aspx" />

</Authentication>

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

Para habilitar la autenticación basada en formularios para nuestra aplicación Web, debemos realizar los cuatro pasos siguientes:

1. Configurar IIS para utilizar la autenticación anónima, para que el usuario sea autenticado por ASP.NET y no por IIS.

2. Configurar el método de autenticación basado en formularios (Forms) para la aplicación en una subsección <authentication> de la sección <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 autenticación en “Forms”, se debe agregar un elemento <forms> a la sección <authentication>, como muestra el ejemplo anterior. En la sección <forms>, se configura la cookie. Establecer el atributo name con el sufijo que utilizarán las cookies y el atributo loginUrl con la URL (Uniform Resource Locator) de la página a la que se redirigen las solicitudes no autenticadas.

3. Configurar la sección <authorization> de Web.config. El proceso de configurar la autorización para autenticación basada en formularios es idéntico al proceso de la autenticación basada en Windows. Al configurar la sección <authorization> en Web.config, podemos denegar o permitir a los usuarios el acceso a nuestra aplicación Web. También

Introducción

Habilitar la autenticación basada en formularios Configurar la autenticación

Configurar la autorización

Seguridad en aplicaciones Web con Microsoft ASP.NET 29

podemos indicar que toda la aplicación Web requiere autorización o especificar qué páginas son seguras y, por tanto, requieren autorización.

4. Generar un formulario Web Form de inicio de sesión, login.aspx. Login.aspx puede ser una página sencilla con dos campos, uno para el nombre de usuario y otro para la contraseña. Login.aspx requiere que los usuarios introduzcan su nombre de usuario y contraseña para establecer autenticación y poder acceder a nuestra aplicación Web.

Generar un formulario Web Form de inicio de sesión

30 Seguridad en aplicaciones Web con Microsoft ASP.NET

Crear una página de inicio de sesión

Añadir una referencia a System.Web.SecurityLa página de inicio de sesión verifica y examina las credenciales de un usuario

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

Sub cmdLogin_Click(s As Object, e As eventArgs)If (login(txtEmail.Text, txtPassword.Text))FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False)

End If

End Sub

Sub cmdLogin_Click(s As Object, e As eventArgs)If (login(txtEmail.Text, txtPassword.Text))FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False)

End If

End Sub

private void cmdLogin_Click(object sender, EventArgs e){if (login(txtEmail.Text, txtPassword.Text))FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false);

}

private void cmdLogin_Click(object sender, EventArgs e){if (login(txtEmail.Text, txtPassword.Text))FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false);

}

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

Durante la autenticación, todas las solicitudes son redirigidas a la página de inicio de sesión especificada en el atributo loginUrl de la etiqueta <forms>. La página de inicio de sesión verifica y examina las credenciales de un usuario.

Si el modo de autenticación está establecido a “Forms”, ASP.NET busca una cookie de autenticación adjunta a la solicitud de una página segura. Si ASP.NET no encuentra la cookie de autenticación, redirecciona la solicitud a la página de inicio de sesión especificada.

En la página de inicio de sesión, el usuario introduce las credenciales requeridas. La página las examina, bien a través de código específico de la aplicación o invocando a FormsAuthentication.Authenticate. Si las credenciales con válidas, se genera una cookie y el usuario es redirigido a la página solicitada originalmente invocando a FormsAuthentication.RedirectFromLoginPage. Sin embargo, si las credenciales no son válidas, el usuario permanece en la página de inicio de sesión y recibe un mensaje que indica que las credenciales de inicio de sesión no son válidas.

El método RedirectFromLoginPage toma dos parámetros: userName, que especifica el nombre del usuario para la autenticación basada en formularios, y createPersistentCookie. Si el valor de createPersistentCookie es true, una cookie de autenticación 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 autenticación temporal (no persistente).

Introducción

¿Cómo funciona una página de inicio de sesión?

Seguridad en aplicaciones Web con Microsoft ASP.NET 31

La siguiente tabla muestra una lista todos los métodos del objeto FormsAuthentication, que pueden utilizarse en el proceso de autenticación.

Método Función Authenticate Dadas las credenciales suministradas, este método intenta

validar las credenciales comparándolas con las que contiene el almacén de credenciales configurado.

GetAuthCookie Crea una cookie de autenticación para un determinado nombre de usuario. La cookie no se establece como parte de la respuesta saliente; por tanto, una aplicación puede tener un mayor control sobre cómo se emite la cookie.

GetRedirectUrl Devuelve la URL redirigida para la solicitud original que ha provocado la redirección a la página de inicio de sesión.

RedirectFromLoginPage Redirige a los usuarios autenticados a la URL solicitada originalmente.

SetAuthCookie Crea un ticket de autenticación para el userName dado y lo adjunta a la colección de cookies de la respuesta saliente. No realiza una redirección.

SignOut Dado un usuario autenticado, invocar SignOut elimina el ticket de autenticación estableciendo un SetCookie con un valor vacío. De este modo, se eliminan las cookies duraderas y las cookies por sesión.

Para poder utilizar la clase FormsAuthentication, deberíamos referenciar la biblioteca System.Web.Security utilizando Imports o using.

Una página de inicio de sesión es simplemente una página ASP.NET con un formulario HTML, un botón Submit y un procedimiento de evento Click para el botón Submit.

El siguiente es un ejemplo de un formulario en una página de inicio de sesión:

<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 botón Submit, se valida la información que se introduce en el formulario, y si ésta es válida, invocar FormsAuthentication.RedirectFromLoginPage. El método RedirectFromLoginPage emite la cookie y, a continuación, redirige al usuario a la página solicitada originalmente.

Crear una página de inicio de sesión

32 Seguridad en aplicaciones Web con Microsoft ASP.NET

El siguiente código de ejemplo utiliza una función personalizada denominada Login para validar el nombre de usuario y la contraseña, e invoca RedirectFromLoginPage si el nombre de usuario y la contraseña son válidos:

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 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"; } } Después de que un usuario haya sido autenticado, podemos obtener su nombre de usuario programáticamente utilizando la propiedad User.Identity.Name. Esta propiedad resulta útil para generar una aplicación que utilice el nombre del usuario como una clave para guardar información en una tabla de una base de datos o un recurso del directorio.

También podemos identificar dinámicamente el mecanismo de autenticación (Forms en este caso) utilizando User.Identity.AuthenticationType y ver si el usuario está autenticado utilizando User.Identity.IsAuthenticated.

Con la autenticación basada en formularios, User.Identity es un objeto de la clase FormsIdentity.

Cuando se utiliza la autenticación basada en formularios, la contraseña que un usuario introduce en la página de inicio de sesión se envía a través de la red en texto claro. Es importante utilizar SSL para encriptar estas contraseñas.

Visual Basic .NET

C#

Leer credenciales desde cookies

Nota

Seguridad en aplicaciones Web con Microsoft ASP.NET 33

Demostración: uso de la autenticación basada en formularios

Abrir IIS y configurar para autenticación anónima

Abrir Web.config y configurarlo para autenticación y autorización

Abrir la página de inicio de sesión y mostrar el código

Ejecutar la aplicación Web ASP.NET

Los estudiantes pueden acceder a la aplicación Web ASP.NET segura en el equipo del instructor

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

En esta demostración, veremos cómo configurar IIS para utilizar la autenticación basada en formularios con autenticación anónima; a continuación, veremos cómo configurar la autenticación y autorización en el archivo Web.config. Veremos cómo funciona la página de inicio de sesión, y algunas demostraciones de acceso a páginas seguras y a páginas no seguras. Finalmente, aprenderemos a conectar a una página segura en el equipo del instructor.

Los archivos para demostración se encuentran en el proyecto Pract14VB o Mob16CS de la solución 2310Demos.

Ejecutar la demostración

1. Hacer clic con el botón 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 botón 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 diálogo Métodos de autenticación de IIS. 5. Desactivar la casilla de verificación de Autenticación básica (la contraseña

se envía en texto claro).

Verificar que las casillas de verificación Autenticación implícita para servidores de dominios Windows y Autenticación integrada de Windows están desactivadas y que la casilla de verificación Acceso anónimo está seleccionada.

Introducción

Configurar IIS para acceso anónimo

Nota

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 diálogo Herencia omitida. 9. Abrir el archivo Web.config.

Utilizando los comentarios <!-- y -->, comentar la sección <system.web> que contiene el modo de autenticación “Windows” y quitar los comentarios de la sección <system.web> que contiene el modo de autenticación “Forms”. Explicar la nueva sección <authentication> que redirige todas las solicitudes no autenticadas a la página LoginDemo.aspx. Las mismas dos páginas (SecurePageDemo1.aspx y SecurePageDemo2.aspx) se han configurado como páginas seguras.

10. Guardar los cambios. 11. Abrir la página de código subyacente LoginDemo.aspx.vb o

LoginDemo.asox.cs. Mostrar lo siguiente:

• El procedimiento de evento cmdLogin_Click que valida el nombre de usuario y contraseña invocando la función Login, e invocar RedirectFromLoginPage, si las credenciales son válidas.

• El primer parámetro de RedirectFromLoginPage es la identidad de usuario que deseamos guardar se encuentra en la cookie. A continuación, durante la sesión, esta identidad puede ser leída desde cualquier página utilizando User.Identity.Name.

• RedirectFromLoginPage crea una cookie de autenticación temporal (no persistente) (segundo parámetro establecido a false).

• Para utilizar RedirectFromLoginPage, debemos importar System.Web.Security.

• El código de la función Login. Mostrar cómo la función Login invoca el procedimiento almacenado EmployeeLogin para verificar las credenciales introducidas consultándolas a la base de datos.

• Abrir Microsoft SQL Server™ Enterprise Manager, y, a continuación, abrir la base de datos de Coho y mostrar el registro en la tabla Logins. Finalmente, mostrar el procedimiento almacenado EmployeeLogin.

Cuando veamos la base de datos Coho, observar que en la autenticación basada en formularios, a diferencia de la autenticación basada en Windows, depende de nosotros como desarrolladores el diseñar y gestionar una base de datos de usuarios.

12. Generar el proyecto. 13. Abrir un nuevo navegador e ir a

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

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

Configurar la seguridad en el archivo Web.config

Mostrar la página LoginDemo.aspx

Importante

Visual Basic .NET C#

Visual Basic .NET C#

Seguridad en aplicaciones Web con Microsoft ASP.NET 35

Mostrar que somos redirigidos automáticamente a la página LoginDemo.aspx. Mostrar que la URL, que contiene la página SecurePageDemo1.aspx, es la página necesaria para redirigir al usuario a la página solicitada, si las credenciales son correctas.

15. Escribir las credenciales [email protected] en Nombre de usuario (Email), introducir una contraseña no válida y hacer clic en Sign In Now. El inicio de sesión fallará porque la contraseña no es válida.

16. Introducir las credenciales [email protected] en Nombre de usuario (Email), someone en Contraseña, y hacer clic de nuevo en Sign In Now. Seremos redirigidos a la página SecurePageDemo1.aspx.

17. La página SecurePageDemo1.aspx debería mostrar el nombre de usuario 1 (que es la identidad que está almacenada en la cookie en LoginDemo.aspx) y el tipo de autenticación Forms. Ahora podemos acceder a cualquier página segura, siempre que no cerremos el navegador. Si cerramos el navegador, deberemos pasar de nuevo por el proceso de autenticación debido a que la cookie es temporal (no persistente).

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

19. Indicar a los estudiantes que vayan a:

http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx Escribir las siguientes credenciales, nombre: [email protected], y contraseña: someone, cuando se soliciten. Después de introducir las credenciales, los estudiantes deberían poder ver SecurePageDemo1.aspx y SecurePageDemo2.aspx.

Visual Basic .NET C#

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

36 Seguridad en aplicaciones Web con Microsoft ASP.NET

Lección: descripción de la autenticación mediante Microsoft Passport

Cómo funciona Microsoft Passport

Otros recursos de Microsoft Passport

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

La ventaja de Microsoft Passport es que los usuarios pueden presentar las mismas credenciales en cualquier sitio Web participante, y únicamente deben iniciar sesión una vez. Cuando los usuarios cierran su navegador o indican que desean finalizar la sesión, la cookie se destruye y el usuario debe iniciar sesión de nuevo para acceder a los recursos de alguno de los sitios participantes.

En esta lección, estudiaremos el conjunto de eventos que tiene lugar durante la autenticación mediante Microsoft Passport. También estudiaremos cómo implementar la autenticación con Microsoft Passport.

En esta lección, aprenderemos a:

Describir el conjunto de eventos que tiene lugar durante la autenticación con Microsoft Passport.

Identificar otros recursos de Microsoft Passport.

Introducción

Objetivos de la lección

Seguridad en aplicaciones Web con Microsoft ASP.NET 37

Cómo funciona Microsoft Passport

sitioweb.msftsitioweb.msft

ClienteCliente

Passport.comPassport.com

El cliente solicita una página al host111

222

333

444

555

El sitio redirige al cliente a Passport.com

El cliente es redirigido e inicia sesión en Passport.com

Passport devuelve una cookiecon la información del ticket

666

El cliente accede al host, esta vez con la información del ticket

El host devuelve un formulario Web Form y posiblemente una nueva cookie que puede leer y escribir

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

Durante la autenticación de usuarios utilizando Microsoft Passport, se producen una serie de eventos.

1. Cuando el cliente solicita una página segura del sitio Web (host), la solicitud se envía primero a IIS. IIS autentica al usuario como anónimo 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 sesión que envía al cliente. El usuario proporciona la información adecuada de inicio de sesión y la envía 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 autenticación.

5. El cliente envía la solicitud inicial, esta vez con la información del ticket de autenticación, a la aplicación Web ASP.NET.

6. De nuevo, IIS autentica al usuario como anónimo. ASP.NET autentica al usuario basándose en el ticket de autenticación, 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 también utilicen la autenticación mediante Microsoft Passport.

Introducción

Serie de eventos que tienen lugar en la autenticación de 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

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

Es posible que, cuando estudiemos de Microsoft Passport, necesitemos acceder a recursos para encontrar respuestas a preguntas específicas. Los dos sitios Web siguientes pretenden ofrecer un punto de partida para encontrar más información sobre Microsoft Passport.

Podemos encontrar información sobre Microsoft Passport en los siguientes sitios:

El enlace de información para desarrolladores en http://www.passport.com Los recursos de http://msdn.microsoft.com

Introducción

Sitios Web