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