Está en la página 1de 40

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 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

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

Introducción 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.
Objetivos 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.
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?

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

Introducción 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).
Objetivos de la lección 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.
Seguridad en aplicaciones Web con Microsoft ASP.NET 3

Autenticación frente a autorización

„ Autenticación
z Acepta credenciales de un usuario
z Valida las credenciales
„ Autorización
z En función de las credenciales de autenticación
suministradas, determina el derecho de acceso a un
recurso
z Puede asignarse por nombre de usuario o por rol

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

Introducción 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

Autenticació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®.
Autorización 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.
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 Windows


z Depende del sistema operativo Windows y de IIS
z El usuario solicita una página Web segura y la solicitud pasa por IIS
z Una vez IIS verifica las credenciales, se devuelve la página Web segura
„ Autenticación basada en formularios
z Las solicitudes no autenticadas son redirigidas a un formulario HTML
z El usuario proporciona credenciales y envía el formulario HTML
z Una vez verificadas las credenciales, se suministra una cookie de
autenticación
„ Autenticación mediante Microsoft Passport
z Servicio de autenticación centralizado que ofrece una única opción de inicio
de sesión
z Microsoft Passport es un Servicio Web XML

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

Introducción 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.
Métodos de ASP.NET soporta tres tipos de métodos de autenticación:
autenticación
„ Autenticación basada en Windows
„ Autenticación basada en formularios
„ Autenticación mediante Microsoft Passport

Autenticación basada en En la autenticación basada en Windows, la aplicación Web ASP.NET depende


Windows 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.
Autenticación basada en La autenticación basada en formularios hace referencia a un sistema donde
formularios 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
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.
Autenticación mediante La autenticación mediante Passport consiste en un servicio de autenticación
Microsoft Passport 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.
6 Seguridad en aplicaciones Web con Microsoft ASP.NET

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


Método Ventajas Inconvenientes

ƒ Utiliza infraestructura Windows ƒ No apropiado para


Autenticación
existente la mayoría de
basada en
ƒ Controla el acceso a aplicaciones de
Windows información confidencial Internet

Autenticación ƒ Adecuada para aplicaciones de


basada en Internet ƒ Basada en cookies
formularios ƒ Soporta todo tipo de clientes
ƒ Inicio de sesión único para
muchos sitios de Internet
Autenticación ƒ No es necesario mantener una
mediante base de datos para almacenar ƒ Basada en cookies
Microsoft información del usuario ƒ Implica cuota
Passport ƒ Permite a los desarrolladores
personalizar el aspecto de la
página de inscripción

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

Introducción 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.
Autenticación basada en La autenticación basada en Windows utiliza la infraestructura de Windows
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.
Seguridad en aplicaciones Web con Microsoft ASP.NET 7

Autenticación basada en La autenticación basada en formularios es una buena solución si se desea


formularios 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.
Autenticación mediante La autenticación mediante Microsoft Passport tiene varias ventajas, incluyendo:
Microsoft Passport
„ 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.
8 Seguridad en aplicaciones Web con Microsoft ASP.NET

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


Nivel de
Mecanismos Descripció
Descripción
seguridad
Acceso anónimo Ninguno ƒ No se produce autenticación

ƒ El cliente envía nombre de usuario y


Bajo contraseña como texto claro
Autenticación ƒ Puede encriptarse utilizando SSL
(Medio con SSL)
básica ƒ Parte de la especificación HTTP y
soportado por la mayoría de
exploradores
ƒ Envía la información en un hash (o
Autenticación digest) codificado
Medio
implícita ƒ Requiere Internet Explorer 5 o superior
ƒ Requiere Active Directory
ƒ Utiliza NTLM o Kerberos
Seguridad
ƒ Generalmente adecuado para intranets,
integrada de
Alto no Internet
Windows
ƒ No funciona a través de muchos
cortafuegos
*****************************

Introducción 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

Acceso anónimo 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.

Nota La cuenta predeterminada IUSR_ nombreequipo puede modificarse


mediante el complemento de administración de IIS.

Autenticación básica 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
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.
Autenticación implícita 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®.

Nota 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.

Seguridad integrada de Si el usuario que realiza la solicitud ya ha sido autenticado en una red basada en
Windows 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.

Nota 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.
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

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

Introducció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.
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:
z Encriptación de datos
- Asegura que los datos enviados son leídos únicamente por un
servidor destinatario seguro
z Autenticación de servidor
- Asegura que los datos se envían al servidor correcto
- Utiliza los certificados de servidor y de cliente
z 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

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

Introducción 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.

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

¿Qué es SSL? 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

Encriptación 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.
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 La comunicación es mucho No es muy segura, los mensajes


40 bits más rápida. pueden ser modificados.
Clave de sesión de Muy segura, los mensajes La comunicación es bastante más
128 bits encriptados con clave de lenta; cuanto más larga es la clave,
sesión de 128 bits se más trabajo deben realizar el
consideran inquebrantables. servidor y el navegador para
encriptar y desencriptar el mensaje.

