03.01.2015 Views

Seguridad en aplicaciones Web con Microsoft ASP.NET - Willy .Net

Seguridad en aplicaciones Web con Microsoft ASP.NET - Willy .Net

Seguridad en aplicaciones Web con Microsoft ASP.NET - Willy .Net

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong><br />

<strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Índice<br />

Descripción 1<br />

Lección: descripción de la seguridad para <strong>aplicaciones</strong> <strong>Web</strong> 2<br />

Lección: trabajar <strong>con</strong> aut<strong>en</strong>ticación basada <strong>en</strong> Windows 14<br />

Lección: trabajar <strong>con</strong> aut<strong>en</strong>ticación basada <strong>en</strong> formularios 25<br />

Lección: descripción de la aut<strong>en</strong>ticación mediante <strong>Microsoft</strong><br />

Passport 36


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 1<br />

Descripción<br />

• Descripción de la seguridad para <strong>aplicaciones</strong> <strong>Web</strong><br />

• Trabajar <strong>con</strong> aut<strong>en</strong>ticación basada <strong>en</strong> Windows<br />

• Trabajar <strong>con</strong> aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

• Descripción de la aut<strong>en</strong>ticación de <strong>Microsoft</strong> Passport<br />

*****************************<br />

Introducción<br />

Objetivos<br />

La seguridad de las <strong>aplicaciones</strong> <strong>Web</strong> es un tema crítico y complejo para los<br />

desarrolladores <strong>Web</strong>. Un sistema seguro requiere una cuidadosa planificación, y<br />

los administradores y desarrolladores de sitios <strong>Web</strong> deb<strong>en</strong> t<strong>en</strong>er un<br />

<strong>con</strong>ocimi<strong>en</strong>to muy claro de las opciones de que dispon<strong>en</strong> cuando securizan sus<br />

<strong>aplicaciones</strong> <strong>Web</strong>.<br />

<strong>Microsoft</strong>® <strong>ASP</strong>.<strong>NET</strong> está sincronizado <strong>con</strong> el .<strong>NET</strong> Framework e Internet<br />

Information Server (IIS) para proporcionar seguridad a las <strong>aplicaciones</strong> <strong>Web</strong>.<br />

Este módulo trata <strong>en</strong> detalle los distintos métodos de seguridad para las<br />

<strong>aplicaciones</strong> <strong>Web</strong>.<br />

En este módulo, apr<strong>en</strong>deremos a:<br />

• Describir los métodos de aut<strong>en</strong>ticación de <strong>ASP</strong>.<strong>NET</strong> e IIS.<br />

• Utilizar la aut<strong>en</strong>ticación basada <strong>en</strong> Windows para asegurar <strong>aplicaciones</strong><br />

<strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong>.<br />

• Utilizar la aut<strong>en</strong>ticación basada <strong>en</strong> formularios para asegurar <strong>aplicaciones</strong><br />

<strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong>.<br />

• Utilizar <strong>Microsoft</strong> Passport para asegurar <strong>aplicaciones</strong> <strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong>.


2 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Lección: descripción de la seguridad para <strong>aplicaciones</strong><br />

<strong>Web</strong><br />

• Aut<strong>en</strong>ticación fr<strong>en</strong>te a autorización<br />

• ¿Cuáles son los métodos de aut<strong>en</strong>ticación de <strong>ASP</strong>.<strong>NET</strong><br />

• Multimedia: métodos de aut<strong>en</strong>ticación de <strong>ASP</strong>.<strong>NET</strong><br />

• Comparación de los métodos de aut<strong>en</strong>ticación de<br />

<strong>ASP</strong>.<strong>NET</strong><br />

• ¿Cuáles son los mecanismos de aut<strong>en</strong>ticación de IIS<br />

• Demostración: uso de los mecanismos de aut<strong>en</strong>ticación<br />

de IIS<br />

• ¿Qué es Secure Sockets Layer<br />

*****************************<br />

Introducción<br />

Objetivos de la lección<br />

Por definición, las <strong>aplicaciones</strong> <strong>Web</strong> ofrec<strong>en</strong> a los usuarios acceso a un recurso<br />

c<strong>en</strong>tralizado, el servidor <strong>Web</strong>, y, a través de él, acceso a servidores de bases de<br />

datos. Conoci<strong>en</strong>do e implem<strong>en</strong>tando medidas de seguridad adecuadas para<br />

nuestra aplicación <strong>Web</strong>, podemos proteger nuestros propios recursos, además<br />

de proporcionar un <strong>en</strong>torno seguro <strong>en</strong> el que los usuarios trabaj<strong>en</strong><br />

cómodam<strong>en</strong>te.<br />

En esta lección, se describ<strong>en</strong> distintos <strong>con</strong>ceptos de seguridad: aut<strong>en</strong>ticación,<br />

autorización y mecanismos de aut<strong>en</strong>ticación de IIS. También estudiaremos el<br />

protocolo Secure Sockets Layer (SSL).<br />

En esta lección, apr<strong>en</strong>deremos a:<br />

• Describir los dos <strong>con</strong>ceptos fundam<strong>en</strong>tales de seguridad para asegurar una<br />

aplicación <strong>Web</strong>.<br />

• Describir los tres métodos de aut<strong>en</strong>ticación de <strong>ASP</strong>.<strong>NET</strong>.<br />

• Distinguir <strong>en</strong>tre los tres métodos de aut<strong>en</strong>ticación de <strong>ASP</strong>.<strong>NET</strong>.<br />

• Describir los cuatro mecanismos de aut<strong>en</strong>ticación de IIS.<br />

• Describir SSL.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 3<br />

Aut<strong>en</strong>ticación fr<strong>en</strong>te a autorización<br />

• Aut<strong>en</strong>ticación<br />

• Acepta cred<strong>en</strong>ciales de un usuario<br />

• Valida las cred<strong>en</strong>ciales<br />

• Autorización<br />

• En función de las cred<strong>en</strong>ciales de aut<strong>en</strong>ticación<br />

suministradas, determina el derecho de acceso a un<br />

recurso<br />

• Puede asignarse por nombre de usuario o por rol<br />

*****************************<br />

Introducción<br />

Aut<strong>en</strong>ticación<br />

Autorización<br />

Para poder empezar a trabajar <strong>con</strong> temas relacionados <strong>con</strong> la seguridad,<br />

debemos estar familiarizados <strong>con</strong> los dos <strong>con</strong>ceptos fundam<strong>en</strong>tales de seguridad<br />

para las <strong>aplicaciones</strong> <strong>Web</strong>:<br />

• Aut<strong>en</strong>ticación<br />

• Autorización<br />

La aut<strong>en</strong>ticación es el proceso de obt<strong>en</strong>er las cred<strong>en</strong>ciales de id<strong>en</strong>tificación de<br />

un usuario, como un nombre y una <strong>con</strong>traseña, y validar esas cred<strong>en</strong>ciales<br />

<strong>con</strong>sultando a alguna autoridad, como una base de datos. Si las cred<strong>en</strong>ciales son<br />

válidas, la <strong>en</strong>tidad que las ha pres<strong>en</strong>tado se <strong>con</strong>sidera una id<strong>en</strong>tidad aut<strong>en</strong>ticada.<br />

Por ejemplo, todos los usuarios deb<strong>en</strong> proporcionar un nombre de usuario y una<br />

<strong>con</strong>traseña cada vez que inician sesión <strong>en</strong> una red. Estas cred<strong>en</strong>ciales se validan<br />

<strong>con</strong>sultándolas a una autoridad, como una base de datos o un servidor de<br />

dominio basado <strong>en</strong> <strong>Microsoft</strong> Windows®.<br />

Después de que una id<strong>en</strong>tidad haya sido aut<strong>en</strong>ticada, el proceso de autorización<br />

determina si esa id<strong>en</strong>tidad ti<strong>en</strong>e acceso a un recurso específico. El proceso de<br />

autorización limita los derechos de acceso <strong>con</strong>cedi<strong>en</strong>do o d<strong>en</strong>egando permisos<br />

específicos a una id<strong>en</strong>tidad aut<strong>en</strong>ticada.<br />

Por ejemplo, podemos autorizar al usuario Ricardo Heras para que acceda a la<br />

impresora de color, pero d<strong>en</strong>egar el acceso al usuario Bárbara Gómez. De modo<br />

similar, podemos autorizar únicam<strong>en</strong>te a los usuarios del grupo Multimedia el<br />

acceso a la impresora de color y d<strong>en</strong>egar el acceso al resto de usuarios.


4 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

¿Cuáles son los métodos de aut<strong>en</strong>ticación de <strong>ASP</strong>.<strong>NET</strong><br />

• Aut<strong>en</strong>ticación basada <strong>en</strong> Windows<br />

• Dep<strong>en</strong>de del sistema operativo Windows y de IIS<br />

• El usuario solicita una página <strong>Web</strong> segura y la solicitud pasa por IIS<br />

• Una vez IIS verifica las cred<strong>en</strong>ciales, se devuelve la página <strong>Web</strong> segura<br />

• Aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

• Las solicitudes no aut<strong>en</strong>ticadas son redirigidas a un formulario HTML<br />

• El usuario proporciona cred<strong>en</strong>ciales y <strong>en</strong>vía el formulario HTML<br />

• Una vez verificadas las cred<strong>en</strong>ciales, se suministra una cookie de<br />

aut<strong>en</strong>ticación<br />

• Aut<strong>en</strong>ticación mediante <strong>Microsoft</strong> Passport<br />

• Servicio de aut<strong>en</strong>ticación c<strong>en</strong>tralizado que ofrece una única opción de inicio<br />

de sesión<br />

• <strong>Microsoft</strong> Passport es un Servicio <strong>Web</strong> XML<br />

*****************************<br />

Introducción<br />

Métodos de<br />

aut<strong>en</strong>ticación<br />

Aut<strong>en</strong>ticación basada <strong>en</strong><br />

Windows<br />

Aut<strong>en</strong>ticación basada <strong>en</strong><br />

formularios<br />

<strong>ASP</strong>.<strong>NET</strong> implem<strong>en</strong>ta la aut<strong>en</strong>ticación mediante métodos de aut<strong>en</strong>ticación. Los<br />

métodos de aut<strong>en</strong>ticación de <strong>ASP</strong>.<strong>NET</strong> <strong>con</strong>ti<strong>en</strong><strong>en</strong> el código necesario para<br />

aut<strong>en</strong>ticar las cred<strong>en</strong>ciales de usuario.<br />

<strong>ASP</strong>.<strong>NET</strong> soporta tres tipos de métodos de aut<strong>en</strong>ticación:<br />

• Aut<strong>en</strong>ticación basada <strong>en</strong> Windows<br />

• Aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

• Aut<strong>en</strong>ticación mediante <strong>Microsoft</strong> Passport<br />

En la aut<strong>en</strong>ticación basada <strong>en</strong> Windows, la aplicación <strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong> dep<strong>en</strong>de<br />

del sistema operativo Windows para aut<strong>en</strong>ticar al usuario. <strong>ASP</strong>.<strong>NET</strong> utiliza la<br />

aut<strong>en</strong>ticación basada <strong>en</strong> Windows <strong>con</strong>juntam<strong>en</strong>te <strong>con</strong> la aut<strong>en</strong>ticación de IIS.<br />

En la aut<strong>en</strong>ticación basada <strong>en</strong> Windows, el usuario solicita una página <strong>Web</strong><br />

segura de la aplicación <strong>Web</strong>, y la solicitud pasa por IIS. Si las cred<strong>en</strong>ciales del<br />

usuario no coincid<strong>en</strong> <strong>con</strong> las de un usuario autorizado, IIS rechaza la solicitud.<br />

A <strong>con</strong>tinuación, el usuario debe introducir su nombre y <strong>con</strong>traseña <strong>en</strong> el<br />

formulario de inicio de sesión. IIS verifica de nuevo las cred<strong>en</strong>ciales. Si son<br />

correctas, IIS dirige la solicitud original a la aplicación <strong>Web</strong> y el usuario recibe<br />

la página <strong>Web</strong> segura.<br />

La aut<strong>en</strong>ticación basada <strong>en</strong> formularios hace refer<strong>en</strong>cia a un sistema donde<br />

solicitudes no aut<strong>en</strong>ticadas son redirigidas a un formulario Hypertext Markup<br />

