Seguridad en aplicaciones Web ASP.NET

Transcripción

Seguridad en aplicaciones Web ASP.NET
Seguridad en aplicaciones Web con
Microsoft ASP.NET
Índice
Descripción
1
Lección: descripción de la seguridad para aplicaciones Web
2
Lección: trabajar con autenticación basada en Windows
14
Lección: trabajar con autenticación basada en formularios
25
Lección: descripción de la autenticación mediante Microsoft
Passport
36
Seguridad en aplicaciones Web con Microsoft ASP.NET
1
Descripción
„
Descripción de la seguridad para aplicaciones Web
„
Trabajar con autenticación basada en Windows
„
Trabajar con autenticación basada en formularios
„
Descripción de la autenticación de Microsoft Passport
*****************************
Introducción
La seguridad de las aplicaciones Web es un tema crítico y complejo para los
desarrolladores Web. Un sistema seguro requiere una cuidadosa planificación, y
los administradores y desarrolladores de sitios Web deben tener un
conocimiento muy claro de las opciones de que disponen cuando securizan sus
aplicaciones Web.
Microsoft® ASP.NET está sincronizado con el .NET Framework e Internet
Information Server (IIS) para proporcionar seguridad a las aplicaciones Web.
Este módulo trata en detalle los distintos métodos de seguridad para las
aplicaciones Web.
Objetivos
En este módulo, aprenderemos a:
„
Describir los métodos de autenticación de ASP.NET e IIS.
„
Utilizar la autenticación basada en Windows para asegurar aplicaciones
Web ASP.NET.
„
Utilizar la autenticación basada en formularios para asegurar aplicaciones
Web ASP.NET.
„
Utilizar Microsoft Passport para asegurar aplicaciones Web ASP.NET.
2
Seguridad en aplicaciones Web con Microsoft ASP.NET
Lección: descripción de la seguridad para aplicaciones
Web
„
Autenticación frente a autorización
„
¿Cuáles son los métodos de autenticación de ASP.NET?
„
Multimedia: métodos de autenticación de ASP.NET
„
Comparación de los métodos de autenticación de
ASP.NET
„
¿Cuáles son los mecanismos de autenticación de IIS?
„
Demostración: uso de los mecanismos de autenticación
de IIS
„
¿Qué es Secure Sockets Layer?
*****************************
Introducción
Por definición, las aplicaciones Web ofrecen a los usuarios acceso a un recurso
centralizado, el servidor Web, y, a través de él, acceso a servidores de bases de
datos. Conociendo e implementando medidas de seguridad adecuadas para
nuestra aplicación Web, podemos proteger nuestros propios recursos, además
de proporcionar un entorno seguro en el que los usuarios trabajen
cómodamente.
En esta lección, se describen distintos conceptos de seguridad: autenticación,
autorización y mecanismos de autenticación de IIS. También estudiaremos el
protocolo Secure Sockets Layer (SSL).
Objetivos de la lección
En esta lección, aprenderemos a:
„
Describir los dos conceptos fundamentales de seguridad para asegurar una
aplicación Web.
„
Describir los tres métodos de autenticación de ASP.NET.
„
Distinguir entre los tres métodos de autenticación de ASP.NET.
„
Describir los cuatro mecanismos de autenticación de IIS.
„
Describir SSL.
Seguridad en aplicaciones Web con Microsoft ASP.NET
3
Autenticación frente a autorización
„
„
Autenticación
z
Acepta credenciales de un usuario
z
Valida las credenciales
Autorización
z
En función de las credenciales de autenticación
suministradas, determina el derecho de acceso a un
recurso
z
Puede asignarse por nombre de usuario o por rol
*****************************
Introducción
Autenticación
Para poder empezar a trabajar con temas relacionados con la seguridad,
debemos estar familiarizados con los dos conceptos fundamentales de seguridad
para las aplicaciones Web:
„
Autenticación
„
Autorización
La autenticación es el proceso de obtener las credenciales de identificación de
un usuario, como un nombre y una contraseña, y validar esas credenciales
consultando a alguna autoridad, como una base de datos. Si las credenciales son
válidas, la entidad que las ha presentado se considera una identidad autenticada.
Por ejemplo, todos los usuarios deben proporcionar un nombre de usuario y una
contraseña cada vez que inician sesión en una red. Estas credenciales se validan
consultándolas a una autoridad, como una base de datos o un servidor de
dominio basado en Microsoft Windows®.
Autorización
Después de que una identidad haya sido autenticada, el proceso de autorización
determina si esa identidad tiene acceso a un recurso específico. El proceso de
autorización limita los derechos de acceso concediendo o denegando permisos
específicos a una identidad autenticada.
Por ejemplo, podemos autorizar al usuario Ricardo Heras para que acceda a la
impresora de color, pero denegar el acceso al usuario Bárbara Gómez. De modo
similar, podemos autorizar únicamente a los usuarios del grupo Multimedia el
acceso a la impresora de color y denegar el acceso al resto de usuarios.
4
Seguridad en aplicaciones Web con Microsoft ASP.NET
¿Cuáles son los métodos de autenticación de ASP.NET?
„
„
Autenticación basada en Windows
z
Depende del sistema operativo Windows y de IIS
z
El usuario solicita una página Web segura y la solicitud pasa por IIS
z
Una vez IIS verifica las credenciales, se devuelve la página Web segura
Autenticación basada en formularios
z
Las solicitudes no autenticadas son redirigidas a un formulario HTML
z
El usuario proporciona credenciales y envía el formulario HTML
z
„
Una vez verificadas las credenciales, se suministra una cookie de
autenticación
Autenticación mediante Microsoft Passport
z
z
Servicio de autenticación centralizado que ofrece una única opción de inicio
de sesión
Microsoft Passport es un Servicio Web XML
*****************************
Introducción
ASP.NET implementa la autenticación mediante métodos de autenticación. Los
métodos de autenticación de ASP.NET contienen el código necesario para
autenticar las credenciales de usuario.
Métodos de
autenticación
ASP.NET soporta tres tipos de métodos de autenticación:
Autenticación basada en
Windows
„
Autenticación basada en Windows
„
Autenticación basada en formularios
„
Autenticación mediante Microsoft Passport
En la autenticación basada en Windows, la aplicación Web ASP.NET depende
del sistema operativo Windows para autenticar al usuario. ASP.NET utiliza la
autenticación basada en Windows conjuntamente con la autenticación de IIS.
En la autenticación basada en Windows, el usuario solicita una página Web
segura de la aplicación Web, y la solicitud pasa por IIS. Si las credenciales del
usuario no coinciden con las de un usuario autorizado, IIS rechaza la solicitud.
A continuación, el usuario debe introducir su nombre y contraseña en el
formulario de inicio de sesión. IIS verifica de nuevo las credenciales. Si son
correctas, IIS dirige la solicitud original a la aplicación Web y el usuario recibe
la página Web segura.
Autenticación basada en
formularios
La autenticación basada en formularios hace referencia a un sistema donde
solicitudes no autenticadas son redirigidas a un formulario Hypertext Markup
Language (HTML) utilizando la redirección en el lado del cliente Hypertext
Transfer Protocol (HTTP). El usuario proporciona las credenciales y envía el
formulario. Si la aplicación valida las credenciales en el formulario, el sistema
suministra al usuario una cookie de autenticación. Las solicitudes subsiguientes
Seguridad en aplicaciones Web con Microsoft ASP.NET
5
del usuario se emiten con la cookie de autenticación en el encabezado de la
solicitud, y el usuario es autenticado en base a dicho encabezado.
Autenticación mediante
Microsoft Passport
La autenticación mediante Passport consiste en un servicio de autenticación
centralizado, proporcionado por Microsoft, que ofrece una única opción de
inicio de sesión y unos servicios con un perfil básico a los sitios suscritos. Los
usuarios que se registren utilizando Passport estarán autenticados para acceder a
sitios Web utilizando una única cuenta Passport. Microsoft Passport es un
Servicio Web XML, y es una parte esencial de Microsoft .NET.
6
Seguridad en aplicaciones Web con Microsoft ASP.NET
Comparación de los métodos de autenticación de ASP.NET
Método
Ventajas
Inconvenientes
Autenticación
basada en
Windows
ƒ Utiliza infraestructura Windows
existente
ƒ Controla el acceso a
información confidencial
ƒ No apropiado para
la mayoría de
aplicaciones de
Internet
Autenticación
basada en
formularios
ƒ Adecuada para aplicaciones de
Internet
ƒ Soporta todo tipo de clientes
ƒ Basada en cookies
Autenticación
mediante
Microsoft
Passport
ƒ Inicio de sesión único para
muchos sitios de Internet
ƒ No es necesario mantener una
base de datos para almacenar
información del usuario
ƒ Permite a los desarrolladores
personalizar el aspecto de la
página de inscripción
ƒ Basada en cookies
ƒ Implica cuota
*****************************
Introducción
Cada uno de los tres métodos de autenticación que soporta ASP.NET (basado
en Windows, basado en formularios y Microsoft Passport) es adecuado para
situaciones específicas. Cada método tiene diversas ventajas e inconvenientes.
Autenticación basada en
Windows
La autenticación basada en Windows utiliza la infraestructura de Windows
existente y, por tanto, es más adecuado en situaciones en las que se dispone de
un número fijo de usuarios con cuentas de usuario Windows existentes. Dos
ejemplos de situaciones de este tipo son:
„
El desarrollo de una intranet para una organización. Es muy probable que la
organización disponga de cuentas de usuario Windows configuradas para
cada empleado.
„
El control del acceso a información confidencial. Por ejemplo, los usuarios
del grupo de Recursos Humanos de una empresa pueden acceder a
directorios que contienen currículos de empleados e información de salarios.
Podemos utilizar la autenticación basada en Windows para evitar que los
empleados de otros grupos, como el grupo de Desarrolladores, accedan a
estos documentos confidenciales.
El inconveniente de la autenticación basada en Windows es que no es adecuada
para la mayoría de aplicaciones de Internet. Por ejemplo, si estamos generando
un sistema público de registro de usuarios y contraseñas, la autenticación
basada en Windows no es una buena opción de autenticación. Con la
autenticación basada en Windows, debe configurarse una cuenta de usuario de
Windows válida por cada usuario que acceda a una página restringida. El
proceso de agregar nuevas cuentas de usuario no puede automatizarse
fácilmente.
Seguridad en aplicaciones Web con Microsoft ASP.NET
Autenticación basada en
formularios
7
La autenticación basada en formularios es una buena solución si se desea
configurar un sistema personalizado de registro de usuarios para un sitio Web.
La ventaja de este tipo de autenticación es que nos permite almacenar nombres
de usuario y contraseñas en el mecanismo de almacenamiento que deseemos, ya
sea el archivo web.config, un archivo Extensible Markup Language (XML) o la
tabla en una base de datos.
La autenticación basada en formularios depende de cookies para determinar la
identidad del usuario. Una vez habilitada la autenticación basada en
formularios, el usuario no puede acceder a la página solicitada a menos que se
encuentre en el cliente una cookie específica. Si esta cookie no está, o si no es
válida, ASP.NET rechaza la solicitud y devuelve una página de inicio de sesión.
Autenticación mediante
Microsoft Passport
La autenticación mediante Microsoft Passport tiene varias ventajas, incluyendo:
„
Permite a los usuarios utilizar el mismo nombre de usuario y contraseña
para iniciar sesión en numerosos sitios Web; por tanto, es menos probable
que los usuarios olviden sus contraseñas. Por ejemplo, tanto Microsoft
Hotmail® como Microsoft MSN® utilizan Microsoft Passport para autenticar
usuarios.
„
No es necesario configurar y mantener una base de datos para almacenar la
información de registro. Microsoft se encarga de realizar todo el
mantenimiento.
„
Proporciona opciones para personalizar el aspecto de las páginas de registro
e inicio de sesión mediante plantillas.
El uso de la autenticación mediante Microsoft Passport tiene dos
inconvenientes. En primer lugar, existe una cuota de suscripción por utilizar el
servicio Microsoft Passport en desarrollo. En segundo lugar, la autenticación
Microsoft Passport está basada en cookies.
8
Seguridad en aplicaciones Web con Microsoft ASP.NET
¿Cuáles son los mecanismos de autenticación de IIS?
Mecanismos
Acceso anónimo
Autenticación
básica
Autenticación
implícita
Seguridad
integrada de
Windows
Nivel de
seguridad
Ninguno
Bajo
(Medio con SSL)
Descripció
Descripción
ƒ No se produce autenticación
ƒ El cliente envía nombre de usuario y
contraseña como texto claro
ƒ Puede encriptarse utilizando SSL
ƒ Parte de la especificación HTTP y
soportado por la mayoría de
exploradores
Medio
ƒ Envía la información en un hash (o
digest) codificado
ƒ Requiere Internet Explorer 5 o superior
ƒ Requiere Active Directory
Alto
ƒ Utiliza NTLM o Kerberos
ƒ Generalmente adecuado para intranets,
no Internet
ƒ No funciona a través de muchos
cortafuegos
*****************************
Introducción
Para poder utilizar la autenticación basada en Windows, debemos configurar
antes el servidor Web IIS. Cuando un usuario solicita una página que requiere
autorización, el usuario debe ser autenticado a través de IIS.
IIS proporciona varios mecanismos que pueden utilizarse para establecer
autenticación, incluyendo:
Acceso anónimo
„
Acceso anónimo
„
Autenticación básica
„
Autenticación implícita
„
Seguridad integrada de Windows
Para aplicaciones Web en las que usuarios desconocidos realizan solicitudes,
normalmente aplicaciones Web públicas, IIS soporta un usuario anónimo, un
usuario que no dispone de credenciales de autenticación. Cuando IIS recibe una
solicitud de un usuario anónimo, IIS hace la solicitud a Windows utilizando la
cuenta predeterminada IUSR_nombreequipo.
Nota La cuenta predeterminada IUSR_ nombreequipo puede modificarse
mediante el complemento de administración de IIS.
Autenticación básica
IIS también soporta un modelo de autenticación básica. En la autenticación
básica, se solicita a los usuarios sin credenciales que suministren un nombre de
usuario y una contraseña. Esta información se devuelve a IIS, y a partir de
entonces está disponible para la aplicación Web. La ventaja de la autenticación
básica es que forma parte de la especificación HTTP y está soportada por la
mayoría de navegadores. La autenticación básica proporciona un modo útil para
ofrecer acceso restringido a una aplicación Web pública.
Sin embargo, debido a que el usuario pasa un nombre de usuario y una
contraseña a IIS en forma de texto claro, la autenticación básica no ofrece un
Seguridad en aplicaciones Web con Microsoft ASP.NET
9
nivel alto de seguridad. Para incrementarlo, se utiliza SSL para encriptar
nombres de usuario y contraseñas cuando se transmiten a través de la red.
Autenticación implícita
La autenticación implícita es similar a la autenticación básica, pero utiliza la
encriptación para enviar información del usuario al servidor. Si el acceso
anónimo está deshabilitado, se pide a los usuarios sus credenciales (información
de inicio de sesión). El navegador combina esta información de inicio de sesión
con el resto de información almacenada en el cliente, y envía al servidor un
hash codificado denominado hash MD5 (o Message Digest). El servidor ya
dispone de una copia de esta información y recrea los destalles originales desde
su propio hash y autentica el usuario. Este mecanismo únicamente funciona con
Microsoft Internet Explorer 5 y superior, pero pasa a través de cortafuegos,
servidores proxy e Internet.
Sin embargo, la autenticación implícita únicamente funciona con cuentas de
dominio dadas de alta en el servicio de directorios Active Directory®.
Nota Para más información sobre la configuración de las cuentas de dominio
de Active Directory para permitir la autenticación implícita, consultar la
documentación de IIS.
Seguridad integrada de
Windows
Si el usuario que realiza la solicitud ya ha sido autenticado en una red basada en
Windows, IIS puede pasar las credenciales del usuario cuando solicite acceso a
un recurso. Las credenciales no incluyen el nombre de usuario y la contraseña,
únicamente un token encriptado que indica el estado de seguridad del usuario.
La seguridad integrada de Windows funciona con Microsoft Windows NTLM
(Windows NT® Local Area Network (LAN) Manager) o con Kerberos. La
seguridad integrada de Windows también utiliza un algoritmo hash para
codificar y decodificar las credenciales del usuario.
Sin embargo, la seguridad integrada de Windows no resulta práctica en las
aplicaciones Web que deben atravesar cortafuegos. Por tanto, es más adecuada
en escenarios de intranets corporativas.
Nota Cuando se configura IIS, se pueden utilizar múltiples mecanismos de
autenticación de IIS. Se puede seleccionar el acceso anónimo u otros métodos,
como la autenticación básica, implícita o integrada de Windows. Si se utilizan
múltiples mecanismos de autenticación de IIS, y si la autenticación anónima
falla, el servidor Web intentará utilizar la autenticación básica, implícita o
integrada de Windows, dependiendo de los métodos que estén seleccionados.
10
Seguridad en aplicaciones Web con Microsoft ASP.NET
Demostración: uso de los mecanismos de autenticación de IIS
„ Hacer clic con el botón derecho en Mod16 y hacer
clic en Propiedades
„ Hacer clic en la pestaña Seguridad de directorios
„ Hacer clic en Modificar
„ Mostrar los métodos
de autenticación
*****************************
Introducción
En esta demostración, visualizaremos el cuadro de diálogo que se utiliza par
configurar los mecanismos de autenticación de IIS.
Ë Ejecutar la demostración
1. En el menú Inicio, hacer clic con el botón derecho en Mi PC y hacer clic en
Administrar.
2. En la consola Administración de equipos, expandir Servicios y
aplicaciones, expandir Internet Information Services, expandir Sitios
Web, y expandir Sitio Web predeterminado.
3. Hacer clic con el botón derecho en la aplicación Web Pract14VB o
Pract14CS y hacer clic en Propiedades.
4. En el cuadro de diálogo Pract14VB o Propiedades de Pract14CS, en la
ficha Seguridad de directorios, en la sección Control de autenticación y
acceso anónimo, hacer clic en Modificar.
5. Mostrar los métodos de autenticación disponibles.
Seguridad en aplicaciones Web con Microsoft ASP.NET
11
¿Qué es Secure Sockets Layer?
„
SSL es un protocolo que se utiliza para transmitir datos de
forma segura a través de una red. SSL securiza los datos
mediante:
z
Encriptación de datos
- Asegura que los datos enviados son leídos únicamente por un
servidor destinatario seguro
z
Autenticación de servidor
z
Integridad de los datos
- Asegura que los datos se envían al servidor correcto
- Utiliza los certificados de servidor y de cliente
- Protege la integridad de los datos
- Incluye un código de autenticación de mensajes que detecta si un
mensaje ha sido o no modificado
„
Utiliza HTTPS (Hypertext Transfer Protocol Secure) para
recuperar una página Web ASP.NET
*****************************
Introducción
IIS proporciona a los usuarios un canal de comunicación seguro al soportar el
protocolo SSL y la encriptación RSA Data Security tanto en el servidor como
en el cliente.
Nota RSA son las siglas de Rivest, Shamir y Adleman, los nombres de los
científicos que crearon este algoritmo.
¿Qué es SSL?
Encriptación de datos
SSL es un protocolo que se utiliza para transmitir datos de modo seguro a través
de una red. SSL securiza la comunicación de datos mediante:
„
Encriptación de datos
„
Autenticación de servidor
„
Integridad de datos
Cuando se introduce información en un formulario HTML y se envía a un sitio
Web, la información se transmite desde el navegador al servidor del sitio Web.
En el proceso de transmisión de la información, los datos introducidos en el
formulario pueden ser interceptados y leídos.
SSL encripta la información transmitida entre un servidor Web y un navegador
Web. La información se encripta utilizando un algoritmo públicamente
conocido y una clave de sesión. El servidor Web genera una clave pública que
puede utilizar cualquier cliente. El cliente genera una clave de sesión y utiliza la
clave pública para encriptarla antes de enviarla al servidor Web. Los datos se
transmiten utilizando esta clave de sesión.
12
Seguridad en aplicaciones Web con Microsoft ASP.NET
El número de bits de la clave de sesión determina la potencia de la encriptación.
IIS soporta claves de sesión de 40 bits y claves de sesión más potentes de 128
bits.
Seguridad en aplicaciones Web con Microsoft ASP.NET
13
La siguiente tabla muestra las ventajas e inconvenientes del uso de claves de
sesión de 40 bits y de 128 bits.
Autenticación de
servidor
Clave de sesión
Ventaja
Inconveniente
Clave de sesión de
40 bits
La comunicación es mucho
más rápida.
No es muy segura, los mensajes
pueden ser modificados.
Clave de sesión de
128 bits
Muy segura, los mensajes
encriptados con clave de
sesión de 128 bits se
consideran inquebrantables.
La comunicación es bastante más
lenta; cuanto más larga es la clave,
más trabajo deben realizar el
servidor y el navegador para
encriptar y desencriptar el mensaje.
La autenticación de servidor garantiza que los datos se envían al servidor
correcto y que éste es seguro.
Por ejemplo, podría ocurrir que visitáramos un sitio Web que fuera muy
parecido a un sitio Web de comercio electrónico al que accediésemos
frecuentemente. Podría parecer igual que el sitio Web que conocemos, y
proporcionaríamos la información de nuestra tarjeta de crédito para adquirir un
artículo. Sin embargo, alguien que deseara engañarnos podría crear un sitio
Web idéntico al sitio Web de comercio electrónico auténtico y robar la
información de nuestra tarjeta de crédito.
Certificado de servidor
Para evitar que un sitio Web se haga pasar por otro, utilizamos SSL para
autenticar sitios Web. Cuando instalamos SSL en nuestro servidor Web,
debemos instalar un certificado de servidor. El certificado de servidor contiene
información sobre nuestra organización, nuestro sitio Web y el emisor del
certificado.
Para funcionar como un ID digital, un certificado de servidor debe estar
firmado por una autoridad de certificación. La autoridad de certificación actúa
como un tercero de confianza que verifica la identidad de un sitio Web para sus
usuarios.
Certificado de cliente
SSL también soporta certificados de cliente. Los certificados de cliente se
utilizan para autenticar navegadores Web en lugar de servidores Web.
Integridad de datos
SSL protege la integridad de los datos cuando viajan entre el servidor Web y los
navegadores Web. SSL garantiza que los datos recibidos por el servidor de
destino no han sufrido ninguna modificación.
Cuando los mensajes se transmiten con SSL, incluyen un código de
autenticación de mensaje. Este código detecta si el mensaje ha sido modificado.
Uso de SSL en páginas
ASP.NET
Después de configurar nuestro servidor para que utilice SSL, podemos solicitar
cualquier página de nuestro sitio Web utilizando una conexión segura. Para
recuperar una página Web, SSL utiliza Hypertext Transfer Protocol Secure
(HTTPS). Por ejemplo, una dirección con la forma
https://www.nuestrodominio.com/login.aspx en lugar de http://www.
nuestrodominio.com/pagina.aspx.
Esto funciona para cualquier página de nuestro sitio Web.
Nota ASP.NET proporciona la propiedad Request.IsSecureConnection que
nos permite determinar si nos encontramos en una conexión https segura.
14
Seguridad en aplicaciones Web con Microsoft ASP.NET
Lección: trabajar con autenticación basada en Windows
„
Cómo habilitar la autenticación basada en Windows
„
Leer información del usuario
„
Demostración: uso de la autenticación basada en
Windows
*****************************
Introducción
La autenticación basada en Windows debería utilizarse para securizar las
aplicaciones Web cuando sabemos qué usuarios accederán a nuestro sitio Web.
En esta lección, estudiaremos el procedimiento para utilizar la autenticación
basada en Windows para securizar nuestras aplicaciones Web.
Objetivos de la lección
En esta lección, aprenderemos a:
„
Utilizar la autenticación basada en Windows para securizar aplicaciones
Web.
„
Leer la identidad del usuario que está autenticado utilizando la autenticación
basada en Windows.
Seguridad en aplicaciones Web con Microsoft ASP.NET
15
Cómo habilitar la autenticación basada en Windows
11„
22„
Configurar IIS para utilizar uno o varios de los
siguientes mecanismos de autenticación :
z
Básica
z
Implícita
z
Seguridad de Windows integrada
Establecer la autenticación basada en Windows en
Web.config
<system.web>
<system.web>
<Authentication
<Authentication mode="Windows"
mode="Windows" />
/>
</system.web>
</system.web>
*****************************
Introducción
El proceso de securizar aplicaciones Web mediante la autenticación basada en
Windows requiere cuatro pasos:
1. Configurar IIS.
2. Configurar la autenticación en Web.config.
3. Configurar la autorización en Web.config.
4. IIS solicita información de inicio de sesión a los usuarios.
Configurar IIS
El primer paso para securizar aplicaciones Web utilizando la autenticación
basada en Windows implica configurar IIS utilizando uno o varios de los tres
mecanismos de autenticación:
„
Autenticación básica
„
Autenticación implícita
„
Seguridad integrada de Windows
Nota Normalmente, se habilita la autenticación básica o la seguridad integrada
de Windows. Si deseamos que nuestra aplicación Web sea compatible con otros
navegadores, deberíamos utilizar la autenticación básica. Si no estamos
utilizando un cortafuegos o servidor proxy, podemos utilizar la seguridad
integrada de Windows.
16
Seguridad en aplicaciones Web con Microsoft ASP.NET
Configurar la
autenticación
El segundo paso para securizar aplicaciones Web utilizando la autenticación
basada en Windows es establecer la seguridad de ASP.NET a autenticación
basada en Windows en el archivo Web.config. Las opciones de configuración
de seguridad en Web.config se incluyen en las secciones <authentication>,
<authorization> e <identity>.
Establecer el método de autenticación a “Windows” para la aplicación en una
subsección <authentication> de la sección <system.web> en Web.config, como
muestra el siguiente ejemplo:
<system.web>
<authentication mode="Windows" />
</system.web>
Seguridad en aplicaciones Web con Microsoft ASP.NET
17
Cómo habilitar la autenticación basada en Windows (continuación)
33„
Establecer la autorización en Web.config
<location
<location path="ShoppingCart.aspx">
path="ShoppingCart.aspx">
<system.web>
<system.web>
<Authorization>
<Authorization>
<deny
<deny users="?"/>
users="?"/>
</Authorization>
</Authorization>
</system.web>
</system.web>
</location>
</location>
44„
Cuando los usuarios
acceden al formulario
Web Form, IIS solicita
información de inicio
de sesión
*****************************
Introducción
Securizar las aplicaciones Web utilizando la autenticación basada en Windows
es un proceso de cuatro pasos:
1. Configurar IIS.
2. Establecer la autenticación en Web.config.
3. Establecer la autorización en Web.config.
4. IIS solicita información de inicio de sesión a los usuarios.
Hemos estudiado los dos primeros pasos en el apartado anterior. Esta sección
explica los dos últimos pasos.
Configurar la
autorización
Para indicar que sólo algunas páginas específicas son seguras, debemos crear
una sección <location> con subsecciones <system.web> y <authorization> para
cada página segura de nuestra aplicación Web:
<location path="ShoppingCart.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
Las opciones de configuración que contiene la sección <location> serán
dirigidas al archivo o directorio que se indica en el atributo path. La sección
<configuration> puede tener múltiples secciones <location>.
Nota La sección <location> puede ser un formulario Web Form ASP.NET o
una carpeta. Si se especifica un nombre de carpeta, todas las subcarpetas bajo
ella serán seguras. Para asegurar múltiples formularios Web Forms o carpetas,
se utilizarán múltiples secciones <location>.
18
Seguridad en aplicaciones Web con Microsoft ASP.NET
En la sección <system.web>, crear una subsección <authorization> para
especificar qué tipo de autorización se impondrá. Crear las etiquetas <allow> o
<deny> para permitir o denegar a los usuarios el acceso a una página. En estas
etiquetas, “?” indica usuarios anónimos y “*” significa todos los usuarios.
Por ejemplo, el siguiente código deniega el acceso a todos los usuarios
anónimos:
<authorization>
<deny users="?" />
</authorization>
El siguiente código permite al usuario “Mary” acceder a una página:
<authorization>
<allow users="Mary" />
</authorization>
Nota No es recomendable autorizar a usuarios individualmente, ya que este
proceso puede revelar información confidencial en caso de que el archivo
Web.config sea leído. Además, codificar directamente nombres de usuario en el
archivo Web.config no es un planteamiento flexible ya que no permite
modificar esta información programáticamente en tiempo de ejecución. La
codificación directa de usuarios en el archivo Web.config resulta adecuado sólo
para realizar pruebas.
El siguiente código deniega a todos los usuarios anónimos el acceso a la página
ShoppingCart.aspx:
<location path="ShoppingCart.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
Tras especificar el modo de autenticación, debemos indicar que toda la
aplicación Web necesita autorización, o especificar qué páginas son seguras y,
por tanto, que requieren autorización.
Para indicar que toda la aplicación es segura, crear una sección <authorization>
en la sección <system.web>, como muestra el siguiente código de ejemplo:
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
Seguridad en aplicaciones Web con Microsoft ASP.NET
19
Utilizamos el elemento <identity> para habilitar la impersonalización. La
impersonalización permite al servidor ejecutar código bajo el contexto de
seguridad de una entidad solicitante o como un usuario anónimo. En ASP.NET,
la impersonalización es opcional, y está deshabilitada de forma predeterminada.
El elemento <identity> debe estar bajo la sección <system.web> en el archivo
Web.config o Machine.config. El siguiente código muestra la sintaxis que se
utiliza con el elemento <identity>:
<identity impersonate="true|false"
username="username"
password="password" />
En el código anterior, los atributos username y password especifican las
credenciales a utilizar si impersonate está establecido a true.
Se utiliza una cuenta especial de Windows denominada ASPNET si
impersonate está establecido a false, el valor predeterminado.
IIS solicita información
de inicio de sesión a los
usuarios
El último paso del proceso para habilitar la autenticación basada en Windows se
produce cuando los usuarios intentan acceder a un formulario Web Form desde
nuestra aplicación Web e IIS solicita información de inicio de sesión al usuario.
El usuario debe proporcionar su nombre de usuario y contraseña. Si IIS aprueba
las credenciales del usuario, éste obtiene acceso a la página Web segura
solicitada.
20
Seguridad en aplicaciones Web con Microsoft ASP.NET
Leer información del usuario
„
Tras la autenticación, el servidor Web puede leer la
identidad del usuario
lblAuthUser.Text
lblAuthUser.Text == User.Identity.Name
User.Identity.Name
lblAuthType.Text
=
User.Identity.AuthenticationType
lblAuthType.Text = User.Identity.AuthenticationType
lblIsAuth.Text
lblIsAuth.Text == User.Identity.IsAuthenticated
User.Identity.IsAuthenticated
lblAuthUser.Text
lblAuthUser.Text == User.Identity.Name;
User.Identity.Name;
lblAuthType.Text
=
User.Identity.AuthenticationType;
lblAuthType.Text = User.Identity.AuthenticationType;
lblIsAuth.Text
lblIsAuth.Text == User.Identity.IsAuthenticated;
User.Identity.IsAuthenticated;
*****************************
Introducción
Una vez finalizado el proceso de autenticación basada en Windows, el servidor
Web puede leer la identidad del usuario desde cualquier página de la aplicación
Web.
El servidor Web puede leer la identidad del usuario utilizando
User.Identity.Name. El servidor Web también puede identificar el mecanismo
de autenticación de IIS que se utiliza para autenticar al usuario utilizando
User.Identity.AuthenticationType. Además, el servidor Web puede
comprobar si el usuario está autenticado utilizando
User.Identity.IsAuthenticated.
El siguiente código de ejemplo muestra cómo se permite al servidor Web leer la
identidad del usuario:
Visual Basic .NET
lblAuthUser.Text = User.Identity.Name
lblAuthType.Text = User.Identity.AuthenticationType
lblIsAuth.Text = User.Identity.IsAuthenticated
C#
lblAuthUser.Text = User.Identity.Name;
lblAuthType.Text = User.Identity.AuthenticationType;
lblIsAuth.Text = User.Identity.IsAuthenticated;
Nota User.Identity es un objeto de la clase WindowsIdentity.
Seguridad en aplicaciones Web con Microsoft ASP.NET
21
Demostración: uso de la autenticación basada en Windows
„
Abrir IIS y configurarlo únicamente con
autenticación anónima
„
Crear un nuevo usuario en el equipo local
„
Abrir Web.config y configurarlo para
soportar autenticación y autorización
„
Ejecutar la aplicación Web ASP.NET
segura
z
Los estudiantes pueden acceder a la
aplicación Web ASP.NET segura en el
equipo del instructor
*****************************
Introducción
En esta demostración, veremos cómo configurar IIS para utilizar la
autenticación basada en Windows con autenticación básica de IIS.
Seguidamente, veremos cómo crear un nuevo usuario en el servidor local, y
cómo configurar la autenticación y autorización en Web.config. A
continuación, veremos algunas demostraciones de acceso a páginas seguras y
no seguras. Finalmente, aprenderemos a conectarnos a una página segura en el
equipo del instructor.
Los archivos para esta demostración se encuentran en el proyecto Pract14VB o
Pract14CS dentro del fichero demos14.zip.
Ë Ejecutar la demostración
Configurar IIS con
autenticación básica
1. Hacer clic con el botón derecho en Mi PC y hacer clic en Administrar.
2. Expandir Servicios y aplicaciones, expandir Internet Information
Services, y hacer clic en Sitios Web.
3. Hacer clic con el botón derecho en Sitio Web predeterminado y hacer clic
en Propiedades.
4. Hacer clic en la ficha Seguridad de directorios, y clic en Modificar para
abrir el cuadro de diálogo Métodos de autenticación de IIS.
5. Seleccionar la casilla de verificación de autenticación básica (la contraseña
se envía en texto claro) y hacer clic en Sí en el cuadro de diálogo
Administrador de Servicios de Internet.
Nota Comprobar que está seleccionada la casilla de verificación de Acceso
22
Seguridad en aplicaciones Web con Microsoft ASP.NET
anónimo. Verificar que no están seleccionadas las casillas de verificación de
Autenticación implícita para servidores de dominios Windows y
Autenticación integrada de Windows.
6. Escribir nombreequipo en el campo Dominio predeterminado, ya que esta
demostración se realizará con una cuenta local creada en este equipo.
7. Hacer clic en Aceptar para cerrar el cuadro de diálogo Métodos de
autenticación de IIS.
8. Hacer clic en Aceptar para cerrar el cuadro de diálogo Propiedades del
sitio Web predeterminado. En el cuadro de diálogo Herencia omitida,
hacer clic en Aceptar.
Crear un nuevo usuario
en el equipo local
9. En la consola Administración de equipos, expandir Herramientas del
sistema, y expandir Usuarios y grupos locales.
10. Hacer clic con el botón derecho en la carpeta Usuarios y clic en Nuevo
usuario:
Introducir la siguiente información en el cuadro de diálogo Nuevo usuario.
Campo
Valor
Nombre de usuario
someone
Nombre completo
someone
Descripción
Cuenta de demostración de someone
Contraseña
Secreto1
Confirmar contraseña
Secreto1
a. Desactivar la casilla de verificación de El usuario debe cambiar la
contraseña en el siguiente inicio de sesión.
b. Seleccionar la casilla de verificación de El usuario no puede cambiar
la contraseña.
c. Hacer clic en Crear y clic en Cerrar.
En el lado derecho de la ventana del cuadro de diálogo Administración de
equipos, debería aparecer el usuario someone.
Mostrar la configuración
de seguridad en el
archivo Web.config
11. Abrir el proyecto Pract14VB o Pract14CS y visualizar el archivo
Web.config en Microsoft Visual Studio® .NET.
Una sección <authentication> está configurada con autenticación basada en
Windows.
Son necesarias dos secciones <location> para securizar dos páginas:
SecurePageDemo1.aspx y SecurePageDemo2.aspx. Con la configuración
actual de IIS, si un usuario intenta acceder a una de estas páginas, se
utilizará la autenticación básica. Si un usuario intenta acceder las otras
páginas, se utilizará la autenticación anónima.
Mostrar el nombre y tipo
de autenticación en un
formulario Web Form.
12. Abrir la página de código subyacente SecurePageDemo1.aspx y explicar el
código User.Identity.Name y User.Identity.AuthenticationType.
Note No se requiere ninguna instrucción Imports para utilizar
User.Identity.xxx.
13. Generar el proyecto Pract14VB o Pract14CS en la solución 2310Demos.
14. Abrir un nuevo navegador e ir a:
Seguridad en aplicaciones Web con Microsoft ASP.NET
Visual Basic .NET
http://localhost/Pract14VB/NonSecurePageDemo.aspx
C#
http://localhost/Pract14CS/NonSecurePageDemo.aspx
23
24
Seguridad en aplicaciones Web con Microsoft ASP.NET
15. Ir a:
Visual Basic .NET
http://localhost/Pract14VB/SecurePageDemo1.aspx
C#
http://localhost/Pract14CS/SecurePageDemo1.aspx
Mostrar que aparece el cuadro de diálogo Connect to localhost.
16. Hacer clic en Cancelar y mostrar que se obtiene un error de servidor
porque se deniega el acceso.
17. Ir a:
Visual Basic .NET
http://localhost/Pract14VB/SecurePageDemo2.aspx
C#
http://localhost/Pract14CS/SecurePageDemo2.aspx
Mostrar que también aparece el cuadro de diálogo Connect to localhost.
18. Escribir las credenciales Nombre de usuario como someone y Contraseña
como Secreto1 y hacer clic en Aceptar.
19. La página SecurePageDemo2.aspx debería mostrar el nombre de usuario
someone y el tipo de autenticación básica.
Ahora, podemos acceder a cualquier página segura, siempre que no
cerremos el navegador. Si cerramos el navegador, deberemos repetir el
proceso de autenticación.
20. Ir a:
Visual Basic .NET
http://localhost/Pract14VB/SecurePageDemo1.aspx
C#
http://localhost/Pract14CS/SecurePageDemo1.aspx
Mostrar que esta vez no se solicitan las credenciales.
Los estudiantes acceder
al equipo del instructor
21. Indicar a los estudiantes que vayan a:
Visual Basic .NET
http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx
C#
http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx
Escribir las credenciales someone y Secreto1 cuando se solicite.
Tras introducir las credenciales, los estudiantes deberían poder ver
SecurePageDemo1.aspx y SecurePageDemo2.aspx.
Seguridad en aplicaciones Web con Microsoft ASP.NET
25
Lección: trabajar con autenticación basada en
formularios
„
Descripción de la autenticación basada en formularios
„
Multimedia: autenticación basada en formularios
„
Cómo habilitar la autenticación basada en formularios
„
Crear una página de inicio de sesión
„
Demostración: uso de la autenticación basada en
formularios
*****************************
Introducción
El método de autenticación que más se utiliza habitualmente para securizar
aplicaciones Web con ASP.NET es la autenticación basada en formularios.
En esta lección, estudiaremos la arquitectura basada en formularios, y los pasos
para habilitar la autenticación basada en formularios. También estudiaremos
cómo configurar la seguridad en Web.config, y crear una página de inicio de
sesión.
Objetivos de la lección
En esta lección, aprenderemos a:
„
Identificar la serie de eventos que tiene lugar durante la autenticación
basada en formularios.
„
Identificar los pasos para habilitar la autenticación basada en formularios.
„
Configurar autenticación y autorización en un archivo Web.config.
„
Describir cómo crear una página de inicio de sesión.
26
Seguridad en aplicaciones Web con Microsoft ASP.NET
Descripción de la autenticación basada en formularios
11
No
autenticado
El cliente solicita página
66
Acceso denegado
8
22
IIS
Nombre usuario
Alguien
Contraseña
***********
No
autenticado
Cookie de
autenticación
Enviar
Enviar
Autenticación
ASP.NET Forms
8
Autenticado
Autorizado
44
Página de inicio
(los usuarios
introducen sus
credenciales)
33
Autenticado
Autorizado
55
77
Página segura
solicitada
*****************************
Introducción
Cuando un usuario solicita una página Web que está protegida por
autenticación basada en formularios, la solicitud debe pasar primero por IIS.
Por ello, debemos establecer la autenticación de IIS a acceso anónimo.
Establecer IIS a anónimo requiere que todas las solicitudes pasen por ASP.NET
antes de ser autenticadas.
Serie de eventos que
tienen lugar durante la
autenticación basada en
formularios
En la autenticación basada en formularios, se produce la siguiente serie de
eventos:
1. Un cliente genera una solicitud de una página .aspx protegida.
2. IIS recibe la solicitud y la pasa a ASP.NET. El modo de autenticación está
establecido en acceso anónimo y, por ello, la solicitud pasa directamente por
IIS.
3. ASP.NET comprueba si la solicitud dispone de una cookie de autenticación
válida anexa. Si es así, significa que las credenciales del usuario ya han sido
confirmadas y que la solicitud se ha examinado para su autorización.
ASP.NET realiza la verificación de autorización comparando las
credenciales que contiene la cookie de autorización de la solicitud con las
opciones de configuración de autorización del archivo Web.config. Si el
usuario es autorizado, se concede el acceso a la página segura solicitada.
4. Si la solicitud no tiene ninguna cookie anexa, ASP.NET redirecciona la
solicitud a una página de inicio de sesión (cuya ruta reside en el archivo de
configuración de la aplicación), donde el usuario introduce las credenciales
requeridas, normalmente un nombre y una contraseña.
Seguridad en aplicaciones Web con Microsoft ASP.NET
27
5. El código de la aplicación en la página de inicio de sesión comprueba las
credenciales para confirmar su autenticidad y, si son autenticadas, adjunta a
la solicitud una cookie que contiene las credenciales.
6. Si la autenticación falla, la solicitud se devuelve con un mensaje de “Acceso
denegado”.
7. Si el usuario es autenticado, ASP.NET comprueba la autorización, como en
el paso 3, y puede permitir el acceso a la página segura solicitada
originalmente o redireccionar la solicitud a otra página, dependiendo del
diseño de la aplicación.
Por otra parte, ASP.NET puede dirigir la solicitud a un formulario de
autorización personalizado donde se examinan las credenciales para la
autorización a la página protegida. Normalmente, si la autorización falla, la
solicitud se devuelve con un mensaje de “Acceso denegado”.
28
Seguridad en aplicaciones Web con Microsoft ASP.NET
Cómo habilitar la autenticación basada en formularios
11
„
Configurar IIS para utilizar autenticación anónima
22
„
Establecer la autenticación basada en formularios en
Web.config
<Authentication
<Authentication mode="Forms"
mode="Forms" >>
<<forms
name=".namesuffix"
forms name=".namesuffix"
loginUrl="login.aspx"
loginUrl="login.aspx" />
/>
</Authentication>
</Authentication>
„
33
Establecer la autorización
44
„
Generar un formulario Web
Form de inicio de sesión
*****************************
Introducción
Para habilitar la autenticación basada en formularios para nuestra aplicación
Web, debemos realizar los cuatro pasos siguientes:
Habilitar la autenticación
basada en formularios
1. Configurar IIS para utilizar la autenticación anónima, para que el usuario
sea autenticado por ASP.NET y no por IIS.
Configurar la
autenticación
2. Configurar el método de autenticación basado en formularios (Forms) para
la aplicación en una subsección <authentication> de la sección
<system.web> en Web.config, como muestra el siguiente ejemplo:
<system.web>
<authentication mode="Forms">
<forms name=".namesuffix" loginUrl="login.aspx" />
</authentication>
</system.web>
Si se establece el modo de autenticación en “Forms”, se debe agregar un
elemento <forms> a la sección <authentication>, como muestra el ejemplo
anterior.
En la sección <forms>, se configura la cookie. Establecer el atributo name
con el sufijo que utilizarán las cookies y el atributo loginUrl con la URL
(Uniform Resource Locator) de la página a la que se redirigen las
solicitudes no autenticadas.
Configurar la
autorización
3. Configurar la sección <authorization> de Web.config. El proceso de
configurar la autorización para autenticación basada en formularios es
idéntico al proceso de la autenticación basada en Windows.
Al configurar la sección <authorization> en Web.config, podemos denegar
o permitir a los usuarios el acceso a nuestra aplicación Web. También
Seguridad en aplicaciones Web con Microsoft ASP.NET
podemos indicar que toda la aplicación Web requiere autorización o
especificar qué páginas son seguras y, por tanto, requieren autorización.
Generar un formulario
Web Form de inicio de
sesión
4. Generar un formulario Web Form de inicio de sesión, login.aspx.
Login.aspx puede ser una página sencilla con dos campos, uno para el
nombre de usuario y otro para la contraseña. Login.aspx requiere que los
usuarios introduzcan su nombre de usuario y contraseña para establecer
autenticación y poder acceder a nuestra aplicación Web.
29
30
Seguridad en aplicaciones Web con Microsoft ASP.NET
Crear una página de inicio de sesión
„
Añadir una referencia a System.Web.Security
„
La página de inicio de sesión verifica y examina las credenciales de un
usuario
private
private void
void cmdLogin_Click(object
cmdLogin_Click(object sender,
sender, EventArgs
EventArgs e)
e)
{{
if
if (login(txtEmail.Text,
(login(txtEmail.Text, txtPassword.Text))
txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text,
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, false);
false);
}}
Sub
Sub cmdLogin_Click(s
cmdLogin_Click(s As
As Object,
Object, ee As
As eventArgs)
eventArgs)
If
(login(txtEmail.Text,
txtPassword.Text))
If (login(txtEmail.Text, txtPassword.Text))
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text,
FormsAuthentication.RedirectFromLoginPage(txtEmail.Text, False)
False)
End
End If
If
End
End Sub
Sub
„
Leer las credenciales del usuario desde una cookie
z
User.Identity.Name devuelve el valor guardado por
FormsAuthentication.RedirectFromLoginPage
*****************************
Introducción
Durante la autenticación, todas las solicitudes son redirigidas a la página de
inicio de sesión especificada en el atributo loginUrl de la etiqueta <forms>. La
página de inicio de sesión verifica y examina las credenciales de un usuario.
¿Cómo funciona una
página de inicio de
sesión?
Si el modo de autenticación está establecido a “Forms”, ASP.NET busca una
cookie de autenticación adjunta a la solicitud de una página segura. Si
ASP.NET no encuentra la cookie de autenticación, redirecciona la solicitud a la
página de inicio de sesión especificada.
En la página de inicio de sesión, el usuario introduce las credenciales
requeridas. La página las examina, bien a través de código específico de la
aplicación o invocando a FormsAuthentication.Authenticate. Si las
credenciales con válidas, se genera una cookie y el usuario es redirigido a la
página solicitada originalmente invocando a
FormsAuthentication.RedirectFromLoginPage. Sin embargo, si las
credenciales no son válidas, el usuario permanece en la página de inicio de
sesión y recibe un mensaje que indica que las credenciales de inicio de sesión
no son válidas.
El método RedirectFromLoginPage toma dos parámetros: userName, que
especifica el nombre del usuario para la autenticación basada en formularios, y
createPersistentCookie. Si el valor de createPersistentCookie es true, una
cookie de autenticación persistente, una cookie escrita en el sistema de archivos
cliente, se crea en el equipo del usuario. De lo contrario, se crea una cookie de
autenticación temporal (no persistente).
Seguridad en aplicaciones Web con Microsoft ASP.NET
31
La siguiente tabla muestra una lista todos los métodos del objeto
FormsAuthentication, que pueden utilizarse en el proceso de autenticación.
Crear una página de
inicio de sesión
Método
Función
Authenticate
Dadas las credenciales suministradas, este método intenta
validar las credenciales comparándolas con las que
contiene el almacén de credenciales configurado.
GetAuthCookie
Crea una cookie de autenticación para un determinado
nombre de usuario. La cookie no se establece como parte
de la respuesta saliente; por tanto, una aplicación puede
tener un mayor control sobre cómo se emite la cookie.
GetRedirectUrl
Devuelve la URL redirigida para la solicitud original que
ha provocado la redirección a la página de inicio de
sesión.
RedirectFromLoginPage
Redirige a los usuarios autenticados a la URL solicitada
originalmente.
SetAuthCookie
Crea un ticket de autenticación para el userName dado y
lo adjunta a la colección de cookies de la respuesta
saliente. No realiza una redirección.
SignOut
Dado un usuario autenticado, invocar SignOut elimina el
ticket de autenticación estableciendo un SetCookie con
un valor vacío. De este modo, se eliminan las cookies
duraderas y las cookies por sesión.
Para poder utilizar la clase FormsAuthentication, deberíamos referenciar la
biblioteca System.Web.Security utilizando Imports o using.
Una página de inicio de sesión es simplemente una página ASP.NET con un
formulario HTML, un botón Submit y un procedimiento de evento Click para
el botón Submit.
El siguiente es un ejemplo de un formulario en una página de inicio de sesión:
<form id="Login" method="post" runat="server">
<P>Email: <asp:TextBox id="txtEmail" runat="server">
</asp:TextBox></P>
<P>Password<asp:TextBox id="txtPassword" TextMode="password"
runat="server">
</asp:TextBox></P>
<P><asp:Button id="cmdLogin" Text="Sign In Now"
OnClick="cmdLogin_Click"
runat="server">
</asp:Button></P>
<P><asp:Label id="lblInfo" runat="server">
</asp:Label></P>
</form>
En el procedimiento de evento Click del botón Submit, se valida la
información que se introduce en el formulario, y si ésta es válida, invocar
FormsAuthentication.RedirectFromLoginPage. El método
RedirectFromLoginPage emite la cookie y, a continuación, redirige al usuario
a la página solicitada originalmente.
32
Seguridad en aplicaciones Web con Microsoft ASP.NET
El siguiente código de ejemplo utiliza una función personalizada denominada
Login para validar el nombre de usuario y la contraseña, e invoca
RedirectFromLoginPage si el nombre de usuario y la contraseña son válidos:
Visual Basic .NET
Private Sub cmdLogin_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles cmdLogin.Click
Dim strCustomerId As String
'Validate User Credenciales
strCustomerId = Login(txtEmail.Text, txtPassword.Text)
If (strCustomerId <> "") Then
FormsAuthentication.RedirectFromLoginPage _
(strCustomerId, False)
Else
lblInfo.Text = "Invalid Credenciales: Please try again"
End If
End Sub
C#
private void cmdLogin_Click(object sender, EventArgs e)
{
string strCustomerId;
//Validate User Credenciales
strCustomerId = Login(txtEmail.Text, txtPassword.Text);
if (strCustomerId != "")
{
FormsAuthentication.RedirectFromLoginPage
(strCustomerId, false);
}
else
{
lblInfo.Text = "Invalid Credenciales: Please try again";
}
}
Leer credenciales desde
cookies
Después de que un usuario haya sido autenticado, podemos obtener su nombre
de usuario programáticamente utilizando la propiedad User.Identity.Name.
Esta propiedad resulta útil para generar una aplicación que utilice el nombre del
usuario como una clave para guardar información en una tabla de una base de
datos o un recurso del directorio.
También podemos identificar dinámicamente el mecanismo de autenticación
(Forms en este caso) utilizando User.Identity.AuthenticationType y ver si el
usuario está autenticado utilizando User.Identity.IsAuthenticated.
Con la autenticación basada en formularios, User.Identity es un objeto de la
clase FormsIdentity.
Nota Cuando se utiliza la autenticación basada en formularios, la contraseña
que un usuario introduce en la página de inicio de sesión se envía a través de la
red en texto claro. Es importante utilizar SSL para encriptar estas contraseñas.
Seguridad en aplicaciones Web con Microsoft ASP.NET
33
Demostración: uso de la autenticación basada en formularios
„
Abrir IIS y configurar para autenticación
anónima
„
Abrir Web.config y configurarlo para
autenticación y autorización
„
Abrir la página de inicio de sesión y
mostrar el código
„
Ejecutar la aplicación Web ASP.NET
z
Los estudiantes pueden acceder a la
aplicación Web ASP.NET segura en el
equipo del instructor
*****************************
Introducción
En esta demostración, veremos cómo configurar IIS para utilizar la
autenticación basada en formularios con autenticación anónima; a continuación,
veremos cómo configurar la autenticación y autorización en el archivo
Web.config. Veremos cómo funciona la página de inicio de sesión, y algunas
demostraciones de acceso a páginas seguras y a páginas no seguras. Finalmente,
aprenderemos a conectar a una página segura en el equipo del instructor.
Los archivos para demostración se encuentran en el proyecto Pract14VB o
Mob16CS de la solución 2310Demos.
Ë Ejecutar la demostración
Configurar IIS para
acceso anónimo
1. Hacer clic con el botón derecho en Mi PC y clic en Administrar.
2. Ir a Servicios y aplicaciones, expandir Internet Information Services, y
hacer clic en Sitios Web.
3. Hacer clic con el botón derecho en Sitio Web predeterminado y hacer clic
en Propiedades.
4. Hacer clic en la ficha Seguridad de directorios y clic en Modificar para
abrir el cuadro de diálogo Métodos de autenticación de IIS.
5. Desactivar la casilla de verificación de Autenticación básica (la contraseña
se envía en texto claro).
Nota Verificar que las casillas de verificación Autenticación implícita para
servidores de dominios Windows y Autenticación integrada de Windows
están desactivadas y que la casilla de verificación Acceso anónimo está
seleccionada.
34
Seguridad en aplicaciones Web con Microsoft ASP.NET
6. Hacer clic en Aceptar.
7. Hacer clic en Aceptar.
8. Hacer clic en Aceptar en el cuadro de diálogo Herencia omitida.
Configurar la seguridad
en el archivo Web.config
9. Abrir el archivo Web.config.
Utilizando los comentarios <!-- y -->, comentar la sección <system.web>
que contiene el modo de autenticación “Windows” y quitar los comentarios
de la sección <system.web> que contiene el modo de autenticación
“Forms”.
Explicar la nueva sección <authentication> que redirige todas las solicitudes
no autenticadas a la página LoginDemo.aspx.
Las mismas dos páginas (SecurePageDemo1.aspx y
SecurePageDemo2.aspx) se han configurado como páginas seguras.
10. Guardar los cambios.
Mostrar la página
LoginDemo.aspx
11. Abrir la página de código subyacente LoginDemo.aspx.vb o
LoginDemo.asox.cs.
Mostrar lo siguiente:
• El procedimiento de evento cmdLogin_Click que valida el nombre de
usuario y contraseña invocando la función Login, e invocar
RedirectFromLoginPage, si las credenciales son válidas.
• El primer parámetro de RedirectFromLoginPage es la identidad de
usuario que deseamos guardar se encuentra en la cookie. A
continuación, durante la sesión, esta identidad puede ser leída desde
cualquier página utilizando User.Identity.Name.
• RedirectFromLoginPage crea una cookie de autenticación temporal
(no persistente) (segundo parámetro establecido a false).
• Para utilizar RedirectFromLoginPage, debemos importar
System.Web.Security.
• El código de la función Login. Mostrar cómo la función Login invoca el
procedimiento almacenado EmployeeLogin para verificar las
credenciales introducidas consultándolas a la base de datos.
• Abrir Microsoft SQL Server™ Enterprise Manager, y, a continuación,
abrir la base de datos de Coho y mostrar el registro en la tabla Logins.
Finalmente, mostrar el procedimiento almacenado EmployeeLogin.
Importante Cuando veamos la base de datos Coho, observar que en la
autenticación basada en formularios, a diferencia de la autenticación basada
en Windows, depende de nosotros como desarrolladores el diseñar y
gestionar una base de datos de usuarios.
12. Generar el proyecto.
13. Abrir un nuevo navegador e ir a
Visual Basic .NET
http://localhost/Pract14VB/NonSecurePageDemo.aspx
C#
http://localhost/Pract14CS/NonSecurePageDemo.aspx
14. Ir a:
Visual Basic .NET
http://localhost/Pract14VB/SecurePageDemo1.aspx
C#
http://localhost/Pract14CS/SecurePageDemo1.aspx
Seguridad en aplicaciones Web con Microsoft ASP.NET
35
Mostrar que somos redirigidos automáticamente a la página
LoginDemo.aspx.
Mostrar que la URL, que contiene la página SecurePageDemo1.aspx, es la
página necesaria para redirigir al usuario a la página solicitada, si las
credenciales son correctas.
15. Escribir las credenciales [email protected] en Nombre de
usuario (Email), introducir una contraseña no válida y hacer clic en Sign In
Now.
El inicio de sesión fallará porque la contraseña no es válida.
16. Introducir las credenciales [email protected] en Nombre de
usuario (Email), someone en Contraseña, y hacer clic de nuevo en Sign
In Now. Seremos redirigidos a la página SecurePageDemo1.aspx.
17. La página SecurePageDemo1.aspx debería mostrar el nombre de usuario 1
(que es la identidad que está almacenada en la cookie en LoginDemo.aspx)
y el tipo de autenticación Forms.
Ahora podemos acceder a cualquier página segura, siempre que no cerremos
el navegador. Si cerramos el navegador, deberemos pasar de nuevo por el
proceso de autenticación debido a que la cookie es temporal (no
persistente).
18. Ir a:
Visual Basic .NET
http://localhost/Pract14VB/SecurePageDemo2.aspx
C#
http://localhost/Pract14CS/SecurePageDemo2.aspx
Mostrar que esta vez no se nos pide que introduzcamos nuestras
credenciales.
Los estudiantes
acceden al equipo del
instructor
Visual Basic .NET
C#
19. Indicar a los estudiantes que vayan a:
http://Nombreequipoinstructor/Pract14VB/SecurePageDemo1.aspx
http://Nombreequipoinstructor/Pract14CS/SecurePageDemo1.aspx
Escribir las siguientes credenciales, nombre: [email protected], y
contraseña: someone, cuando se soliciten.
Después de introducir las credenciales, los estudiantes deberían poder ver
SecurePageDemo1.aspx y SecurePageDemo2.aspx.
36
Seguridad en aplicaciones Web con Microsoft ASP.NET
Lección: descripción de la autenticación mediante
Microsoft Passport
„
Cómo funciona Microsoft Passport
„
Otros recursos de Microsoft Passport
*****************************
Introducción
La ventaja de Microsoft Passport es que los usuarios pueden presentar las
mismas credenciales en cualquier sitio Web participante, y únicamente deben
iniciar sesión una vez. Cuando los usuarios cierran su navegador o indican que
desean finalizar la sesión, la cookie se destruye y el usuario debe iniciar sesión
de nuevo para acceder a los recursos de alguno de los sitios participantes.
En esta lección, estudiaremos el conjunto de eventos que tiene lugar durante la
autenticación mediante Microsoft Passport. También estudiaremos cómo
implementar la autenticación con Microsoft Passport.
Objetivos de la lección
En esta lección, aprenderemos a:
„
Describir el conjunto de eventos que tiene lugar durante la autenticación con
Microsoft Passport.
„
Identificar otros recursos de Microsoft Passport.
Seguridad en aplicaciones Web con Microsoft ASP.NET
37
Cómo funciona Microsoft Passport
11 El cliente solicita una página al host
sitioweb.msft
22 El sitio redirige al cliente a Passport.com
33 El cliente es redirigido e inicia sesión en
Passport.com
44 Passport devuelve una cookie
con la información del
ticket
55 El cliente accede al host, esta
vez con la información
del ticket
66 El host devuelve un formulario
Web Form y posiblemente
una nueva cookie que
puede leer y escribir
Cliente
Passport.com
*****************************
Introducción
Durante la autenticación de usuarios utilizando Microsoft Passport, se producen
una serie de eventos.
Serie de eventos que
tienen lugar en la
autenticación de
Microsoft Passport
1. Cuando el cliente solicita una página segura del sitio Web (host), la solicitud
se envía primero a IIS. IIS autentica al usuario como anónimo y pasa la
solicitud a ASP.NET.
2. ASP.NET comprueba si existe una cookie especial en el cliente. Si la cookie
no está presente, la solicitud es rechazada y el cliente es redirigido al sitio
Web Passport.com para ser autenticado.
3. Passport genera un formulario de inicio de sesión que envía al cliente. El
usuario proporciona la información adecuada de inicio de sesión y la envía
al sitio de Passport.
4. Si las credenciales suministradas coinciden con las de la base de datos de
Passport, éste autentica al usuario y devuelve al cliente una cookie con un
ticket de autenticación.
5. El cliente envía la solicitud inicial, esta vez con la información del ticket de
autenticación, a la aplicación Web ASP.NET.
6. De nuevo, IIS autentica al usuario como anónimo. ASP.NET autentica al
usuario basándose en el ticket de autenticación, y devuelve al cliente el
formulario Web Form seguro.
Una vez el usuario ha sido autenticado con Passport, es posible que se le
conceda acceso a otros sitios Web que también utilicen la autenticación
mediante Microsoft Passport.
38
Seguridad en aplicaciones Web con Microsoft ASP.NET
Otros recursos de Microsoft Passport
„
Sitios Web
z
http://www.passport.com
z
http://msdn.microsoft.com
*****************************
Introducción
Es posible que, cuando estudiemos de Microsoft Passport, necesitemos acceder
a recursos para encontrar respuestas a preguntas específicas. Los dos sitios Web
siguientes pretenden ofrecer un punto de partida para encontrar más
información sobre Microsoft Passport.
Sitios Web
Podemos encontrar información sobre Microsoft Passport en los siguientes
sitios:
„
El enlace de información para desarrolladores en http://www.passport.com
„
Los recursos de http://msdn.microsoft.com

Documentos relacionados

Tema 8 Gestión de usuarios

Tema 8 Gestión de usuarios más comunes; identificarse utilizando un nombre de usuario y una contraseña. El control incluye los cuadros de texto usuario y contraseña y una casilla de verificación para los usuarios que deseen ...

Más detalles