Autenticación de La autenticación de servidor garantiza que los datos se envían al servidor


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.
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
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.
Certificado de cliente SSL también soporta certificados de cliente. Los certificados de cliente se
utilizan para autenticar navegadores Web en lugar de servidores Web.
Integridad de datos 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.
Uso de SSL en páginas Después de configurar nuestro servidor para que utilice SSL, podemos solicitar
ASP.NET 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.

Nota ASP.NET proporciona la propiedad Request.IsSecureConnection que


nos permite determinar si nos encontramos en una conexión https segura.
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

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

Introducción 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.
Objetivos de la lección 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.
Seguridad en aplicaciones Web con Microsoft ASP.NET 15

Cómo habilitar la autenticación basada en Windows

11„ Configurar IIS para utilizar uno o varios de los


siguientes mecanismos de autenticación :
z Básica
z Implícita
z Seguridad de Windows integrada
22„ Establecer la autenticación basada en Windows en
Web.config
<system.web>
<system.web>
<Authentication
<Authentication mode="Windows"
mode="Windows" />
/>
</system.web>
</system.web>

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

Introducción 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.

Configurar IIS 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

Nota 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.
16 Seguridad en aplicaciones Web con Microsoft ASP.NET

Configurar la El segundo paso para securizar aplicaciones Web utilizando la autenticación


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>
Seguridad en aplicaciones Web con Microsoft ASP.NET 17

Cómo habilitar la autenticación basada en Windows (continuación)


33„ Establecer la autorización en Web.config

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

44„ Cuando los usuarios


acceden al formulario
Web Form, IIS solicita
información de inicio
de sesión

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

Introducción 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.
Configurar la Para indicar que sólo algunas páginas específicas son seguras, debemos crear
autorización 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>.

Nota 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>.
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>

Nota 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>
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.
IIS solicita información El último paso del proceso para habilitar la autenticación basada en Windows se
de inicio de sesión a los produce cuando los usuarios intentan acceder a un formulario Web Form desde
usuarios 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.
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
lblAuthUser.Text == User.Identity.Name
User.Identity.Name
lblAuthType.Text = User.Identity.AuthenticationType
lblAuthType.Text = User.Identity.AuthenticationType
lblIsAuth.Text
lblIsAuth.Text == User.Identity.IsAuthenticated
User.Identity.IsAuthenticated

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

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

Introducción 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:
Visual Basic .NET lblAuthUser.Text = User.Identity.Name
lblAuthType.Text = User.Identity.AuthenticationType
lblIsAuth.Text = User.Identity.IsAuthenticated

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

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


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
z Los estudiantes pueden acceder a la
aplicación Web ASP.NET segura en el
equipo del instructor

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

Introducción 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
Configurar IIS con 1. Hacer clic con el botón derecho en Mi PC y hacer clic en Administrar.
autenticación básica
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.

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


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.
Crear un nuevo usuario 9. En la consola Administración de equipos, expandir Herramientas del
en el equipo local 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.
Mostrar la configuración 11. Abrir el proyecto Pract14VB o Pract14CS y visualizar el archivo
de seguridad en el Web.config en Microsoft Visual Studio® .NET.
archivo Web.config
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.
Mostrar el nombre y tipo 12. Abrir la página de código subyacente SecurePageDemo1.aspx y explicar el
de autenticación en un código User.Identity.Name y User.Identity.AuthenticationType.
formulario Web Form.
Note 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:
Seguridad en aplicaciones Web con Microsoft ASP.NET 23

Visual Basic .NET http://localhost/Pract14VB/NonSecurePageDemo.aspx


C# http://localhost/Pract14CS/NonSecurePageDemo.aspx
24 Seguridad en aplicaciones Web con Microsoft ASP.NET

15. Ir a:
Visual Basic .NET http://localhost/Pract14VB/SecurePageDemo1.aspx
C# 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:
Visual Basic .NET http://localhost/Pract14VB/SecurePageDemo2.aspx
C# 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:
Visual Basic .NET http://localhost/Pract14VB/SecurePageDemo1.aspx
C# http://localhost/Pract14CS/SecurePageDemo1.aspx
Mostrar que esta vez no se solicitan las credenciales.
Los estudiantes acceder 21. Indicar a los estudiantes que vayan a:
al equipo del instructor

Visual Basic .NET http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx


C# 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.
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

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

Introducción 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.
Objetivos de la lecció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.
26 Seguridad en aplicaciones Web con Microsoft ASP.NET

Descripción de la autenticación basada en formularios

11 22 Autenticación
IIS ASP.NET Forms

El cliente solicita página


No
autenticado

Nombre usuario
8 Autenticado

66 Alguien 44 Autorizado
Acceso denegado

8
Contraseña Página de inicio
*********** (los usuarios
introducen sus
No Enviar
Enviar credenciales)
autenticado 33
Autenticado

Cookie de Autorizado
autenticación 77 Página segura
55 solicitada

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

Introducción 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.
Serie de eventos que En la autenticación basada en formularios, se produce la siguiente serie de
tienen lugar durante la eventos:
autenticación basada en
formularios 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.
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