Language (HTML) utilizando la redirección <strong>en</strong> el lado del cli<strong>en</strong>te Hypertext<br />

Transfer Protocol (HTTP). El usuario proporciona las cred<strong>en</strong>ciales y <strong>en</strong>vía el<br />

formulario. Si la aplicación valida las cred<strong>en</strong>ciales <strong>en</strong> el formulario, el sistema<br />

suministra al usuario una cookie de aut<strong>en</strong>ticación. Las solicitudes subsigui<strong>en</strong>tes


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 5<br />

del usuario se emit<strong>en</strong> <strong>con</strong> la cookie de aut<strong>en</strong>ticación <strong>en</strong> el <strong>en</strong>cabezado de la<br />

solicitud, y el usuario es aut<strong>en</strong>ticado <strong>en</strong> base a dicho <strong>en</strong>cabezado.<br />

Aut<strong>en</strong>ticación mediante<br />

<strong>Microsoft</strong> Passport<br />

La aut<strong>en</strong>ticación mediante Passport <strong>con</strong>siste <strong>en</strong> un servicio de aut<strong>en</strong>ticación<br />

c<strong>en</strong>tralizado, proporcionado por <strong>Microsoft</strong>, que ofrece una única opción de<br />

inicio de sesión y unos servicios <strong>con</strong> un perfil básico a los sitios suscritos. Los<br />

usuarios que se registr<strong>en</strong> utilizando Passport estarán aut<strong>en</strong>ticados para acceder a<br />

sitios <strong>Web</strong> utilizando una única cu<strong>en</strong>ta Passport. <strong>Microsoft</strong> Passport es un<br />

Servicio <strong>Web</strong> XML, y es una parte es<strong>en</strong>cial de <strong>Microsoft</strong> .<strong>NET</strong>.


6 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Comparación de los métodos de aut<strong>en</strong>ticación de <strong>ASP</strong>.<strong>NET</strong><br />

Método<br />

Aut<strong>en</strong>ticación<br />

basada <strong>en</strong><br />

Windows<br />

Aut<strong>en</strong>ticación<br />

basada <strong>en</strong><br />

formularios<br />

Aut<strong>en</strong>ticación<br />

mediante<br />

<strong>Microsoft</strong><br />

Passport<br />

V<strong>en</strong>tajas<br />

• Utiliza infraestructura Windows<br />

exist<strong>en</strong>te<br />

• Controla el acceso a<br />

información <strong>con</strong>fid<strong>en</strong>cial<br />

• Adecuada para <strong>aplicaciones</strong> de<br />

Internet<br />

• Soporta todo tipo de cli<strong>en</strong>tes<br />

• Inicio de sesión único para<br />

muchos sitios de Internet<br />

• No es necesario mant<strong>en</strong>er una<br />

base de datos para almac<strong>en</strong>ar<br />

información del usuario<br />

• Permite a los desarrolladores<br />

personalizar el aspecto de la<br />

página de inscripción<br />

In<strong>con</strong>v<strong>en</strong>i<strong>en</strong>tes<br />

• No apropiado para<br />

la mayoría de<br />

<strong>aplicaciones</strong> de<br />

Internet<br />

• Basada <strong>en</strong> cookies<br />

• Basada <strong>en</strong> cookies<br />

• Implica cuota<br />

*****************************<br />

Introducción<br />

Aut<strong>en</strong>ticación basada <strong>en</strong><br />

Windows<br />

Cada uno de los tres métodos de aut<strong>en</strong>ticación que soporta <strong>ASP</strong>.<strong>NET</strong> (basado<br />

<strong>en</strong> Windows, basado <strong>en</strong> formularios y <strong>Microsoft</strong> Passport) es adecuado para<br />

situaciones específicas. Cada método ti<strong>en</strong>e diversas v<strong>en</strong>tajas e in<strong>con</strong>v<strong>en</strong>i<strong>en</strong>tes.<br />

La aut<strong>en</strong>ticación basada <strong>en</strong> Windows utiliza la infraestructura de Windows<br />

exist<strong>en</strong>te y, por tanto, es más adecuado <strong>en</strong> situaciones <strong>en</strong> las que se dispone de<br />

un número fijo de usuarios <strong>con</strong> cu<strong>en</strong>tas de usuario Windows exist<strong>en</strong>tes. Dos<br />

ejemplos de situaciones de este tipo son:<br />

• El desarrollo de una intranet para una organización. Es muy probable que la<br />

organización disponga de cu<strong>en</strong>tas de usuario Windows <strong>con</strong>figuradas para<br />

cada empleado.<br />

• El <strong>con</strong>trol del acceso a información <strong>con</strong>fid<strong>en</strong>cial. Por ejemplo, los usuarios<br />

del grupo de Recursos Humanos de una empresa pued<strong>en</strong> acceder a<br />

directorios que <strong>con</strong>ti<strong>en</strong><strong>en</strong> currículos de empleados e información de salarios.<br />

Podemos utilizar la aut<strong>en</strong>ticación basada <strong>en</strong> Windows para evitar que los<br />

empleados de otros grupos, como el grupo de Desarrolladores, accedan a<br />

estos docum<strong>en</strong>tos <strong>con</strong>fid<strong>en</strong>ciales.<br />

El in<strong>con</strong>v<strong>en</strong>i<strong>en</strong>te de la aut<strong>en</strong>ticación basada <strong>en</strong> Windows es que no es adecuada<br />

para la mayoría de <strong>aplicaciones</strong> de Internet. Por ejemplo, si estamos g<strong>en</strong>erando<br />

un sistema público de registro de usuarios y <strong>con</strong>traseñas, la aut<strong>en</strong>ticación<br />

basada <strong>en</strong> Windows no es una bu<strong>en</strong>a opción de aut<strong>en</strong>ticación. Con la<br />

aut<strong>en</strong>ticación basada <strong>en</strong> Windows, debe <strong>con</strong>figurarse una cu<strong>en</strong>ta de usuario de<br />

Windows válida por cada usuario que acceda a una página restringida. El<br />

proceso de agregar nuevas cu<strong>en</strong>tas de usuario no puede automatizarse<br />

fácilm<strong>en</strong>te.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 7<br />

Aut<strong>en</strong>ticación basada <strong>en</strong><br />

formularios<br />

Aut<strong>en</strong>ticación mediante<br />

<strong>Microsoft</strong> Passport<br />

La aut<strong>en</strong>ticación basada <strong>en</strong> formularios es una bu<strong>en</strong>a solución si se desea<br />

<strong>con</strong>figurar un sistema personalizado de registro de usuarios para un sitio <strong>Web</strong>.<br />

La v<strong>en</strong>taja de este tipo de aut<strong>en</strong>ticación es que nos permite almac<strong>en</strong>ar nombres<br />

de usuario y <strong>con</strong>traseñas <strong>en</strong> el mecanismo de almac<strong>en</strong>ami<strong>en</strong>to que deseemos, ya<br />

sea el archivo web.<strong>con</strong>fig, un archivo Ext<strong>en</strong>sible Markup Language (XML) o la<br />

tabla <strong>en</strong> una base de datos.<br />

La aut<strong>en</strong>ticación basada <strong>en</strong> formularios dep<strong>en</strong>de de cookies para determinar la<br />

id<strong>en</strong>tidad del usuario. Una vez habilitada la aut<strong>en</strong>ticación basada <strong>en</strong><br />

formularios, el usuario no puede acceder a la página solicitada a m<strong>en</strong>os que se<br />

<strong>en</strong>cu<strong>en</strong>tre <strong>en</strong> el cli<strong>en</strong>te una cookie específica. Si esta cookie no está, o si no es<br />

válida, <strong>ASP</strong>.<strong>NET</strong> rechaza la solicitud y devuelve una página de inicio de sesión.<br />

La aut<strong>en</strong>ticación mediante <strong>Microsoft</strong> Passport ti<strong>en</strong>e varias v<strong>en</strong>tajas, incluy<strong>en</strong>do:<br />

• Permite a los usuarios utilizar el mismo nombre de usuario y <strong>con</strong>traseña<br />

para iniciar sesión <strong>en</strong> numerosos sitios <strong>Web</strong>; por tanto, es m<strong>en</strong>os probable<br />

que los usuarios olvid<strong>en</strong> sus <strong>con</strong>traseñas. Por ejemplo, tanto <strong>Microsoft</strong><br />

Hotmail® como <strong>Microsoft</strong> MSN® utilizan <strong>Microsoft</strong> Passport para aut<strong>en</strong>ticar<br />

usuarios.<br />

• No es necesario <strong>con</strong>figurar y mant<strong>en</strong>er una base de datos para almac<strong>en</strong>ar la<br />

información de registro. <strong>Microsoft</strong> se <strong>en</strong>carga de realizar todo el<br />

mant<strong>en</strong>imi<strong>en</strong>to.<br />

• Proporciona opciones para personalizar el aspecto de las páginas de registro<br />

e inicio de sesión mediante plantillas.<br />

El uso de la aut<strong>en</strong>ticación mediante <strong>Microsoft</strong> Passport ti<strong>en</strong>e dos<br />

in<strong>con</strong>v<strong>en</strong>i<strong>en</strong>tes. En primer lugar, existe una cuota de suscripción por utilizar el<br />

servicio <strong>Microsoft</strong> Passport <strong>en</strong> desarrollo. En segundo lugar, la aut<strong>en</strong>ticación<br />

<strong>Microsoft</strong> Passport está basada <strong>en</strong> cookies.


8 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

¿Cuáles son los mecanismos de aut<strong>en</strong>ticación de IIS<br />

Mecanismos<br />

Nivel de<br />

seguridad<br />

Descripción<br />

Acceso anónimo<br />

Aut<strong>en</strong>ticación<br />

básica<br />

Aut<strong>en</strong>ticación<br />

implícita<br />

<strong>Seguridad</strong><br />

integrada de<br />

Windows<br />

Ninguno<br />

Bajo<br />

(Medio <strong>con</strong> SSL)<br />

Medio<br />

Alto<br />

• No se produce aut<strong>en</strong>ticación<br />

• El cli<strong>en</strong>te <strong>en</strong>vía nombre de usuario y<br />

<strong>con</strong>traseña como texto claro<br />

• Puede <strong>en</strong>criptarse utilizando SSL<br />

• Parte de la especificación HTTP y<br />

soportado por la mayoría de<br />

exploradores<br />

• Envía la información <strong>en</strong> un hash (o<br />

digest) codificado<br />

• Requiere Internet Explorer 5 o superior<br />

• Requiere Active Directory<br />

• Utiliza NTLM o Kerberos<br />

• G<strong>en</strong>eralm<strong>en</strong>te adecuado para intranets,<br />

no Internet<br />

• No funciona a través de muchos<br />

cortafuegos<br />

*****************************<br />

Introducción<br />

Acceso anónimo<br />

Para poder utilizar la aut<strong>en</strong>ticación basada <strong>en</strong> Windows, debemos <strong>con</strong>figurar<br />

antes el servidor <strong>Web</strong> IIS. Cuando un usuario solicita una página que requiere<br />

autorización, el usuario debe ser aut<strong>en</strong>ticado a través de IIS.<br />

IIS proporciona varios mecanismos que pued<strong>en</strong> utilizarse para establecer<br />

aut<strong>en</strong>ticación, incluy<strong>en</strong>do:<br />

• Acceso anónimo<br />

• Aut<strong>en</strong>ticación básica<br />

• Aut<strong>en</strong>ticación implícita<br />

• <strong>Seguridad</strong> integrada de Windows<br />

Para <strong>aplicaciones</strong> <strong>Web</strong> <strong>en</strong> las que usuarios des<strong>con</strong>ocidos realizan solicitudes,<br />

normalm<strong>en</strong>te <strong>aplicaciones</strong> <strong>Web</strong> públicas, IIS soporta un usuario anónimo, un<br />

usuario que no dispone de cred<strong>en</strong>ciales de aut<strong>en</strong>ticación. Cuando IIS recibe una<br />

solicitud de un usuario anónimo, IIS hace la solicitud a Windows utilizando la<br />

cu<strong>en</strong>ta predeterminada IUSR_nombreequipo.<br />

Nota La cu<strong>en</strong>ta predeterminada IUSR_ nombreequipo puede modificarse<br />

mediante el complem<strong>en</strong>to de administración de IIS.<br />

Aut<strong>en</strong>ticación básica<br />

