Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Cod. 1728.61 PLATAFORMA .NET Y SERVICIOS WEB ASP.NET Juan Ramón Pérez Pérez jrpp@pinon.ccu.uniovi.es Dpto. de Informática OOTLab - Laboratorio de Tecnologías de Orientación a Objetos http://www.ootlab.uniovi.es Qué veremos en esta conferencia Desarrollo de aplicaciones web. Necesidad de páginas web dinámicas ASP. Qué aporta ASP.NET. Desarrollo y ejecución de una aplicación ASP.NET. • Configuración descentralizada. • Administración de sesiones y seguridad. • Referencias para seguir trabajando. • • • • Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab La web se queda pequeña (I) • La Web se pensó para páginas estáticas. Explorador del cliente 1. Usuario Página 2 realiza petición 4. Explorador muestra página Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Servidor 2. Explorador envía petición al servidor Página 1 Página 2 Página N 3. Servidor envía página solicitada al cliente ASP.NET Juan Ramón Pérez Pérez - OOTLab La web se queda pequeña (II) • El servidor debe generar páginas Servidor dinámicas. Explorador del cliente 1. Usuario Página realiza generada petición 4. Explorador muestra página Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO 2. Explorador envía petición al servidor BD Lógica Generación Página 4. Servidor envía página solicitada al 3. Lógica servidor cliente genera página ASP.NET Juan Ramón Pérez Pérez - OOTLab La web se queda pequeña (y III) • Qué necesitamos para que esto funcione: – Asociar una lógica de programación a la generación de páginas. – Proporcionar una forma fácil de leer la entrada del usuario (formulario) para pasársela a la lógica del programa. – Proporcionar una forma sencilla de generar la salida (página en HTML). – Infraestructura de seguridad. – Mecanismo de administración de sesiones. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Páginas ASP • Entorno de Microsoft para general páginas web dinámicas. • Páginas combinan HTML con instrucciones en lenguaje script que se interpreta en el servidor. • Internet Information Server (IIS). Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Ejemplo página ASP • Servidor copia literalmente la parte HTML e interpreta los elementos <% %> <html> <head> <title>Fecha y hora actuales</title> </head> <body> <h1>Pagina con la fecha y hora actuales</h1> Son las <% =time %> del día <% =date %> </body> </html> Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Algunos inconvenientes de ASP • Microsoft no proporcionaba ningún entorno que permitiera trabajar de forma sencilla con ASP. • Aparecía en la misma página el código HTML junto con el código de script. • Normalmente se usaban lenguajes de script no tipados. • El tratamiento de entrada y salida era bastante tedioso. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab ASP.NET desarrollo (I) • Microsoft abstrae el modelo de programación de ASP en la web, para que se parezca al desarrollo de una aplicación de escritorio. • Así como en Delphi o VB disponemos de fichas, en ASP vamos a disponer de formularios web (Web Forms). • Separa HTML de la lógica del programa, Código en segundo plano. Podemos utilizar cualquier lenguaje de la plataforma. • Disponemos de un entorno de desarrollo. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab ASP.NET desarrollo (y II) • Controles del servidor (Web Forms Server Controls). Componentes que se encargan de la entrada y salida y que se incorporan sobre el Formulario web. • Soporte para implementar la seguridad del sitio web. • Soporte para la administración de sesiones. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab ASP.NET Ejecución • ASP.NET es parte del entorno .NET (.NET framework): – La ejecución utiliza el soporte del CLR (Common Language Runtime). – El Código en Segundo plano se compila al código intermedio de MS (MS-IL). – ASP.NET utiliza las ventajas de la plataforma multilenguaje, con la Biblioteca de clases común (BCL) y el sistema de tipos comunes (CTS). Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab ASP.NET Instalación • Al pertenecer al entorno .NET – Instalación, los componentes no tienen que registrarse. – Configuración, mediante ficheros XML descentralizados. – Actualización, permite la actualización “en caliente” sin parar el servidor web. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Desarrollo de una aplicación web con ASP.NET • Utilizar el Visual Studio .NET. • Análogo a una aplicación en Delphi o VB: – Formularios web para las distintas páginas. – Se arrastran los distintos controles al formulario. – Se establecen las propiedades de los controles. – El código se añade como controladores de eventos de los controles. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Ficheros básicos de una página ASP.NET • Ficheros .aspx. Formulario web con sus controles. Contiene el código de la página ASP.NET sobre la que se hace la petición. • Ficheros .aspx.vb. Contiene el código subyacente de controladores de eventos de los controles web. WebForm1.aspx Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO WebForm1.aspx.vb ASP.NET Juan Ramón Pérez Pérez - OOTLab Controles de Web • Un control de Web en el contexto de ASP.NET, es cualquier tipo de lógica de programación relacionada con la interfaz de usuario que es capaz de: – Exponer un modelo de programación estándar a un entorno de desarrollo. – Reflejar su aspecto en HTML para su presentación en un explorador estándar. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Controles de Web frente a controles HTML • Controles de HTML: – no son muy numerosos ni tienen mucha funcionalidad. – Es difícil escribir código que interactúe con los controles. • Controles de web: – Permiten utilizar un modelo de programación dirigido a eventos. – Se integran mejor en entornos de desarrollo – Abstraen diferencias entre exploradores diferentes. – Se adaptan al explorador que utilice el usuario en tiempo de ejecución. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Ejecución de una página ASP.NET Sistema de ejecución 1. Petición página ASPX desde el cliente IIS 7. HTML Resultado 2. Petición al Sistema de ejecución Página ASPX Objeto de Código subyacente (MS-IL) Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO 3. Compila página ASPX la primera vez. 4. Carga clase compilada y crea objeto del código subyacente. 5. El objeto de código subyacente crea controles y estos generan su representación en HTML. 6. Devolver HTML al IIS. ASP.NET Juan Ramón Pérez Pérez - OOTLab Datos devueltos y estado de vista • Datos devueltos (postback data). Los controles de entrada recuerdan el estado que tenían cuando el usuario los envío al servidor. • Estado de vista (view state). Los controles de presentación recuerdan el estado en que los dejó el programa en la vuelta anterior. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Configuración de la aplicación web • ASP.NET como el resto de la plataforma .NET cambia el enfoque con los anteriores planteamientos de MS. • Antes se guardaba la información de configuración en el registro del sistema. • Ahora se adopta un enfoque descentralizado: cada aplicación almacena la información de configuración en un fichero XML llamado web.config. web.config Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Jerarquía de ficheros web.config • Puede haber ficheros web.config en diferentes subdirectorios. • Cada uno gobierna la operación de las páginas dentro de su subdirectorio y los directorios inferiores a menos que se anule. • El fichero maestro que especifica los valores predeterminados del sistema se denomina machine.config. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Sesiones en ASP.NET. El problema. • Cuál es el problema: – HTTP es un protocolo sin estado, de peticiónrespuesta. – El sistema trata las peticiones de forma aislada. – En las aplicaciones web actuales este modelo es insuficiente: no es posible resolver toda la transacción en un paso. – Además debemos tener una sesión independiente para cada usuario. • Necesitamos un mecanismo que nos ayude a administrar sesiones. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Administración de sesiones en ASP.NET • Tecnologías para simular sesiones en una aplicación web: – Cookies – Utilizar la URL • ASP.NET hace que esto sea transparente al programador. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Administración de sesiones en ASP.NET. Objeto Session. Objeto Session. Permite almacenar valores de tipo cadena identificadas por un nombre. • Estos valores se pueden leer de forma sencilla. • Cada una de las páginas contiene una propiedad denominada Session que permite acceder al objeto Session del usuario actual. • • WebForm1.aspx.vb Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO WebForm2.aspx.vb ASP.NET Juan Ramón Pérez Pérez - OOTLab Administración de sesiones en ASP.NET. Objeto Session. 2. El servidor recibe petición, crea el objeto Session y envía cookie al cliente. Explorador del cliente 1. El cliente solicita la primera página 3. El programa almacena datos en el objeto Session. Cookie 4. El cliente solicita otra página (pasa la cookie). 7. El cliente recibe la nueva página en función de la primera. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Servidor Datos usuario 1 Datos usuario n 5. El servidor obtiene el objeto Session identificado por la cookie. 6. El programador recupera datos del Objeto Session ASP.NET Juan Ramón Pérez Pérez - OOTLab Seguridad ASP.NET • Seguridad vital para cualquier aplicación y más para aplicaciones distribuidas. • En una aplicación web hay zonas públicas y privadas. • ASP.NET proporciona mecanismos para: – Autentificar el usuario – Comprobar la autorización Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Autenticación • Quién es el usuario y asegurar que realmente es quien dice ser. • Usuario no identificado acceso a la parte pública. • Modos de autenticación: – Autenticación de Windows. – Autenticación basada en formularios. – Autenticación de Passport. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Autenticación de Windows • Delega el proceso de autenticación en el IIS. • El IIS muestra un cuadro de diálogo en el que el usuario introduce su identificación y contraseña de Windows. • Adecuada para una intranet de Windows, cuando sabemos a priori el dominio de usuario que tiene la aplicación. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Autenticación basada en formularios • La aplicación web proporciona al usuario una forma de registrarse. • Para entrar en la parte privada del sitio se pide al usuario que introduzca usuario y contraseña. • Permite la entrada si coinciden con los registrados. • Se identifica al usuario autenticado mediante una cookie. • Este tipo de autenticación se configura mediante una entrada en el fichero web.config. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Autenticación de Passport • Problema de la autenticación a través de formularios: cada sitio web tiene su usuario y contraseña y hay que recordarlas todas. • Con .net Passport el usuario se registra en Passport y cuando las aplicaciones web necesitan autenticar a un usuario utilizan passport como intermediario. • En realidad el usuario sólo tiene que recordar su usuario y contraseña en Passport. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Autenticación de Passport (y II) • Se puede almacenar información asociada a un usuario: dirección, nº tarjeta. • Así se pueden automatizar la acción de rellenar formularios de entrega. • Cómo establecer este tipo de autenticación: – – – – Firmar la licencia con Microsoft para utilizar Passport. Descargar y utilizar el SDK de Passport. Establecer el fichero web.config. Escribir el código correspondiente. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Autorización • Según el usuario que sea decidir si se debe permitir que vea la página que solicita. • En ASP.NET se puede limitar de forma declarativa el acceso a página en el fichero web.config. • Sección: <authorization>. • Elementos: <allow> y <deny>. • Se puede especificar por usuario o por grupo. • ? usuarios anónimos. * todos los usuarios. web.config Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Implementación real de la Autorización • Normalmente se realizan autorizaciones a nivel de grupo. • Cuando se realiza autenticación de Windows los grupos coinciden con los del S.O. • Cuando se realiza otro tipo de autenticación hay que escribir código. • Se escribiría una clase con la interfaz IPrincipal, que incluye el método IsInRole. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab El problema de la identidad • Las páginas de un sitio web en las que controlamos el acceso representan un nivel intermedio en un sistema de tres niveles. • El tercer nivel es el nivel de datos que normalmente posee sus propios mecanismos se seguridad. • Para poder realizar las operaciones dependemos de lo que el nivel de datos considere que es la identidad del usuario que realiza la petición de servicios. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Identidad en ASP.NET • Modelo de usuario de confianza. Se asigna una identidad para acceder al nivel de datos que permita realizar determinadas operaciones. • Elemento <identity> del fichero web.config. • Modelo delegación de personalidad. El código de la página adopta la identidad del usuario autenticado. • Es necesario hacer dos autenticaciones. • Elemento <impersonation> de web.config. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Administración de procesos • Una de las características que deben de tener las aplicaciones web es que funcionen 24 horas al día / 365 días al año. • Las aplicaciones deben de ser robustas. • ASP.NET permite reciclado de procesos. ASP.NET apaga el proceso e inicia uno nuevo. • Elemento <processModel> del fichero machine.config. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Temas relacionados • • • • ADO.NET. XML. ADO.NET. Servicios Web / SOAP. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Bibliografía Así es Microsoft .NET. David S. Platt. McGraw-Hill Profesional. Professional ASP.NET 1.0. Richard Anderson et al. Wrox. Building web solutions with ASP.NET and ADO.NET. Dino Esposito. Microsoft Press. Programming ASP.NET. Jesse Liberty and Dan Hurwitz. O’Really. Beginning ASP.NET Using VB.NET. Chris Ullman, et al. Wrox. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab Referencias en la web Web oficial de ASP.NET. http://www.asp.net/ ASP.NET. Xavier Pey. Ethek & Friends. http://www.ethek.com/contenido.asp?IDContenido=97 Tutorial ASP.NET. http://www.w3schools.com/aspnet/default.asp Passport http://www.passport.com Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO ASP.NET Juan Ramón Pérez Pérez - OOTLab