11
„ Configurar IIS para utilizar autenticación anónima
„
22 Establecer la autenticación basada en formularios en
Web.config

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

„
33 Establecer la autorización
44
„ Generar un formulario Web
Form de inicio de sesión

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

Introducción Para habilitar la autenticación basada en formularios para nuestra aplicación


Web, debemos realizar los cuatro pasos siguientes:
Habilitar la autenticación 1. Configurar IIS para utilizar la autenticación anónima, para que el usuario
basada en formularios sea autenticado por ASP.NET y no por IIS.
Configurar la 2. Configurar el método de autenticación basado en formularios (Forms) para
autenticación 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.
Configurar la 3. Configurar la sección <authorization> de Web.config. El proceso de
autorización 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
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.
Generar un formulario 4. Generar un formulario Web Form de inicio de sesión, login.aspx.
Web Form de inicio de Login.aspx puede ser una página sencilla con dos campos, uno para el
sesión 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.
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.Security


„ La página de inicio de sesión verifica y examina las credenciales de un
usuario
private
private void
void cmdLogin_Click(object
cmdLogin_Click(object sender,
sender, EventArgs
EventArgs e)
e)
{{
if
if (login(txtEmail.Text,
(login(txtEmail.Text, txtPassword.Text))
txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text,
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false);
false);
}}

Sub
Sub cmdLogin_Click(s
cmdLogin_Click(s As
As Object,
Object, ee As
As eventArgs)
eventArgs)
If (login(txtEmail.Text, txtPassword.Text))
If (login(txtEmail.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text,
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False)
False)
End
End If
If
End
End Sub
Sub
„ Leer las credenciales del usuario desde una cookie
z User.Identity.Name devuelve el valor guardado por
FormsAuthentication.RedirectFromLoginPage

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

Introducción 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.
¿Cómo funciona una Si el modo de autenticación está establecido a “Forms”, ASP.NET busca una
página de inicio de cookie de autenticación adjunta a la solicitud de una página segura. Si
sesión? 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).
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.

Crear una página de Para poder utilizar la clase FormsAuthentication, deberíamos referenciar la
inicio de sesión 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.
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:
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 Después de que un usuario haya sido autenticado, podemos obtener su nombre
cookies 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.

Nota 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.
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
z Los estudiantes pueden acceder a la
aplicación Web ASP.NET segura en el
equipo del instructor

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

Introducción 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
Configurar IIS para 1. Hacer clic con el botón derecho en Mi PC y clic en Administrar.
acceso anónimo
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).

Nota 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.
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.
Configurar la seguridad 9. Abrir el archivo Web.config.
en 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.
Mostrar la página 11. Abrir la página de código subyacente LoginDemo.aspx.vb o
LoginDemo.aspx 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.

Importante 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
Visual Basic .NET http://localhost/Pract14VB/NonSecurePageDemo.aspx
C# http://localhost/Pract14CS/NonSecurePageDemo.aspx
14. Ir a:
Visual Basic .NET http://localhost/Pract14VB/SecurePageDemo1.aspx
C# http://localhost/Pract14CS/SecurePageDemo1.aspx
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 someone@cohowinery.com 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 someone@cohowinery.com 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:
Visual Basic .NET http://localhost/Pract14VB/SecurePageDemo2.aspx
C# http://localhost/Pract14CS/SecurePageDemo2.aspx
Mostrar que esta vez no se nos pide que introduzcamos nuestras
credenciales.
Los estudiantes 19. Indicar a los estudiantes que vayan a:
acceden al equipo del
instructor
Visual Basic .NET http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx
C# http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx
Escribir las siguientes credenciales, nombre: someone@cohowinery.com, y
contraseña: someone, cuando se soliciten.
Después de introducir las credenciales, los estudiantes deberían poder ver
SecurePageDemo1.aspx y SecurePageDemo2.aspx.
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

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

Introducción 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.
Objetivos de la lección 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.
Seguridad en aplicaciones Web con Microsoft ASP.NET 37

Cómo funciona Microsoft Passport

11 El cliente solicita una página al host


sitioweb.msft
22 El sitio redirige al cliente a Passport.com

33 El cliente es redirigido e inicia sesión en


Passport.com
44 Passport devuelve una cookie
con la información del
ticket
55 El cliente accede al host, esta
vez con la información
del ticket Cliente
66 El host devuelve un formulario Passport.com
Web Form y posiblemente
una nueva cookie que
puede leer y escribir

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

Introducción Durante la autenticación de usuarios utilizando Microsoft Passport, se producen


una serie de eventos.
Serie de eventos que 1. Cuando el cliente solicita una página segura del sitio Web (host), la solicitud
tienen lugar en la se envía primero a IIS. IIS autentica al usuario como anónimo y pasa la
autenticación de solicitud a ASP.NET.
Microsoft Passport
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.
38 Seguridad en aplicaciones Web con Microsoft ASP.NET

Otros recursos de Microsoft Passport

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

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

Introducción 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.
Sitios Web 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

También podría gustarte