IIS también soporta un modelo de aut<strong>en</strong>ticación básica. En la aut<strong>en</strong>ticación<br />

básica, se solicita a los usuarios sin cred<strong>en</strong>ciales que suministr<strong>en</strong> un nombre de<br />

usuario y una <strong>con</strong>traseña. Esta información se devuelve a IIS, y a partir de<br />

<strong>en</strong>tonces está disponible para la aplicación <strong>Web</strong>. La v<strong>en</strong>taja de la aut<strong>en</strong>ticación<br />

básica es que forma parte de la especificación HTTP y está soportada por la<br />

mayoría de navegadores. La aut<strong>en</strong>ticación básica proporciona un modo útil para<br />

ofrecer acceso restringido a una aplicación <strong>Web</strong> pública.<br />

Sin embargo, debido a que el usuario pasa un nombre de usuario y una<br />

<strong>con</strong>traseña a IIS <strong>en</strong> forma de texto claro, la aut<strong>en</strong>ticación básica no ofrece un


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 9<br />

nivel alto de seguridad. Para increm<strong>en</strong>tarlo, se utiliza SSL para <strong>en</strong>criptar<br />

nombres de usuario y <strong>con</strong>traseñas cuando se transmit<strong>en</strong> a través de la red.<br />

Aut<strong>en</strong>ticación implícita<br />

La aut<strong>en</strong>ticación implícita es similar a la aut<strong>en</strong>ticación básica, pero utiliza la<br />

<strong>en</strong>criptación para <strong>en</strong>viar información del usuario al servidor. Si el acceso<br />

anónimo está deshabilitado, se pide a los usuarios sus cred<strong>en</strong>ciales (información<br />

de inicio de sesión). El navegador combina esta información de inicio de sesión<br />

<strong>con</strong> el resto de información almac<strong>en</strong>ada <strong>en</strong> el cli<strong>en</strong>te, y <strong>en</strong>vía al servidor un<br />

hash codificado d<strong>en</strong>ominado hash MD5 (o Message Digest). El servidor ya<br />

dispone de una copia de esta información y recrea los destalles originales desde<br />

su propio hash y aut<strong>en</strong>tica el usuario. Este mecanismo únicam<strong>en</strong>te funciona <strong>con</strong><br />

<strong>Microsoft</strong> Internet Explorer 5 y superior, pero pasa a través de cortafuegos,<br />

servidores proxy e Internet.<br />

Sin embargo, la aut<strong>en</strong>ticación implícita únicam<strong>en</strong>te funciona <strong>con</strong> cu<strong>en</strong>tas de<br />

dominio dadas de alta <strong>en</strong> el servicio de directorios Active Directory®.<br />

Nota Para más información sobre la <strong>con</strong>figuración de las cu<strong>en</strong>tas de dominio<br />

de Active Directory para permitir la aut<strong>en</strong>ticación implícita, <strong>con</strong>sultar la<br />

docum<strong>en</strong>tación de IIS.<br />

<strong>Seguridad</strong> integrada de<br />

Windows<br />

Si el usuario que realiza la solicitud ya ha sido aut<strong>en</strong>ticado <strong>en</strong> una red basada <strong>en</strong><br />

Windows, IIS puede pasar las cred<strong>en</strong>ciales del usuario cuando solicite acceso a<br />

un recurso. Las cred<strong>en</strong>ciales no incluy<strong>en</strong> el nombre de usuario y la <strong>con</strong>traseña,<br />

únicam<strong>en</strong>te un tok<strong>en</strong> <strong>en</strong>criptado que indica el estado de seguridad del usuario.<br />

La seguridad integrada de Windows funciona <strong>con</strong> <strong>Microsoft</strong> Windows NTLM<br />

(Windows NT® Local Area <strong>Net</strong>work (LAN) Manager) o <strong>con</strong> Kerberos. La<br />

seguridad integrada de Windows también utiliza un algoritmo hash para<br />

codificar y decodificar las cred<strong>en</strong>ciales del usuario.<br />

Sin embargo, la seguridad integrada de Windows no resulta práctica <strong>en</strong> las<br />

<strong>aplicaciones</strong> <strong>Web</strong> que deb<strong>en</strong> atravesar cortafuegos. Por tanto, es más adecuada<br />

<strong>en</strong> esc<strong>en</strong>arios de intranets corporativas.<br />

Nota Cuando se <strong>con</strong>figura IIS, se pued<strong>en</strong> utilizar múltiples mecanismos de<br />

aut<strong>en</strong>ticación de IIS. Se puede seleccionar el acceso anónimo u otros métodos,<br />

como la aut<strong>en</strong>ticación básica, implícita o integrada de Windows. Si se utilizan<br />

múltiples mecanismos de aut<strong>en</strong>ticación de IIS, y si la aut<strong>en</strong>ticación anónima<br />

falla, el servidor <strong>Web</strong> int<strong>en</strong>tará utilizar la aut<strong>en</strong>ticación básica, implícita o<br />

integrada de Windows, dep<strong>en</strong>di<strong>en</strong>do de los métodos que estén seleccionados.


10 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Demostración: uso de los mecanismos de aut<strong>en</strong>ticación de IIS<br />

• Hacer clic <strong>con</strong> el botón derecho <strong>en</strong> Mod16 y hacer<br />

clic <strong>en</strong> Propiedades<br />

• Hacer clic <strong>en</strong> la pestaña <strong>Seguridad</strong> de directorios<br />

• Hacer clic <strong>en</strong> Modificar<br />

• Mostrar los métodos<br />

de aut<strong>en</strong>ticación<br />

*****************************<br />

Introducción<br />

En esta demostración, visualizaremos el cuadro de diálogo que se utiliza par<br />

<strong>con</strong>figurar los mecanismos de aut<strong>en</strong>ticación de IIS.<br />

Ejecutar la demostración<br />

1. En el m<strong>en</strong>ú Inicio, hacer clic <strong>con</strong> el botón derecho <strong>en</strong> Mi PC y hacer clic <strong>en</strong><br />

Administrar.<br />

2. En la <strong>con</strong>sola Administración de equipos, expandir Servicios y<br />

<strong>aplicaciones</strong>, expandir Internet Information Services, expandir Sitios<br />

<strong>Web</strong>, y expandir Sitio <strong>Web</strong> predeterminado.<br />

3. Hacer clic <strong>con</strong> el botón derecho <strong>en</strong> la aplicación <strong>Web</strong> Pract14VB o<br />

Pract14CS y hacer clic <strong>en</strong> Propiedades.<br />

4. En el cuadro de diálogo Pract14VB o Propiedades de Pract14CS, <strong>en</strong> la<br />

ficha <strong>Seguridad</strong> de directorios, <strong>en</strong> la sección Control de aut<strong>en</strong>ticación y<br />

acceso anónimo, hacer clic <strong>en</strong> Modificar.<br />

5. Mostrar los métodos de aut<strong>en</strong>ticación disponibles.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 11<br />

¿Qué es Secure Sockets Layer<br />

• SSL es un protocolo que se utiliza para transmitir datos de<br />

forma segura a través de una red. SSL securiza los datos<br />

mediante:<br />

• Encriptación de datos<br />

- Asegura que los datos <strong>en</strong>viados son leídos únicam<strong>en</strong>te por un<br />

servidor destinatario seguro<br />

• Aut<strong>en</strong>ticación de servidor<br />

- Asegura que los datos se <strong>en</strong>vían al servidor correcto<br />

- Utiliza los certificados de servidor y de cli<strong>en</strong>te<br />

• Integridad de los datos<br />

- Protege la integridad de los datos<br />

- Incluye un código de aut<strong>en</strong>ticación de m<strong>en</strong>sajes que detecta si un<br />

m<strong>en</strong>saje ha sido o no modificado<br />

• Utiliza HTTPS (Hypertext Transfer Protocol Secure) para<br />

recuperar una página <strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong><br />

*****************************<br />

Introducción<br />

IIS proporciona a los usuarios un canal de comunicación seguro al soportar el<br />

protocolo SSL y la <strong>en</strong>criptación RSA Data Security tanto <strong>en</strong> el servidor como<br />

<strong>en</strong> el cli<strong>en</strong>te.<br />

Nota RSA son las siglas de Rivest, Shamir y Adleman, los nombres de los<br />

ci<strong>en</strong>tíficos que crearon este algoritmo.<br />

¿Qué es SSL<br />

Encriptación de datos<br />

SSL es un protocolo que se utiliza para transmitir datos de modo seguro a través<br />

de una red. SSL securiza la comunicación de datos mediante:<br />

• Encriptación de datos<br />

• Aut<strong>en</strong>ticación de servidor<br />

• Integridad de datos<br />

Cuando se introduce información <strong>en</strong> un formulario HTML y se <strong>en</strong>vía a un sitio<br />

<strong>Web</strong>, la información se transmite desde el navegador al servidor del sitio <strong>Web</strong>.<br />

En el proceso de transmisión de la información, los datos introducidos <strong>en</strong> el<br />

formulario pued<strong>en</strong> ser interceptados y leídos.<br />

SSL <strong>en</strong>cripta la información transmitida <strong>en</strong>tre un servidor <strong>Web</strong> y un navegador<br />

<strong>Web</strong>. La información se <strong>en</strong>cripta utilizando un algoritmo públicam<strong>en</strong>te<br />

<strong>con</strong>ocido y una clave de sesión. El servidor <strong>Web</strong> g<strong>en</strong>era una clave pública que<br />

puede utilizar cualquier cli<strong>en</strong>te. El cli<strong>en</strong>te g<strong>en</strong>era una clave de sesión y utiliza la<br />

clave pública para <strong>en</strong>criptarla antes de <strong>en</strong>viarla al servidor <strong>Web</strong>. Los datos se<br />

transmit<strong>en</strong> utilizando esta clave de sesión.


12 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

El número de bits de la clave de sesión determina la pot<strong>en</strong>cia de la <strong>en</strong>criptación.<br />

IIS soporta claves de sesión de 40 bits y claves de sesión más pot<strong>en</strong>tes de 128<br />

bits.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 13<br />

La sigui<strong>en</strong>te tabla muestra las v<strong>en</strong>tajas e in<strong>con</strong>v<strong>en</strong>i<strong>en</strong>tes del uso de claves de<br />

sesión de 40 bits y de 128 bits.<br />

Clave de sesión V<strong>en</strong>taja In<strong>con</strong>v<strong>en</strong>i<strong>en</strong>te<br />

Clave de sesión de<br />

40 bits<br />

Clave de sesión de<br />

128 bits<br />

La comunicación es mucho<br />

más rápida.<br />

Muy segura, los m<strong>en</strong>sajes<br />

<strong>en</strong>criptados <strong>con</strong> clave de<br />

sesión de 128 bits se<br />

<strong>con</strong>sideran inquebrantables.<br />

No es muy segura, los m<strong>en</strong>sajes<br />

pued<strong>en</strong> ser modificados.<br />

La comunicación es bastante más<br />

l<strong>en</strong>ta; cuanto más larga es la clave,<br />

más trabajo deb<strong>en</strong> realizar el<br />

servidor y el navegador para<br />

<strong>en</strong>criptar y des<strong>en</strong>criptar el m<strong>en</strong>saje.<br />

Aut<strong>en</strong>ticación de<br />

servidor<br />

Certificado de servidor<br />

Certificado de cli<strong>en</strong>te<br />

Integridad de datos<br />

Uso de SSL <strong>en</strong> páginas<br />

<strong>ASP</strong>.<strong>NET</strong><br />

La aut<strong>en</strong>ticación de servidor garantiza que los datos se <strong>en</strong>vían al servidor<br />

correcto y que éste es seguro.<br />

Por ejemplo, podría ocurrir que visitáramos un sitio <strong>Web</strong> que fuera muy<br />

parecido a un sitio <strong>Web</strong> de comercio electrónico al que accediésemos<br />

frecu<strong>en</strong>tem<strong>en</strong>te. Podría parecer igual que el sitio <strong>Web</strong> que <strong>con</strong>ocemos, y<br />

proporcionaríamos la información de nuestra tarjeta de crédito para adquirir un<br />

artículo. Sin embargo, algui<strong>en</strong> que deseara <strong>en</strong>gañarnos podría crear un sitio<br />

<strong>Web</strong> idéntico al sitio <strong>Web</strong> de comercio electrónico auténtico y robar la<br />

