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