información de nuestra tarjeta de crédito.<br />

Para evitar que un sitio <strong>Web</strong> se haga pasar por otro, utilizamos SSL para<br />

aut<strong>en</strong>ticar sitios <strong>Web</strong>. Cuando instalamos SSL <strong>en</strong> nuestro servidor <strong>Web</strong>,<br />

debemos instalar un certificado de servidor. El certificado de servidor <strong>con</strong>ti<strong>en</strong>e<br />

información sobre nuestra organización, nuestro sitio <strong>Web</strong> y el emisor del<br />

certificado.<br />

Para funcionar como un ID digital, un certificado de servidor debe estar<br />

firmado por una autoridad de certificación. La autoridad de certificación actúa<br />

como un tercero de <strong>con</strong>fianza que verifica la id<strong>en</strong>tidad de un sitio <strong>Web</strong> para sus<br />

usuarios.<br />

SSL también soporta certificados de cli<strong>en</strong>te. Los certificados de cli<strong>en</strong>te se<br />

utilizan para aut<strong>en</strong>ticar navegadores <strong>Web</strong> <strong>en</strong> lugar de servidores <strong>Web</strong>.<br />

SSL protege la integridad de los datos cuando viajan <strong>en</strong>tre el servidor <strong>Web</strong> y los<br />

navegadores <strong>Web</strong>. SSL garantiza que los datos recibidos por el servidor de<br />

destino no han sufrido ninguna modificación.<br />

Cuando los m<strong>en</strong>sajes se transmit<strong>en</strong> <strong>con</strong> SSL, incluy<strong>en</strong> un código de<br />

aut<strong>en</strong>ticación de m<strong>en</strong>saje. Este código detecta si el m<strong>en</strong>saje ha sido modificado.<br />

Después de <strong>con</strong>figurar nuestro servidor para que utilice SSL, podemos solicitar<br />

cualquier página de nuestro sitio <strong>Web</strong> utilizando una <strong>con</strong>exión segura. Para<br />

recuperar una página <strong>Web</strong>, SSL utiliza Hypertext Transfer Protocol Secure<br />

(HTTPS). Por ejemplo, una dirección <strong>con</strong> la forma<br />

https://www.nuestrodominio.com/login.aspx <strong>en</strong> lugar de http://www.<br />

nuestrodominio.com/pagina.aspx.<br />

Esto funciona para cualquier página de nuestro sitio <strong>Web</strong>.<br />

Nota <strong>ASP</strong>.<strong>NET</strong> proporciona la propiedad Request.IsSecureConnection que<br />

nos permite determinar si nos <strong>en</strong><strong>con</strong>tramos <strong>en</strong> una <strong>con</strong>exión https segura.


14 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Lección: trabajar <strong>con</strong> aut<strong>en</strong>ticación basada <strong>en</strong> Windows<br />

• Cómo habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> Windows<br />

• Leer información del usuario<br />

• Demostración: uso de la aut<strong>en</strong>ticación basada <strong>en</strong><br />

Windows<br />

*****************************<br />

Introducción<br />

Objetivos de la lección<br />

La aut<strong>en</strong>ticación basada <strong>en</strong> Windows debería utilizarse para securizar las<br />

<strong>aplicaciones</strong> <strong>Web</strong> cuando sabemos qué usuarios accederán a nuestro sitio <strong>Web</strong>.<br />

En esta lección, estudiaremos el procedimi<strong>en</strong>to para utilizar la aut<strong>en</strong>ticación<br />

basada <strong>en</strong> Windows para securizar nuestras <strong>aplicaciones</strong> <strong>Web</strong>.<br />

En esta lección, apr<strong>en</strong>deremos a:<br />

• Utilizar la aut<strong>en</strong>ticación basada <strong>en</strong> Windows para securizar <strong>aplicaciones</strong><br />

<strong>Web</strong>.<br />

• Leer la id<strong>en</strong>tidad del usuario que está aut<strong>en</strong>ticado utilizando la aut<strong>en</strong>ticación<br />

basada <strong>en</strong> Windows.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 15<br />

Cómo habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> Windows<br />

11 • Configurar IIS para utilizar uno o varios de los<br />

sigui<strong>en</strong>tes mecanismos de aut<strong>en</strong>ticación :<br />

• Básica<br />

• Implícita<br />

• <strong>Seguridad</strong> de Windows integrada<br />

22 • Establecer la aut<strong>en</strong>ticación basada <strong>en</strong> Windows <strong>en</strong><br />

<strong>Web</strong>.<strong>con</strong>fig<br />

<br />

/><br />

<br />

*****************************<br />

Introducción<br />

Configurar IIS<br />

El proceso de securizar <strong>aplicaciones</strong> <strong>Web</strong> mediante la aut<strong>en</strong>ticación basada <strong>en</strong><br />

Windows requiere cuatro pasos:<br />

1. Configurar IIS.<br />

2. Configurar la aut<strong>en</strong>ticación <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig.<br />

3. Configurar la autorización <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig.<br />

4. IIS solicita información de inicio de sesión a los usuarios.<br />

El primer paso para securizar <strong>aplicaciones</strong> <strong>Web</strong> utilizando la aut<strong>en</strong>ticación<br />

basada <strong>en</strong> Windows implica <strong>con</strong>figurar IIS utilizando uno o varios de los tres<br />

mecanismos de aut<strong>en</strong>ticación:<br />

• Aut<strong>en</strong>ticación básica<br />

• Aut<strong>en</strong>ticación implícita<br />

• <strong>Seguridad</strong> integrada de Windows<br />

Nota Normalm<strong>en</strong>te, se habilita la aut<strong>en</strong>ticación básica o la seguridad integrada<br />

de Windows. Si deseamos que nuestra aplicación <strong>Web</strong> sea compatible <strong>con</strong> otros<br />

navegadores, deberíamos utilizar la aut<strong>en</strong>ticación básica. Si no estamos<br />

utilizando un cortafuegos o servidor proxy, podemos utilizar la seguridad<br />

integrada de Windows.


16 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Configurar la<br />

aut<strong>en</strong>ticación<br />

El segundo paso para securizar <strong>aplicaciones</strong> <strong>Web</strong> utilizando la aut<strong>en</strong>ticación<br />

basada <strong>en</strong> Windows es establecer la seguridad de <strong>ASP</strong>.<strong>NET</strong> a aut<strong>en</strong>ticación<br />

basada <strong>en</strong> Windows <strong>en</strong> el archivo <strong>Web</strong>.<strong>con</strong>fig. Las opciones de <strong>con</strong>figuración<br />

de seguridad <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig se incluy<strong>en</strong> <strong>en</strong> las secciones ,<br />

e .<br />

Establecer el método de aut<strong>en</strong>ticación a “Windows” para la aplicación <strong>en</strong> una<br />

subsección de la sección <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig, como<br />

muestra el sigui<strong>en</strong>te ejemplo:<br />

<br />

<br />


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 17<br />

Cómo habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> Windows (<strong>con</strong>tinuación)<br />

33 • Establecer la autorización <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

44 • Cuando los usuarios<br />

acced<strong>en</strong> al formulario<br />

<strong>Web</strong> Form, IIS solicita<br />

información de inicio<br />

de sesión<br />

*****************************<br />

Introducción<br />

Securizar las <strong>aplicaciones</strong> <strong>Web</strong> utilizando la aut<strong>en</strong>ticación basada <strong>en</strong> Windows<br />

es un proceso de cuatro pasos:<br />

1. Configurar IIS.<br />

2. Establecer la aut<strong>en</strong>ticación <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig.<br />

3. Establecer la autorización <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig.<br />

4. IIS solicita información de inicio de sesión a los usuarios.<br />

Hemos estudiado los dos primeros pasos <strong>en</strong> el apartado anterior. Esta sección<br />

explica los dos últimos pasos.<br />

Configurar la<br />

autorización<br />

Para indicar que sólo algunas páginas específicas son seguras, debemos crear<br />

una sección <strong>con</strong> subsecciones y para<br />

cada página segura de nuestra aplicación <strong>Web</strong>:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Las opciones de <strong>con</strong>figuración que <strong>con</strong>ti<strong>en</strong>e la sección serán<br />

dirigidas al archivo o directorio que se indica <strong>en</strong> el atributo path. La sección<br />

puede t<strong>en</strong>er múltiples secciones .<br />

Nota La sección puede ser un formulario <strong>Web</strong> Form <strong>ASP</strong>.<strong>NET</strong> o<br />

una carpeta. Si se especifica un nombre de carpeta, todas las subcarpetas bajo<br />

ella serán seguras. Para asegurar múltiples formularios <strong>Web</strong> Forms o carpetas,<br />

se utilizarán múltiples secciones .


18 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

En la sección , crear una subsección para<br />

especificar qué tipo de autorización se impondrá. Crear las etiquetas o<br />

para permitir o d<strong>en</strong>egar a los usuarios el acceso a una página. En estas<br />

etiquetas, “” indica usuarios anónimos y “*” significa todos los usuarios.<br />

Por ejemplo, el sigui<strong>en</strong>te código d<strong>en</strong>iega el acceso a todos los usuarios<br />

anónimos:<br />

<br />

<br />

<br />

El sigui<strong>en</strong>te código permite al usuario “Mary” acceder a una página:<br />

<br />

<br />

<br />

Nota No es recom<strong>en</strong>dable autorizar a usuarios individualm<strong>en</strong>te, ya que este<br />

proceso puede revelar información <strong>con</strong>fid<strong>en</strong>cial <strong>en</strong> caso de que el archivo<br />

<strong>Web</strong>.<strong>con</strong>fig sea leído. Además, codificar directam<strong>en</strong>te nombres de usuario <strong>en</strong> el<br />

archivo <strong>Web</strong>.<strong>con</strong>fig no es un planteami<strong>en</strong>to flexible ya que no permite<br />

modificar esta información programáticam<strong>en</strong>te <strong>en</strong> tiempo de ejecución. La<br />

codificación directa de usuarios <strong>en</strong> el archivo <strong>Web</strong>.<strong>con</strong>fig resulta adecuado sólo<br />

para realizar pruebas.<br />

El sigui<strong>en</strong>te código d<strong>en</strong>iega a todos los usuarios anónimos el acceso a la página<br />

ShoppingCart.aspx:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Tras especificar el modo de aut<strong>en</strong>ticación, debemos indicar que toda la<br />

aplicación <strong>Web</strong> necesita autorización, o especificar qué páginas son seguras y,<br />

por tanto, que requier<strong>en</strong> autorización.<br />

Para indicar que toda la aplicación es segura, crear una sección <br />

<strong>en</strong> la sección , como muestra el sigui<strong>en</strong>te código de ejemplo:<br />

<br />

<br />

<br />

<br />


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 19<br />

Utilizamos el elem<strong>en</strong>to para habilitar la impersonalización. La<br />

impersonalización permite al servidor ejecutar código bajo el <strong>con</strong>texto de<br />

seguridad de una <strong>en</strong>tidad solicitante o como un usuario anónimo. En <strong>ASP</strong>.<strong>NET</strong>,<br />

la impersonalización es opcional, y está deshabilitada de forma predeterminada.<br />

El elem<strong>en</strong>to debe estar bajo la sección <strong>en</strong> el archivo<br />

<strong>Web</strong>.<strong>con</strong>fig o Machine.<strong>con</strong>fig. El sigui<strong>en</strong>te código muestra la sintaxis que se<br />

utiliza <strong>con</strong> el elem<strong>en</strong>to :<br />

<br />

En el código anterior, los atributos username y password especifican las<br />

cred<strong>en</strong>ciales a utilizar si impersonate está establecido a true.<br />

Se utiliza una cu<strong>en</strong>ta especial de Windows d<strong>en</strong>ominada <strong>ASP</strong><strong>NET</strong> si<br />

impersonate está establecido a false, el valor predeterminado.<br />

IIS solicita información<br />

de inicio de sesión a los<br />

usuarios<br />

El último paso del proceso para habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> Windows se<br />

produce cuando los usuarios int<strong>en</strong>tan acceder a un formulario <strong>Web</strong> Form desde<br />

nuestra aplicación <strong>Web</strong> e IIS solicita información de inicio de sesión al usuario.<br />

El usuario debe proporcionar su nombre de usuario y <strong>con</strong>traseña. Si IIS aprueba<br />

las cred<strong>en</strong>ciales del usuario, éste obti<strong>en</strong>e acceso a la página <strong>Web</strong> segura<br />

solicitada.


20 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Leer información del usuario<br />

• Tras la aut<strong>en</strong>ticación, el servidor <strong>Web</strong> puede leer la<br />

id<strong>en</strong>tidad del usuario<br />

lblAuthUser.Text = User.Id<strong>en</strong>tity.Name<br />

lblAuthType.Text = User.Id<strong>en</strong>tity.Auth<strong>en</strong>ticationType<br />

lblIsAuth.Text = User.Id<strong>en</strong>tity.IsAuth<strong>en</strong>ticated<br />

lblAuthUser.Text = User.Id<strong>en</strong>tity.Name;<br />

lblAuthType.Text = User.Id<strong>en</strong>tity.Auth<strong>en</strong>ticationType;<br />

lblIsAuth.Text = User.Id<strong>en</strong>tity.IsAuth<strong>en</strong>ticated;<br />

*****************************<br />

Introducción<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

Una vez finalizado el proceso de aut<strong>en</strong>ticación basada <strong>en</strong> Windows, el servidor<br />

<strong>Web</strong> puede leer la id<strong>en</strong>tidad del usuario desde cualquier página de la aplicación<br />

<strong>Web</strong>.<br />

El servidor <strong>Web</strong> puede leer la id<strong>en</strong>tidad del usuario utilizando<br />

User.Id<strong>en</strong>tity.Name. El servidor <strong>Web</strong> también puede id<strong>en</strong>tificar el mecanismo<br />

de aut<strong>en</strong>ticación de IIS que se utiliza para aut<strong>en</strong>ticar al usuario utilizando<br />

User.Id<strong>en</strong>tity.Auth<strong>en</strong>ticationType. Además, el servidor <strong>Web</strong> puede<br />

comprobar si el usuario está aut<strong>en</strong>ticado utilizando<br />

User.Id<strong>en</strong>tity.IsAuth<strong>en</strong>ticated.<br />

El sigui<strong>en</strong>te código de ejemplo muestra cómo se permite al servidor <strong>Web</strong> leer la<br />

id<strong>en</strong>tidad del usuario:<br />

lblAuthUser.Text = User.Id<strong>en</strong>tity.Name<br />

lblAuthType.Text = User.Id<strong>en</strong>tity.Auth<strong>en</strong>ticationType<br />

lblIsAuth.Text = User.Id<strong>en</strong>tity.IsAuth<strong>en</strong>ticated<br />

lblAuthUser.Text = User.Id<strong>en</strong>tity.Name;<br />

lblAuthType.Text = User.Id<strong>en</strong>tity.Auth<strong>en</strong>ticationType;<br />

lblIsAuth.Text = User.Id<strong>en</strong>tity.IsAuth<strong>en</strong>ticated;<br />

Nota<br />

User.Id<strong>en</strong>tity es un objeto de la clase WindowsId<strong>en</strong>tity.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 21<br />

Demostración: uso de la aut<strong>en</strong>ticación basada <strong>en</strong> Windows<br />

• Abrir IIS y <strong>con</strong>figurarlo únicam<strong>en</strong>te <strong>con</strong><br />

aut<strong>en</strong>ticación anónima<br />

• Crear un nuevo usuario <strong>en</strong> el equipo local<br />

• Abrir <strong>Web</strong>.<strong>con</strong>fig y <strong>con</strong>figurarlo para<br />

soportar aut<strong>en</strong>ticación y autorización<br />

• Ejecutar la aplicación <strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong><br />

segura<br />

• Los estudiantes pued<strong>en</strong> acceder a la<br />

aplicación <strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong> segura <strong>en</strong> el<br />

equipo del instructor<br />

*****************************<br />

Introducción<br />

Configurar IIS <strong>con</strong><br />

aut<strong>en</strong>ticación básica<br />

En esta demostración, veremos cómo <strong>con</strong>figurar IIS para utilizar la<br />

aut<strong>en</strong>ticación basada <strong>en</strong> Windows <strong>con</strong> aut<strong>en</strong>ticación básica de IIS.<br />

Seguidam<strong>en</strong>te, veremos cómo crear un nuevo usuario <strong>en</strong> el servidor local, y<br />

cómo <strong>con</strong>figurar la aut<strong>en</strong>ticación y autorización <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig. A<br />

<strong>con</strong>tinuación, veremos algunas demostraciones de acceso a páginas seguras y<br />

no seguras. Finalm<strong>en</strong>te, apr<strong>en</strong>deremos a <strong>con</strong>ectarnos a una página segura <strong>en</strong> el<br />

equipo del instructor.<br />

Los archivos para esta demostración se <strong>en</strong>cu<strong>en</strong>tran <strong>en</strong> el proyecto Pract14VB o<br />

Pract14CS d<strong>en</strong>tro del fichero demos14.zip.<br />

Ejecutar la demostración<br />

1. Hacer clic <strong>con</strong> el botón derecho <strong>en</strong> Mi PC y hacer clic <strong>en</strong> Administrar.<br />

2. Expandir Servicios y <strong>aplicaciones</strong>, expandir Internet Information<br />

Services, y hacer clic <strong>en</strong> Sitios <strong>Web</strong>.<br />

3. Hacer clic <strong>con</strong> el botón derecho <strong>en</strong> Sitio <strong>Web</strong> predeterminado y hacer clic<br />

<strong>en</strong> Propiedades.<br />

4. Hacer clic <strong>en</strong> la ficha <strong>Seguridad</strong> de directorios, y clic <strong>en</strong> Modificar para<br />

abrir el cuadro de diálogo Métodos de aut<strong>en</strong>ticación de IIS.<br />

5. Seleccionar la casilla de verificación de aut<strong>en</strong>ticación básica (la <strong>con</strong>traseña<br />

se <strong>en</strong>vía <strong>en</strong> texto claro) y hacer clic <strong>en</strong> Sí <strong>en</strong> el cuadro de diálogo<br />

Administrador de Servicios de Internet.<br />

Nota<br />

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


22 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

anónimo. Verificar que no están seleccionadas las casillas de verificación de<br />

Aut<strong>en</strong>ticación implícita para servidores de dominios Windows y<br />

Aut<strong>en</strong>ticación integrada de Windows.<br />

Crear un nuevo usuario<br />

<strong>en</strong> el equipo local<br />

6. Escribir nombreequipo <strong>en</strong> el campo Dominio predeterminado, ya que esta<br />

demostración se realizará <strong>con</strong> una cu<strong>en</strong>ta local creada <strong>en</strong> este equipo.<br />

7. Hacer clic <strong>en</strong> Aceptar para cerrar el cuadro de diálogo Métodos de<br />

aut<strong>en</strong>ticación de IIS.<br />

8. Hacer clic <strong>en</strong> Aceptar para cerrar el cuadro de diálogo Propiedades del<br />

sitio <strong>Web</strong> predeterminado. En el cuadro de diálogo Her<strong>en</strong>cia omitida,<br />

hacer clic <strong>en</strong> Aceptar.<br />

9. En la <strong>con</strong>sola Administración de equipos, expandir Herrami<strong>en</strong>tas del<br />

sistema, y expandir Usuarios y grupos locales.<br />

10. Hacer clic <strong>con</strong> el botón derecho <strong>en</strong> la carpeta Usuarios y clic <strong>en</strong> Nuevo<br />

usuario:<br />

Introducir la sigui<strong>en</strong>te información <strong>en</strong> el cuadro de diálogo Nuevo usuario.<br />

Campo<br />

Valor<br />

Nombre de usuario<br />

Nombre completo<br />

Descripción<br />

Contraseña<br />

Confirmar <strong>con</strong>traseña<br />

someone<br />

someone<br />

Cu<strong>en</strong>ta de demostración de someone<br />

Secreto1<br />

Secreto1<br />

Mostrar la <strong>con</strong>figuración<br />

de seguridad <strong>en</strong> el<br />

archivo <strong>Web</strong>.<strong>con</strong>fig<br />

Mostrar el nombre y tipo<br />

de aut<strong>en</strong>ticación <strong>en</strong> un<br />

formulario <strong>Web</strong> Form.<br />

a. Desactivar la casilla de verificación de El usuario debe cambiar la<br />

<strong>con</strong>traseña <strong>en</strong> el sigui<strong>en</strong>te inicio de sesión.<br />

b. Seleccionar la casilla de verificación de El usuario no puede cambiar<br />

la <strong>con</strong>traseña.<br />

c. Hacer clic <strong>en</strong> Crear y clic <strong>en</strong> Cerrar.<br />

En el lado derecho de la v<strong>en</strong>tana del cuadro de diálogo Administración de<br />

equipos, debería aparecer el usuario someone.<br />

11. Abrir el proyecto Pract14VB o Pract14CS y visualizar el archivo<br />

<strong>Web</strong>.<strong>con</strong>fig <strong>en</strong> <strong>Microsoft</strong> Visual Studio® .<strong>NET</strong>.<br />

Una sección está <strong>con</strong>figurada <strong>con</strong> aut<strong>en</strong>ticación basada <strong>en</strong><br />

Windows.<br />

Son necesarias dos secciones para securizar dos páginas:<br />

SecurePageDemo1.aspx y SecurePageDemo2.aspx. Con la <strong>con</strong>figuración<br />

actual de IIS, si un usuario int<strong>en</strong>ta acceder a una de estas páginas, se<br />

utilizará la aut<strong>en</strong>ticación básica. Si un usuario int<strong>en</strong>ta acceder las otras<br />

páginas, se utilizará la aut<strong>en</strong>ticación anónima.<br />

12. Abrir la página de código subyac<strong>en</strong>te SecurePageDemo1.aspx y explicar el<br />

código User.Id<strong>en</strong>tity.Name y User.Id<strong>en</strong>tity.Auth<strong>en</strong>ticationType.<br />

Note No se requiere ninguna instrucción Imports para utilizar<br />

User.Id<strong>en</strong>tity.xxx.<br />

13. G<strong>en</strong>erar el proyecto Pract14VB o Pract14CS <strong>en</strong> la solución 2310Demos.<br />

14. Abrir un nuevo navegador e ir a:


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 23<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

http://localhost/Pract14VB/NonSecurePageDemo.aspx<br />

http://localhost/Pract14CS/NonSecurePageDemo.aspx


24 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Visual Basic .<strong>NET</strong><br />

C#<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

Los estudiantes acceder<br />

al equipo del instructor<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

15. Ir a:<br />

http://localhost/Pract14VB/SecurePageDemo1.aspx<br />

http://localhost/Pract14CS/SecurePageDemo1.aspx<br />

Mostrar que aparece el cuadro de diálogo Connect to localhost.<br />

16. Hacer clic <strong>en</strong> Cancelar y mostrar que se obti<strong>en</strong>e un error de servidor<br />

porque se d<strong>en</strong>iega el acceso.<br />

17. Ir a:<br />

http://localhost/Pract14VB/SecurePageDemo2.aspx<br />

http://localhost/Pract14CS/SecurePageDemo2.aspx<br />

Mostrar que también aparece el cuadro de diálogo Connect to localhost.<br />

18. Escribir las cred<strong>en</strong>ciales Nombre de usuario como someone y Contraseña<br />

como Secreto1 y hacer clic <strong>en</strong> Aceptar.<br />

19. La página SecurePageDemo2.aspx debería mostrar el nombre de usuario<br />

someone y el tipo de aut<strong>en</strong>ticación básica.<br />

Ahora, podemos acceder a cualquier página segura, siempre que no<br />

cerremos el navegador. Si cerramos el navegador, deberemos repetir el<br />

proceso de aut<strong>en</strong>ticación.<br />

20. Ir a:<br />

http://localhost/Pract14VB/SecurePageDemo1.aspx<br />

http://localhost/Pract14CS/SecurePageDemo1.aspx<br />

Mostrar que esta vez no se solicitan las cred<strong>en</strong>ciales.<br />

21. Indicar a los estudiantes que vayan a:<br />

http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx<br />

http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx<br />

Escribir las cred<strong>en</strong>ciales someone y Secreto1 cuando se solicite.<br />

Tras introducir las cred<strong>en</strong>ciales, los estudiantes deberían poder ver<br />

SecurePageDemo1.aspx y SecurePageDemo2.aspx.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 25<br />

Lección: trabajar <strong>con</strong> aut<strong>en</strong>ticación basada <strong>en</strong><br />

formularios<br />

• Descripción de la aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

• Multimedia: aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

• Cómo habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

• Crear una página de inicio de sesión<br />

• Demostración: uso de la aut<strong>en</strong>ticación basada <strong>en</strong><br />

formularios<br />

*****************************<br />

Introducción<br />

Objetivos de la lección<br />

El método de aut<strong>en</strong>ticación que más se utiliza habitualm<strong>en</strong>te para securizar<br />

<strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>ASP</strong>.<strong>NET</strong> es la aut<strong>en</strong>ticación basada <strong>en</strong> formularios.<br />

En esta lección, estudiaremos la arquitectura basada <strong>en</strong> formularios, y los pasos<br />

para habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> formularios. También estudiaremos<br />

cómo <strong>con</strong>figurar la seguridad <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig, y crear una página de inicio de<br />

sesión.<br />

En esta lección, apr<strong>en</strong>deremos a:<br />

• Id<strong>en</strong>tificar la serie de ev<strong>en</strong>tos que ti<strong>en</strong>e lugar durante la aut<strong>en</strong>ticación<br />

basada <strong>en</strong> formularios.<br />

• Id<strong>en</strong>tificar los pasos para habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> formularios.<br />

• Configurar aut<strong>en</strong>ticación y autorización <strong>en</strong> un archivo <strong>Web</strong>.<strong>con</strong>fig.<br />

• Describir cómo crear una página de inicio de sesión.


26 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Descripción de la aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

El cli<strong>en</strong>te solicita página<br />

Acceso d<strong>en</strong>egado<br />

66<br />

<br />

No<br />

aut<strong>en</strong>ticado<br />

11 22<br />

IIS<br />

No<br />

aut<strong>en</strong>ticado<br />

Nombre usuario<br />

Algui<strong>en</strong><br />

Contraseña<br />

***********<br />

Enviar Enviar<br />

<br />

44<br />

Página de inicio<br />

(los usuarios<br />

introduc<strong>en</strong> sus<br />

cred<strong>en</strong>ciales)<br />

Aut<strong>en</strong>ticado<br />

Aut<strong>en</strong>ticación<br />

<strong>ASP</strong>.<strong>NET</strong> Forms<br />

Aut<strong>en</strong>ticado<br />

Autorizado<br />

33<br />

Cookie de<br />

aut<strong>en</strong>ticación<br />

55<br />

Autorizado<br />

77<br />

Página segura<br />

solicitada<br />

*****************************<br />

Introducción<br />

Serie de ev<strong>en</strong>tos que<br />

ti<strong>en</strong><strong>en</strong> lugar durante la<br />

aut<strong>en</strong>ticación basada <strong>en</strong><br />

formularios<br />

Cuando un usuario solicita una página <strong>Web</strong> que está protegida por<br />

aut<strong>en</strong>ticación basada <strong>en</strong> formularios, la solicitud debe pasar primero por IIS.<br />

Por ello, debemos establecer la aut<strong>en</strong>ticación de IIS a acceso anónimo.<br />

Establecer IIS a anónimo requiere que todas las solicitudes pas<strong>en</strong> por <strong>ASP</strong>.<strong>NET</strong><br />

antes de ser aut<strong>en</strong>ticadas.<br />

En la aut<strong>en</strong>ticación basada <strong>en</strong> formularios, se produce la sigui<strong>en</strong>te serie de<br />

ev<strong>en</strong>tos:<br />

1. Un cli<strong>en</strong>te g<strong>en</strong>era una solicitud de una página .aspx protegida.<br />

2. IIS recibe la solicitud y la pasa a <strong>ASP</strong>.<strong>NET</strong>. El modo de aut<strong>en</strong>ticación está<br />

establecido <strong>en</strong> acceso anónimo y, por ello, la solicitud pasa directam<strong>en</strong>te por<br />

IIS.<br />

3. <strong>ASP</strong>.<strong>NET</strong> comprueba si la solicitud dispone de una cookie de aut<strong>en</strong>ticación<br />

válida anexa. Si es así, significa que las cred<strong>en</strong>ciales del usuario ya han sido<br />

<strong>con</strong>firmadas y que la solicitud se ha examinado para su autorización.<br />

<strong>ASP</strong>.<strong>NET</strong> realiza la verificación de autorización comparando las<br />

cred<strong>en</strong>ciales que <strong>con</strong>ti<strong>en</strong>e la cookie de autorización de la solicitud <strong>con</strong> las<br />

opciones de <strong>con</strong>figuración de autorización del archivo <strong>Web</strong>.<strong>con</strong>fig. Si el<br />

usuario es autorizado, se <strong>con</strong>cede el acceso a la página segura solicitada.<br />

4. Si la solicitud no ti<strong>en</strong>e ninguna cookie anexa, <strong>ASP</strong>.<strong>NET</strong> redirecciona la<br />

solicitud a una página de inicio de sesión (cuya ruta reside <strong>en</strong> el archivo de<br />

<strong>con</strong>figuración de la aplicación), donde el usuario introduce las cred<strong>en</strong>ciales<br />

requeridas, normalm<strong>en</strong>te un nombre y una <strong>con</strong>traseña.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 27<br />

5. El código de la aplicación <strong>en</strong> la página de inicio de sesión comprueba las<br />

cred<strong>en</strong>ciales para <strong>con</strong>firmar su aut<strong>en</strong>ticidad y, si son aut<strong>en</strong>ticadas, adjunta a<br />

la solicitud una cookie que <strong>con</strong>ti<strong>en</strong>e las cred<strong>en</strong>ciales.<br />

6. Si la aut<strong>en</strong>ticación falla, la solicitud se devuelve <strong>con</strong> un m<strong>en</strong>saje de “Acceso<br />

d<strong>en</strong>egado”.<br />

7. Si el usuario es aut<strong>en</strong>ticado, <strong>ASP</strong>.<strong>NET</strong> comprueba la autorización, como <strong>en</strong><br />

el paso 3, y puede permitir el acceso a la página segura solicitada<br />

originalm<strong>en</strong>te o redireccionar la solicitud a otra página, dep<strong>en</strong>di<strong>en</strong>do del<br />

diseño de la aplicación.<br />

Por otra parte, <strong>ASP</strong>.<strong>NET</strong> puede dirigir la solicitud a un formulario de<br />

autorización personalizado donde se examinan las cred<strong>en</strong>ciales para la<br />

autorización a la página protegida. Normalm<strong>en</strong>te, si la autorización falla, la<br />

solicitud se devuelve <strong>con</strong> un m<strong>en</strong>saje de “Acceso d<strong>en</strong>egado”.


28 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Cómo habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

• 11 Configurar IIS para utilizar aut<strong>en</strong>ticación anónima<br />

• 22 Establecer la aut<strong>en</strong>ticación basada <strong>en</strong> formularios <strong>en</strong><br />

<strong>Web</strong>.<strong>con</strong>fig<br />

<br />

/><br />

<br />

• Establecer la autorización<br />

33<br />

• 44 G<strong>en</strong>erar un formulario <strong>Web</strong><br />

Form de inicio de sesión<br />

*****************************<br />

Introducción<br />

Habilitar la aut<strong>en</strong>ticación<br />

basada <strong>en</strong> formularios<br />

Configurar la<br />

aut<strong>en</strong>ticación<br />

Configurar la<br />

autorización<br />

Para habilitar la aut<strong>en</strong>ticación basada <strong>en</strong> formularios para nuestra aplicación<br />

<strong>Web</strong>, debemos realizar los cuatro pasos sigui<strong>en</strong>tes:<br />

1. Configurar IIS para utilizar la aut<strong>en</strong>ticación anónima, para que el usuario<br />

sea aut<strong>en</strong>ticado por <strong>ASP</strong>.<strong>NET</strong> y no por IIS.<br />

2. Configurar el método de aut<strong>en</strong>ticación basado <strong>en</strong> formularios (Forms) para<br />

la aplicación <strong>en</strong> una subsección de la sección<br />

<strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig, como muestra el sigui<strong>en</strong>te ejemplo:<br />

<br />

<br />

<br />

<br />

<br />

Si se establece el modo de aut<strong>en</strong>ticación <strong>en</strong> “Forms”, se debe agregar un<br />

elem<strong>en</strong>to a la sección , como muestra el ejemplo<br />

anterior.<br />

En la sección , se <strong>con</strong>figura la cookie. Establecer el atributo name<br />

<strong>con</strong> el sufijo que utilizarán las cookies y el atributo loginUrl <strong>con</strong> la URL<br />

(Uniform Resource Locator) de la página a la que se redirig<strong>en</strong> las<br />

solicitudes no aut<strong>en</strong>ticadas.<br />

3. Configurar la sección de <strong>Web</strong>.<strong>con</strong>fig. El proceso de<br />

<strong>con</strong>figurar la autorización para aut<strong>en</strong>ticación basada <strong>en</strong> formularios es<br />

idéntico al proceso de la aut<strong>en</strong>ticación basada <strong>en</strong> Windows.<br />

Al <strong>con</strong>figurar la sección <strong>en</strong> <strong>Web</strong>.<strong>con</strong>fig, podemos d<strong>en</strong>egar<br />

o permitir a los usuarios el acceso a nuestra aplicación <strong>Web</strong>. También


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 29<br />

G<strong>en</strong>erar un formulario<br />

<strong>Web</strong> Form de inicio de<br />

sesión<br />

podemos indicar que toda la aplicación <strong>Web</strong> requiere autorización o<br />

especificar qué páginas son seguras y, por tanto, requier<strong>en</strong> autorización.<br />

4. G<strong>en</strong>erar un formulario <strong>Web</strong> Form de inicio de sesión, login.aspx.<br />

Login.aspx puede ser una página s<strong>en</strong>cilla <strong>con</strong> dos campos, uno para el<br />

nombre de usuario y otro para la <strong>con</strong>traseña. Login.aspx requiere que los<br />

usuarios introduzcan su nombre de usuario y <strong>con</strong>traseña para establecer<br />

aut<strong>en</strong>ticación y poder acceder a nuestra aplicación <strong>Web</strong>.


30 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Crear una página de inicio de sesión<br />

• Añadir una refer<strong>en</strong>cia a System.<strong>Web</strong>.Security<br />

• La página de inicio de sesión verifica y examina las cred<strong>en</strong>ciales de un<br />

usuario<br />

private private void void cmdLogin_Click(object s<strong>en</strong>der, s<strong>en</strong>der, Ev<strong>en</strong>tArgs Ev<strong>en</strong>tArgs e) e)<br />

{<br />

if if (login(txtEmail.Text, txtPassword.Text))<br />

FormsAuth<strong>en</strong>tication.RedirectFromLoginPage(txtEmail.Text, false); false);<br />

}<br />

Sub Sub cmdLogin_Click(s As As Object, Object, e As As ev<strong>en</strong>tArgs)<br />

ev<strong>en</strong>tArgs)<br />

If If (login(txtEmail.Text, txtPassword.Text))<br />

FormsAuth<strong>en</strong>tication.RedirectFromLoginPage(txtEmail.Text, False) False)<br />

End End If If<br />

End End Sub Sub<br />

• Leer las cred<strong>en</strong>ciales del usuario desde una cookie<br />

• User.Id<strong>en</strong>tity.Name devuelve el valor guardado por<br />

FormsAuth<strong>en</strong>tication.RedirectFromLoginPage<br />

*****************************<br />

Introducción<br />

¿Cómo funciona una<br />

página de inicio de<br />

sesión<br />

Durante la aut<strong>en</strong>ticación, todas las solicitudes son redirigidas a la página de<br />

inicio de sesión especificada <strong>en</strong> el atributo loginUrl de la etiqueta . La<br />

página de inicio de sesión verifica y examina las cred<strong>en</strong>ciales de un usuario.<br />

Si el modo de aut<strong>en</strong>ticación está establecido a “Forms”, <strong>ASP</strong>.<strong>NET</strong> busca una<br />

cookie de aut<strong>en</strong>ticación adjunta a la solicitud de una página segura. Si<br />

<strong>ASP</strong>.<strong>NET</strong> no <strong>en</strong>cu<strong>en</strong>tra la cookie de aut<strong>en</strong>ticación, redirecciona la solicitud a la<br />

página de inicio de sesión especificada.<br />

En la página de inicio de sesión, el usuario introduce las cred<strong>en</strong>ciales<br />

requeridas. La página las examina, bi<strong>en</strong> a través de código específico de la<br />

aplicación o invocando a FormsAuth<strong>en</strong>tication.Auth<strong>en</strong>ticate. Si las<br />

cred<strong>en</strong>ciales <strong>con</strong> válidas, se g<strong>en</strong>era una cookie y el usuario es redirigido a la<br />

página solicitada originalm<strong>en</strong>te invocando a<br />

FormsAuth<strong>en</strong>tication.RedirectFromLoginPage. Sin embargo, si las<br />

cred<strong>en</strong>ciales no son válidas, el usuario permanece <strong>en</strong> la página de inicio de<br />

sesión y recibe un m<strong>en</strong>saje que indica que las cred<strong>en</strong>ciales de inicio de sesión<br />

no son válidas.<br />

El método RedirectFromLoginPage toma dos parámetros: userName, que<br />

especifica el nombre del usuario para la aut<strong>en</strong>ticación basada <strong>en</strong> formularios, y<br />

createPersist<strong>en</strong>tCookie. Si el valor de createPersist<strong>en</strong>tCookie es true, una<br />

cookie de aut<strong>en</strong>ticación persist<strong>en</strong>te, una cookie escrita <strong>en</strong> el sistema de archivos<br />

cli<strong>en</strong>te, se crea <strong>en</strong> el equipo del usuario. De lo <strong>con</strong>trario, se crea una cookie de<br />

aut<strong>en</strong>ticación temporal (no persist<strong>en</strong>te).


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 31<br />

La sigui<strong>en</strong>te tabla muestra una lista todos los métodos del objeto<br />

FormsAuth<strong>en</strong>tication, que pued<strong>en</strong> utilizarse <strong>en</strong> el proceso de aut<strong>en</strong>ticación.<br />

Método<br />

Auth<strong>en</strong>ticate<br />

GetAuthCookie<br />

GetRedirectUrl<br />

RedirectFromLoginPage<br />

SetAuthCookie<br />

SignOut<br />

Función<br />

Dadas las cred<strong>en</strong>ciales suministradas, este método int<strong>en</strong>ta<br />

validar las cred<strong>en</strong>ciales comparándolas <strong>con</strong> las que<br />

<strong>con</strong>ti<strong>en</strong>e el almacén de cred<strong>en</strong>ciales <strong>con</strong>figurado.<br />

Crea una cookie de aut<strong>en</strong>ticación para un determinado<br />

nombre de usuario. La cookie no se establece como parte<br />

de la respuesta sali<strong>en</strong>te; por tanto, una aplicación puede<br />

t<strong>en</strong>er un mayor <strong>con</strong>trol sobre cómo se emite la cookie.<br />

Devuelve la URL redirigida para la solicitud original que<br />

ha provocado la redirección a la página de inicio de<br />

sesión.<br />

Redirige a los usuarios aut<strong>en</strong>ticados a la URL solicitada<br />

originalm<strong>en</strong>te.<br />

Crea un ticket de aut<strong>en</strong>ticación para el userName dado y<br />

lo adjunta a la colección de cookies de la respuesta<br />

sali<strong>en</strong>te. No realiza una redirección.<br />

Dado un usuario aut<strong>en</strong>ticado, invocar SignOut elimina el<br />

ticket de aut<strong>en</strong>ticación estableci<strong>en</strong>do un SetCookie <strong>con</strong><br />

un valor vacío. De este modo, se eliminan las cookies<br />

duraderas y las cookies por sesión.<br />

Crear una página de<br />

inicio de sesión<br />

Para poder utilizar la clase FormsAuth<strong>en</strong>tication, deberíamos refer<strong>en</strong>ciar la<br />

biblioteca System.<strong>Web</strong>.Security utilizando Imports o using.<br />

Una página de inicio de sesión es simplem<strong>en</strong>te una página <strong>ASP</strong>.<strong>NET</strong> <strong>con</strong> un<br />

formulario HTML, un botón Submit y un procedimi<strong>en</strong>to de ev<strong>en</strong>to Click para<br />

el botón Submit.<br />

El sigui<strong>en</strong>te es un ejemplo de un formulario <strong>en</strong> una página de inicio de sesión:<br />

<br />

Email: <br />

<br />

Password<br />

<br />

<br />

<br />

<br />

<br />

<br />

En el procedimi<strong>en</strong>to de ev<strong>en</strong>to Click del botón Submit, se valida la<br />

información que se introduce <strong>en</strong> el formulario, y si ésta es válida, invocar<br />

FormsAuth<strong>en</strong>tication.RedirectFromLoginPage. El método<br />

RedirectFromLoginPage emite la cookie y, a <strong>con</strong>tinuación, redirige al usuario<br />

a la página solicitada originalm<strong>en</strong>te.


32 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

El sigui<strong>en</strong>te código de ejemplo utiliza una función personalizada d<strong>en</strong>ominada<br />

Login para validar el nombre de usuario y la <strong>con</strong>traseña, e invoca<br />

RedirectFromLoginPage si el nombre de usuario y la <strong>con</strong>traseña son válidos:<br />

Visual Basic .<strong>NET</strong><br />

Private Sub cmdLogin_Click( _<br />

ByVal s<strong>en</strong>der As System.Object, _<br />

ByVal e As System.Ev<strong>en</strong>tArgs) _<br />

Handles cmdLogin.Click<br />

Dim strCustomerId As String<br />

'Validate User Cred<strong>en</strong>ciales<br />

strCustomerId = Login(txtEmail.Text, txtPassword.Text)<br />

If (strCustomerId "") Th<strong>en</strong><br />

FormsAuth<strong>en</strong>tication.RedirectFromLoginPage _<br />

(strCustomerId, False)<br />

Else<br />

lblInfo.Text = "Invalid Cred<strong>en</strong>ciales: Please try again"<br />

End If<br />

End Sub<br />

C#<br />

private void cmdLogin_Click(object s<strong>en</strong>der, Ev<strong>en</strong>tArgs e)<br />

{<br />

string strCustomerId;<br />

//Validate User Cred<strong>en</strong>ciales<br />

strCustomerId = Login(txtEmail.Text, txtPassword.Text);<br />

if (strCustomerId != "")<br />

{<br />

FormsAuth<strong>en</strong>tication.RedirectFromLoginPage<br />

(strCustomerId, false);<br />

}<br />

else<br />

{<br />

lblInfo.Text = "Invalid Cred<strong>en</strong>ciales: Please try again";<br />

}<br />

}<br />

Leer cred<strong>en</strong>ciales desde<br />

cookies<br />

Después de que un usuario haya sido aut<strong>en</strong>ticado, podemos obt<strong>en</strong>er su nombre<br />

de usuario programáticam<strong>en</strong>te utilizando la propiedad User.Id<strong>en</strong>tity.Name.<br />

Esta propiedad resulta útil para g<strong>en</strong>erar una aplicación que utilice el nombre del<br />

usuario como una clave para guardar información <strong>en</strong> una tabla de una base de<br />

datos o un recurso del directorio.<br />

También podemos id<strong>en</strong>tificar dinámicam<strong>en</strong>te el mecanismo de aut<strong>en</strong>ticación<br />

(Forms <strong>en</strong> este caso) utilizando User.Id<strong>en</strong>tity.Auth<strong>en</strong>ticationType y ver si el<br />

usuario está aut<strong>en</strong>ticado utilizando User.Id<strong>en</strong>tity.IsAuth<strong>en</strong>ticated.<br />

Con la aut<strong>en</strong>ticación basada <strong>en</strong> formularios, User.Id<strong>en</strong>tity es un objeto de la<br />

clase FormsId<strong>en</strong>tity.<br />

Nota Cuando se utiliza la aut<strong>en</strong>ticación basada <strong>en</strong> formularios, la <strong>con</strong>traseña<br />

que un usuario introduce <strong>en</strong> la página de inicio de sesión se <strong>en</strong>vía a través de la<br />

red <strong>en</strong> texto claro. Es importante utilizar SSL para <strong>en</strong>criptar estas <strong>con</strong>traseñas.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 33<br />

Demostración: uso de la aut<strong>en</strong>ticación basada <strong>en</strong> formularios<br />

• Abrir IIS y <strong>con</strong>figurar para aut<strong>en</strong>ticación<br />

anónima<br />

• Abrir <strong>Web</strong>.<strong>con</strong>fig y <strong>con</strong>figurarlo para<br />

aut<strong>en</strong>ticación y autorización<br />

• Abrir la página de inicio de sesión y<br />

mostrar el código<br />

• Ejecutar la aplicación <strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong><br />

• Los estudiantes pued<strong>en</strong> acceder a la<br />

aplicación <strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong> segura <strong>en</strong> el<br />

equipo del instructor<br />

*****************************<br />

Introducción<br />

Configurar IIS para<br />

acceso anónimo<br />

En esta demostración, veremos cómo <strong>con</strong>figurar IIS para utilizar la<br />

aut<strong>en</strong>ticación basada <strong>en</strong> formularios <strong>con</strong> aut<strong>en</strong>ticación anónima; a <strong>con</strong>tinuación,<br />

veremos cómo <strong>con</strong>figurar la aut<strong>en</strong>ticación y autorización <strong>en</strong> el archivo<br />

<strong>Web</strong>.<strong>con</strong>fig. Veremos cómo funciona la página de inicio de sesión, y algunas<br />

demostraciones de acceso a páginas seguras y a páginas no seguras. Finalm<strong>en</strong>te,<br />

apr<strong>en</strong>deremos a <strong>con</strong>ectar a una página segura <strong>en</strong> el equipo del instructor.<br />

Los archivos para demostración se <strong>en</strong>cu<strong>en</strong>tran <strong>en</strong> el proyecto Pract14VB o<br />

Mob16CS de la solución 2310Demos.<br />

Ejecutar la demostración<br />

1. Hacer clic <strong>con</strong> el botón derecho <strong>en</strong> Mi PC y clic <strong>en</strong> Administrar.<br />

2. Ir a Servicios y <strong>aplicaciones</strong>, expandir Internet Information Services, y<br />

hacer clic <strong>en</strong> Sitios <strong>Web</strong>.<br />

3. Hacer clic <strong>con</strong> el botón derecho <strong>en</strong> Sitio <strong>Web</strong> predeterminado y hacer clic<br />

<strong>en</strong> Propiedades.<br />

4. Hacer clic <strong>en</strong> la ficha <strong>Seguridad</strong> de directorios y clic <strong>en</strong> Modificar para<br />

abrir el cuadro de diálogo Métodos de aut<strong>en</strong>ticación de IIS.<br />

5. Desactivar la casilla de verificación de Aut<strong>en</strong>ticación básica (la <strong>con</strong>traseña<br />

se <strong>en</strong>vía <strong>en</strong> texto claro).<br />

Nota Verificar que las casillas de verificación Aut<strong>en</strong>ticación implícita para<br />

servidores de dominios Windows y Aut<strong>en</strong>ticación integrada de Windows<br />

están desactivadas y que la casilla de verificación Acceso anónimo está<br />

seleccionada.


34 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Configurar la seguridad<br />

<strong>en</strong> el archivo <strong>Web</strong>.<strong>con</strong>fig<br />

Mostrar la página<br />

LoginDemo.aspx<br />

6. Hacer clic <strong>en</strong> Aceptar.<br />

7. Hacer clic <strong>en</strong> Aceptar.<br />

8. Hacer clic <strong>en</strong> Aceptar <strong>en</strong> el cuadro de diálogo Her<strong>en</strong>cia omitida.<br />

9. Abrir el archivo <strong>Web</strong>.<strong>con</strong>fig.<br />

Utilizando los com<strong>en</strong>tarios , com<strong>en</strong>tar la sección <br />

que <strong>con</strong>ti<strong>en</strong>e el modo de aut<strong>en</strong>ticación “Windows” y quitar los com<strong>en</strong>tarios<br />

de la sección que <strong>con</strong>ti<strong>en</strong>e el modo de aut<strong>en</strong>ticación<br />

“Forms”.<br />

Explicar la nueva sección que redirige todas las solicitudes<br />

no aut<strong>en</strong>ticadas a la página LoginDemo.aspx.<br />

Las mismas dos páginas (SecurePageDemo1.aspx y<br />

SecurePageDemo2.aspx) se han <strong>con</strong>figurado como páginas seguras.<br />

10. Guardar los cambios.<br />

11. Abrir la página de código subyac<strong>en</strong>te LoginDemo.aspx.vb o<br />

LoginDemo.asox.cs.<br />

Mostrar lo sigui<strong>en</strong>te:<br />

• El procedimi<strong>en</strong>to de ev<strong>en</strong>to cmdLogin_Click que valida el nombre de<br />

usuario y <strong>con</strong>traseña invocando la función Login, e invocar<br />

RedirectFromLoginPage, si las cred<strong>en</strong>ciales son válidas.<br />

• El primer parámetro de RedirectFromLoginPage es la id<strong>en</strong>tidad de<br />

usuario que deseamos guardar se <strong>en</strong>cu<strong>en</strong>tra <strong>en</strong> la cookie. A<br />

<strong>con</strong>tinuación, durante la sesión, esta id<strong>en</strong>tidad puede ser leída desde<br />

cualquier página utilizando User.Id<strong>en</strong>tity.Name.<br />

• RedirectFromLoginPage crea una cookie de aut<strong>en</strong>ticación temporal<br />

(no persist<strong>en</strong>te) (segundo parámetro establecido a false).<br />

• Para utilizar RedirectFromLoginPage, debemos importar<br />

System.<strong>Web</strong>.Security.<br />

• El código de la función Login. Mostrar cómo la función Login invoca el<br />

procedimi<strong>en</strong>to almac<strong>en</strong>ado EmployeeLogin para verificar las<br />

cred<strong>en</strong>ciales introducidas <strong>con</strong>sultándolas a la base de datos.<br />

• Abrir <strong>Microsoft</strong> SQL Server Enterprise Manager, y, a <strong>con</strong>tinuación,<br />

abrir la base de datos de Coho y mostrar el registro <strong>en</strong> la tabla Logins.<br />

Finalm<strong>en</strong>te, mostrar el procedimi<strong>en</strong>to almac<strong>en</strong>ado EmployeeLogin.<br />

Importante Cuando veamos la base de datos Coho, observar que <strong>en</strong> la<br />

aut<strong>en</strong>ticación basada <strong>en</strong> formularios, a difer<strong>en</strong>cia de la aut<strong>en</strong>ticación basada<br />

<strong>en</strong> Windows, dep<strong>en</strong>de de nosotros como desarrolladores el diseñar y<br />

gestionar una base de datos de usuarios.<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

12. G<strong>en</strong>erar el proyecto.<br />

13. Abrir un nuevo navegador e ir a<br />

http://localhost/Pract14VB/NonSecurePageDemo.aspx<br />

http://localhost/Pract14CS/NonSecurePageDemo.aspx<br />

14. Ir a:<br />

http://localhost/Pract14VB/SecurePageDemo1.aspx<br />

http://localhost/Pract14CS/SecurePageDemo1.aspx


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 35<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

Los estudiantes<br />

acced<strong>en</strong> al equipo del<br />

instructor<br />

Visual Basic .<strong>NET</strong><br />

C#<br />

Mostrar que somos redirigidos automáticam<strong>en</strong>te a la página<br />

LoginDemo.aspx.<br />

Mostrar que la URL, que <strong>con</strong>ti<strong>en</strong>e la página SecurePageDemo1.aspx, es la<br />

página necesaria para redirigir al usuario a la página solicitada, si las<br />

cred<strong>en</strong>ciales son correctas.<br />

15. Escribir las cred<strong>en</strong>ciales someone@cohowinery.com <strong>en</strong> Nombre de<br />

usuario (Email), introducir una <strong>con</strong>traseña no válida y hacer clic <strong>en</strong> Sign In<br />

Now.<br />

El inicio de sesión fallará porque la <strong>con</strong>traseña no es válida.<br />

16. Introducir las cred<strong>en</strong>ciales someone@cohowinery.com <strong>en</strong> Nombre de<br />

usuario (Email), someone <strong>en</strong> Contraseña, y hacer clic de nuevo <strong>en</strong> Sign<br />

In Now. Seremos redirigidos a la página SecurePageDemo1.aspx.<br />

17. La página SecurePageDemo1.aspx debería mostrar el nombre de usuario 1<br />

(que es la id<strong>en</strong>tidad que está almac<strong>en</strong>ada <strong>en</strong> la cookie <strong>en</strong> LoginDemo.aspx)<br />

y el tipo de aut<strong>en</strong>ticación Forms.<br />

Ahora podemos acceder a cualquier página segura, siempre que no cerremos<br />

el navegador. Si cerramos el navegador, deberemos pasar de nuevo por el<br />

proceso de aut<strong>en</strong>ticación debido a que la cookie es temporal (no<br />

persist<strong>en</strong>te).<br />

18. Ir a:<br />

http://localhost/Pract14VB/SecurePageDemo2.aspx<br />

http://localhost/Pract14CS/SecurePageDemo2.aspx<br />

Mostrar que esta vez no se nos pide que introduzcamos nuestras<br />

cred<strong>en</strong>ciales.<br />

19. Indicar a los estudiantes que vayan a:<br />

http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx<br />

http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx<br />

Escribir las sigui<strong>en</strong>tes cred<strong>en</strong>ciales, nombre: someone@cohowinery.com, y<br />

<strong>con</strong>traseña: someone, cuando se solicit<strong>en</strong>.<br />

Después de introducir las cred<strong>en</strong>ciales, los estudiantes deberían poder ver<br />

SecurePageDemo1.aspx y SecurePageDemo2.aspx.


36 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Lección: descripción de la aut<strong>en</strong>ticación mediante<br />

<strong>Microsoft</strong> Passport<br />

• Cómo funciona <strong>Microsoft</strong> Passport<br />

• Otros recursos de <strong>Microsoft</strong> Passport<br />

*****************************<br />

Introducción<br />

Objetivos de la lección<br />

La v<strong>en</strong>taja de <strong>Microsoft</strong> Passport es que los usuarios pued<strong>en</strong> pres<strong>en</strong>tar las<br />

mismas cred<strong>en</strong>ciales <strong>en</strong> cualquier sitio <strong>Web</strong> participante, y únicam<strong>en</strong>te deb<strong>en</strong><br />

iniciar sesión una vez. Cuando los usuarios cierran su navegador o indican que<br />

desean finalizar la sesión, la cookie se destruye y el usuario debe iniciar sesión<br />

de nuevo para acceder a los recursos de alguno de los sitios participantes.<br />

En esta lección, estudiaremos el <strong>con</strong>junto de ev<strong>en</strong>tos que ti<strong>en</strong>e lugar durante la<br />

aut<strong>en</strong>ticación mediante <strong>Microsoft</strong> Passport. También estudiaremos cómo<br />

implem<strong>en</strong>tar la aut<strong>en</strong>ticación <strong>con</strong> <strong>Microsoft</strong> Passport.<br />

En esta lección, apr<strong>en</strong>deremos a:<br />

• Describir el <strong>con</strong>junto de ev<strong>en</strong>tos que ti<strong>en</strong>e lugar durante la aut<strong>en</strong>ticación <strong>con</strong><br />

<strong>Microsoft</strong> Passport.<br />

• Id<strong>en</strong>tificar otros recursos de <strong>Microsoft</strong> Passport.


<strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong> 37<br />

Cómo funciona <strong>Microsoft</strong> Passport<br />

11<br />

22<br />

33<br />

44<br />

55<br />

66<br />

El cli<strong>en</strong>te solicita una página al host<br />

El sitio redirige al cli<strong>en</strong>te a Passport.com<br />

El cli<strong>en</strong>te es redirigido e inicia sesión <strong>en</strong><br />

Passport.com<br />

Passport devuelve una cookie<br />

<strong>con</strong> la información del<br />

ticket<br />

El cli<strong>en</strong>te accede al host, esta<br />

vez <strong>con</strong> la información<br />

del ticket<br />

El host devuelve un formulario<br />

<strong>Web</strong> Form y posiblem<strong>en</strong>te<br />

una nueva cookie que<br />

puede leer y escribir<br />

Cli<strong>en</strong>te<br />

sitioweb.msft<br />

Passport.com<br />

*****************************<br />

Introducción<br />

Serie de ev<strong>en</strong>tos que<br />

ti<strong>en</strong><strong>en</strong> lugar <strong>en</strong> la<br />

aut<strong>en</strong>ticación de<br />

<strong>Microsoft</strong> Passport<br />

Durante la aut<strong>en</strong>ticación de usuarios utilizando <strong>Microsoft</strong> Passport, se produc<strong>en</strong><br />

una serie de ev<strong>en</strong>tos.<br />

1. Cuando el cli<strong>en</strong>te solicita una página segura del sitio <strong>Web</strong> (host), la solicitud<br />

se <strong>en</strong>vía primero a IIS. IIS aut<strong>en</strong>tica al usuario como anónimo y pasa la<br />

solicitud a <strong>ASP</strong>.<strong>NET</strong>.<br />

2. <strong>ASP</strong>.<strong>NET</strong> comprueba si existe una cookie especial <strong>en</strong> el cli<strong>en</strong>te. Si la cookie<br />

no está pres<strong>en</strong>te, la solicitud es rechazada y el cli<strong>en</strong>te es redirigido al sitio<br />

<strong>Web</strong> Passport.com para ser aut<strong>en</strong>ticado.<br />

3. Passport g<strong>en</strong>era un formulario de inicio de sesión que <strong>en</strong>vía al cli<strong>en</strong>te. El<br />

usuario proporciona la información adecuada de inicio de sesión y la <strong>en</strong>vía<br />

al sitio de Passport.<br />

4. Si las cred<strong>en</strong>ciales suministradas coincid<strong>en</strong> <strong>con</strong> las de la base de datos de<br />

Passport, éste aut<strong>en</strong>tica al usuario y devuelve al cli<strong>en</strong>te una cookie <strong>con</strong> un<br />

ticket de aut<strong>en</strong>ticación.<br />

5. El cli<strong>en</strong>te <strong>en</strong>vía la solicitud inicial, esta vez <strong>con</strong> la información del ticket de<br />

aut<strong>en</strong>ticación, a la aplicación <strong>Web</strong> <strong>ASP</strong>.<strong>NET</strong>.<br />

6. De nuevo, IIS aut<strong>en</strong>tica al usuario como anónimo. <strong>ASP</strong>.<strong>NET</strong> aut<strong>en</strong>tica al<br />

usuario basándose <strong>en</strong> el ticket de aut<strong>en</strong>ticación, y devuelve al cli<strong>en</strong>te el<br />

formulario <strong>Web</strong> Form seguro.<br />

Una vez el usuario ha sido aut<strong>en</strong>ticado <strong>con</strong> Passport, es posible que se le<br />

<strong>con</strong>ceda acceso a otros sitios <strong>Web</strong> que también utilic<strong>en</strong> la aut<strong>en</strong>ticación<br />

mediante <strong>Microsoft</strong> Passport.


38 <strong>Seguridad</strong> <strong>en</strong> <strong>aplicaciones</strong> <strong>Web</strong> <strong>con</strong> <strong>Microsoft</strong> <strong>ASP</strong>.<strong>NET</strong><br />

Otros recursos de <strong>Microsoft</strong> Passport<br />

• Sitios <strong>Web</strong><br />

• http://www.passport.com<br />

• http://msdn.microsoft.com<br />

*****************************<br />

Introducción<br />

Sitios <strong>Web</strong><br />

Es posible que, cuando estudiemos de <strong>Microsoft</strong> Passport, necesitemos acceder<br />

a recursos para <strong>en</strong><strong>con</strong>trar respuestas a preguntas específicas. Los dos sitios <strong>Web</strong><br />

sigui<strong>en</strong>tes pret<strong>en</strong>d<strong>en</strong> ofrecer un punto de partida para <strong>en</strong><strong>con</strong>trar más<br />

información sobre <strong>Microsoft</strong> Passport.<br />

Podemos <strong>en</strong><strong>con</strong>trar información sobre <strong>Microsoft</strong> Passport <strong>en</strong> los sigui<strong>en</strong>tes<br />

sitios:<br />

• El <strong>en</strong>lace de información para desarrolladores <strong>en</strong> http://www.passport.com<br />

• Los recursos de http://msdn.microsoft.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!