presentación 2: asp - ivan...
TRANSCRIPT
Iván Bernal, [email protected]
httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito – Ecuador
Copyright @2004, I. Bernal
MICROSOFT .NETMICROSOFT .NET
Presentación 2: ASP.NETJueves, 21 de Octubre de 2004
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
22
Agenda
• Visión general de ASP.NET• Paginas Web estáticas y dinámicas.• Problemas y soluciones con la
generación de páginas Webdinámicas.
• Ejemplo de ASP.NET• Configuración de Aplicaciones Web.• Manejo de estado de sesiones.• Seguridad en ASP.NET
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
33
Bibliografía (1)• D. Platt, “Introducing Microsoft .NET”, 3rd
Edition, Microsoft Press, 2003. ISBN:0735619182.
• Nota:– Las transparencias de esta presentación fue elaborado
tomando como referencia principal el libro de D. Platt; se utilizan ejemplos y figuras del libro de Platt.
– Algunos capítulos, y los ejemplos utilizando C# y VB.NETestán disponibles gratuitamente en:• http://www.introducingmicrosoft.net
– El presente material (transparencias) y algunas cosas adicionales, que de seguro encontrarán interesantes, pueden obtenerlas en:• http://wwwfie.epn.edu.ec/ibernal
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
44
Bibliografía (2)• J. Webb, “Developing Web Applications with
Microsoft Visual Basic.NET and Visual C#.NET”, Microsoft Press, 2003. ISBN:0735619271.
• J. Archer, A. Whitechapel, “Inside C#”, Microsoft Press, 2002. ISBN:0735616485.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
55
Objetivo
• Presentar una visión global de ASP.NET
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
66
ASP.NET (1): Introducción• Hace más fácil la tarea de escribir código para
generar dinámicamente páginas Web (en lugar de HTML estático).
•• Para desarrollar las denominadas Para desarrollar las denominadas ““Active Web Active Web ApplicationsApplications”” (Web Form Applications)(Web Form Applications)• Presentan interfaz de usuario como páginas web.
• Siguiente versión de ASP (Active Server Pages). Opción a CGIs, ISAPIs, JSP.
• Se ejecuta en IIS (Internet Information Server). • Código se ejecuta en el lado del servidor.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
77
ASP.NET (2): Introducción• Introduce nueva forma de escribir el código en el lado del
servidor (code behind) y asociarlo a peticiones de páginas web.
• Introduce Web Forms que es un modelo de programación basada en eventos para interactuar con controles, haciendo que la programación de una página Web sea similar a desarrollar una forma en Visual Basic.
• Introduce mejoras en el rendimiento (performance) respecto a ASP.
• Proporciona soporte adecuado para seguridad y para manejar el estado de una sesión.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
88
ASP.NET (3): Introducción
• Páginas estáticas
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
99
ASP.NET (4): Introducción• Si deseo ver el estado de mis cuentas
bancarias (usando el Internet)?– No puedo con un esquema estático.– El banco no puede crear una nueva página todos los
días, para toda vista posible de todas las cuentas: hay demasiadas.
• Solución:– El usuario provee cierta información (como el número de
cuenta), y el sistema (en el lado del servidor) debe generargenerar bajo demanda una página HTML que presente el estado de cuenta del usuario.
– Los datos de la página son generados dinámicamente, no son estáticos ni públicos.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1010
ASP.NET (5): Introducción
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1111
Páginas dinámicas (1): Problemas
• El servidor Web debe asociar algún programa con la solicitud de una página.– Cuando un usuario hace una solicitud, el servidor
no va simplemente a buscar la página en disco duro.• La página no existe
– El servidor debe ejecutar la lógica del programa que genera la página.
– Para el banco: se debe acceder a una base de datos para encontrar la información de balances y transacciones del usuario.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1212
Páginas dinámicas (2): Problemas• El servidor Web necesita alguna forma de
obtener datos del usuario y pasarlos al programa que genera las páginas.– En el browser (navegador), el usuario llena datos en una
forma HTML, que contiene controles para el ingreso de datos.
• Usuario ingresa el número de cuenta y el periodo del cual desea revisar sus transacciones.
– Identificar las partes necesarias del flujo HTML que es enviado al servidor, es un trabajo tedioso y repetitivo.
• Seria bueno tener algo prefabricado que realice estas tareas.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1313
Páginas dinámicas (3): Problemas• El servidor Web necesita alguna manera de
obtener los resultados del programa que genera la página Web y enviarlos de vuelta al usuario.– Sería bueno tener una forma prefabricada para ensamblar la
página HTML que será enviada al usuario.• El servidor Web requiere servicios de
seguridad para evitar que usuarios no autorizados vean o hagan cosas que no deberían.– Al menos parte de los datos que fluyen en ambas direcciones
deberían ser privados.– Seria bueno tener algo prefabricado, ampliamente probado y
que de confianza a los usuarios para que lo usen.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1414
Páginas dinámicas (4): Problemas
• El servidor Web requiere mecanismos para manejar “Sesiones de usuario”– Una sesión incluye la interacción del usuario
posiblemente con varias páginas, durante un periodo de tiempo razonable.
– Se debe recordar información ingresada en minutos previos.
– Ejemplo: un “shopping cart” en donde se debe recordar los elementos seleccionados hasta el momento final en el que se realiza el pago.
– Esto no se puede implementar a nivel de página pues se visitan varias. Se requiere escribir código.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1515
Soluciones (1): ASP• ASP (Active Server Pages) fue presentada en
1997 como parte de IIS (Internet Information Server).
• Los programadores escribían código para generar páginas dinámicamente, mezclando HTML estático y código con scripts.
• Cuando un cliente solicita una página ASP, IIS ubica la página y activa el procesador ASP.
• El procesador lee la página y copia los elementos HTML a una página de salida.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1616
Soluciones (2): ASP• Se “interpretan” los elementos de script
que se encuentran entre <% %>– Estos contenedores serán reemplazados con
algún resultado obtenido ejecutando algún código.
• Ejemplo:– El atributo styles presenta el texto en azul.– En este caso, el resultado del código para
rellenar los <% %> son cadenas de texto.– El procesador ASP copia los resultados a los
lugares indicados en la página de salida y la página generada es enviada al cliente.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1717
Soluciones (3): ASP
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1818
Soluciones (4): ASP.NET
• ASP.NET se parece mucho a ASP.– Código existente puede portarse con
relativa facilidad.– Internamente tienen grandes diferencias.
• ASP.NET toma ventaja de .NET
• ASP.NET ofrece mejoras sustanciales en cuanto a:– La facilidad de escribir el código.– Mejoras en el rendimiento.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
1919
Soluciones (5): ASP.NET
• La facilidad de escribir el código.– El mezclar HTML y código script en ASP parece
lógico, pero provoca complicaciones en aplicaciones complejas, sobre todo en la programación y mantenimiento.
– En ASP.NET se separa el HTML de salida de la lógica del programa: codecode--behindbehind.
– El código se escribe en un archivo separado y la página ASP (parte de GUI) hace referencia a este archivo.
• La página ASP se encarga de los elementos HTML de salida.
• Esto permite mejoras incluso en los ambientes de desarrollo como Visual Studio, incluyendo la depuración.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2020
Soluciones (6): ASP.NET•• Web FormsWeb Forms
– Arquitectura que permite manejar la programación de páginas Web como la programación de una forma en aplicaciones de escritorio usando Visual Basic.
• Se añaden controles y se escriben funciones para la manipulación de eventos.
•• Controles WebControles Web– No son controles ActiveX, o controles de Windows, ni
elementos de HTML; son un nuevo tipo llamados “ASP.NET Server Controls”, o “Server Controls” y se encargan de operaciones de entrada/salida.
– Abstraen los detalles de manejar HTML: • No hay que recordar la sintaxis para cambiar el color de
una línea de texto.• Se utiliza un control “label”, y se escribe código para
cambiar las propiedades del control
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2121
Soluciones (7): ASP.NET
• Seguridad– Si se tiene un ambiente solo de Windows,
se puede autenticar un usuario automáticamente usando la seguridad intrínseca (propia) de Windows.
– Para otros casos hay soporte prefabricado para implementar nuestro propio esquema de seguridad.
– Soporte prefabricado para Passport de Microsoft.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2222
Soluciones (8): ASP.NET
• Manejo de estado de sesiones– Se puede extender al uso de varias
máquinas (Web Farms). – Se puede realizar un reinicio del proceso que
ejecuta ASP.NET y conservar la información.• Se puede guardar información de estado
en otra máquina servidor o en un Microsoft SQL Server.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2323
Soluciones (9): ASP.NET
• Mejor performance– ASP se ejecuta un tanto lento porque el código
script se interpreta en tiempo de ejecución.– ASP.NET automáticamente compila las páginas
cuando:• Se instala la página, o• Cuando se solicita por primera vez.
• Facilidad de actualización– Ya que se usa compilación JIT, no es necesario
detener el servidor para remplazar un componente o una página.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2424
Soluciones (10): ASP.NET
• Evitar bloqueo de recursos automáticamente.– Se puede configurar ASP.NET para que luego
de cierto tiempo se reinicien los procesos servidor (detener un proceso existente e iniciar uno nuevo).
– Esto evita los denominados “memory leaks”(memoria no accesible por errores) y su acumulación, causados por alguna aplicación.
• Administración utilizando archivos XML.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2525
ASP.NET (1): Ejemplo
• Presenta la hora del servidor.
• Escoger:– Si usar en
la hora segundos
– Color del texto de la hora.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2626
ASP.NET (2): Ejemplo• Usando Visual Studio.• Se requiere IIS instalado
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2727
ASP.NET (3): Ejemplo• Entre los archivos que se crean está la página
ASP.NET con extensión: *.aspx• A esta forma se arrastran controles Web, como
se indica en la figura.– Labels, drop-down list, check box, button.– Se asignan propiedades, como en Visual Basic.
• Ejemplo: texto de los labels, color de controles ,etc.• Propiedad AutoPostBackAutoPostBack de controles.
– Automáticamente se reenvía la forma al servidor cuando ocurre un evento determinado en el control.
– Ejemplo: la lista tiene esta propiedad en True, cuando se selecciona un color, la forma se reenvía al servidor, se cambia el color de la hora y se envía de vuelta el resultado al cliente.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2828
ASP.NET (4): Ejemplo
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
2929
ASP.NET (5): Ejemplo• Usando Web Forms evitamos manejar código HTML y
script. Visual Studio lo genera para nosotros
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3030
ASP.NET (6): Ejemplo• Visual Studio genera también una clase que
representa el code-behind de la página ASP.NET• El código en respuesta a los eventos (handlers)
se añade de forma similar a lo que se hace en Visual Basic.– Seleccionar control, presentar ventana de propiedades y
escoger un evento de la lista de eventos.• Al presiona el botón “Obtener la hora”, se pone en un
label la hora, dependiendo de si el check box está o no seleccionado.
• Al realizar una selección en la lista, se procesa el evento cambiando el color del texto en un label.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3131
ASP.NET (7): Ejemplo
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3232
ASP.NET (8): Ejemplo• Al hacer una selección en la lista o presionar el
botón se envía la forma al servidor (postedback).– Esto no ocurre si cambio el estado del check
box.• ASP.NET procesa la página y determina cuál
control generó el evento y cuál de sus eventos, e invoca el manejador de eventos correspondiente.
• Con esto se regenera la página con los cambios que se hayan realizado en el manejador.
• El resultado se envía al cliente.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3333
ASP.NET (9): Ejemplo• Se enfatiza que los controles corren en el
lado del servidor, y que los controles proveen (generan) código HTML que representan su estado actual.– Este código HTML se incluye en la página
generada.
• En la siguiente figura se presenta parte de la página HTML que se recibe en el cliente para ser presentado en el browser.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3434
ASP.NET (10): Ejemplo
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3535
ASP.NET (11): Ejemplo
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3636
ASP.NET (1): Controles
• Una Web Form puede contener:– Controles Web: Que responden a eventos del usuario.
• TextBox, Label, DataGrid, DropDownList, etc.– Controles HTML: los elementos visuales estándar
provistos por HTML.• Se usan cuando las características mas completas de
los controles Web no se requieren.• Table, Image, Submit Button, etc.
– Controles de datos (.NET): para conectarse, ejecutar comandos en una base de datos, traer datos.
• SqlConnection,SqlCommand, DataSet, etc.– Componentes del sistema (.NET): para acceso a eventos
que ocurren a nivel del sistema operativo en el servidor.• FileSystemWatcher, EventLog, MessageQueue.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3737
ASP.NET (2): Controles• Controles de datos y Componentes del
sistema son visibles solo en tiempo de diseño, para que el programador visualmente defina valores de propiedades y maneje los eventos.
• Los nuevos controles para Web Formsson mas fáciles de programar y existen en mayor número que los HTML.– La comunicación entre los controles HTML y su
run-time environment es limitado.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3838
ASP.NET (3): Controles• Clasificación de los controles Web
– Controles de entrada de datos (input)• Text box, check box, list box, etc.
– Controles de presentación (display)• Label, data list, etc.
• Controles de entrada– Recuerdan automautomááticamente ticamente su estado, del momento en
el que iniciaron el viaje de ida y vuelta hacia el servidor (postback data).
– En el ejemplo: si selecciono el color del texto, el check boxmantiene su estado (seleccionado o no).
– Esta información va en un campo dedicado del encabezado HTTP (header HTTP).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
3939
ASP.NET (4): Controles• Controles de display
– Recuerdan su estado, en base a un mecanismo llamado view state.• Se incluye automáticamente, en cada página, un
input control oculto: __VIEWSTATE.• Los controles de display serializan su contenido en
__VIEWSTATE al destruirse la página; los controles retoman su estado al reconstruir la página.
– Si el programador no desea este comportamiento, lo puede deshabilitar cambiando la propiedad de cada control: MaintainStateMaintainState.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4040
ASP.NET (5): Controles• Los controles Web pueden detectar las
capacidades del browser que se está utilizando y pueden producir código diferente, para utilizar dichas capacidades.– El control “range validator”; por ejemplo, asociado a un text
box.– Chequea si el browser soporta DHTML, si es el caso,
genera código script para que se ejecute en el cliente.– El script realizada validación en el lado del cliente
(browser), con lo que la forma viaja al servidor solo si se ingresaron datos adecuados.
• Esto no quiere decir que la validación no se hace también en el servidor.
• Se han evitado viajes innecesarios al servidor si hubo datos fuera de rango.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4141
ASP.NET (1): Configuración
• Configuración de Aplicaciones Web.– Cada aplicación almacena información para la
configuración de una aplicación en el archivo web.config (XML), presente en el directorio de la aplicación.
– Se pueden tener archivos web.config en varios subdirectorios de la aplicación.
• Cada web.config controla la operación de las páginas de su directorio, y subdirectorios, a menos que en un subdirectorio se tenga otro web.config .
• Lo indicado en un web.config de mas bajo nivel en la jerarquía de directorios, cambia las configuraciones echas en directorios superiores.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4242
ASP.NET (2): Configuración
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4343
ASP.NET (3): Configuración• El archivo maestro que gobierna todo el sistema
ASP.NET está en el archivo machine.config.C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4444
ASP.NET (4): Configuración• Cambios hechos en un archivo web.config en el
directorio raíz de una aplicación Web, sobrescribirán lo indicado en el archivo machine.config.
• No todas las secciones de un archivo web.config son reconfigurables en subdirectorios de menor nivel al de la aplicación.– Ejemplo: sección <sessionstate>.– Se deben examinar los detalles de cada sección
para saber lo que se puede reconfigurar en los subdirectorios.
• En ejecución, ASP.NET utiliza la información de los archivos web.config para calcular la configuración de un recurso.
• El programador puede definir sus propias secciones y escribir código para procesarlas.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4545
ASP.NET (5): Configuración
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4646
ASP.NET (1): Estado de sesión• Manejo del Estado de una sesión de una
Aplicación Web.– Con interacciones mas sofisticadas, lo que se hizo
en la página A, afecta el contenido de la página B.– Se desea mantener un registro de las acciones de
los usuarios en varias páginas, en realidad de múltiples usuarios simultáneamente.
– No se debe mezclar/confundir los datos de cada usuario con los de otro.
– A este proceso se le denomina: administración del estado de la sesión (managing session state).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4747
ASP.NET (2): Estado de sesión• Cada vez que un usuario accede a una página
*.aspx, se crea un objeto interno llamado: Session.
• Cada objeto Session no es sino una colección de objetos .NET (cualquier tipo) que viven en el servidor y están asociados a un usuario activo específico.
• El programador puede acceder a los datos de la sesión mediante un índice o una cadena que los identifique individualmente.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4848
ASP.NET (3): Estado de sesión• Para asociar la información con un usuario
se utiliza un ID único, el cual se incluye en un cookie y se envía al browser.
• Cada vez que el usuario hace un nuevo pedido, el cookie se agrega al URL de forma automática, sin necesidad de programación o intervención del usuario.
• Cuando la petición llega al server, utiliza el cookie para buscar la información de este usuario (session object).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
4949
ASP.NET (4): Estado de sesión
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5050
ASP.NET (5): Estado de sesión• La información de un usuario debe mantenerse
mientras este activo.• ASP.NET, de forma automática, borra el objeto
Session de un usuario, luego de un tiempo (configurable) que un usuario ha estado inactivo.
• Tiempo se determina en la sección <sessionState> del archivo web.config. – Valor predefino: 20 minutos
• El programador puede eliminar el objeto Sessionpor programa: – Session.Abandon( )
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5151
ASP.NET (6): Estado de sesión
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5252
ASP.NET (7): Estado de sesión• Los objetos Session son una opción para
mantener información de estado.– Si un objeto provoca la caída del proceso en que se está
ejecutando, todo objeto Session de los usuarios a los que el proceso estaba sirviendo se pierde.
• ASP.NET permite almacenar la información de estado en un proceso diferente (ejecutándose como servicio).– Si el proceso cae debido a un objeto mal comportado, se
retiene la información de estado de los usuarios.– Caída de performance a cambio de confiabilidad.– Habilitación en web.config, poner atributo mode=stateserver
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5353
ASP.NET (8): Estado de sesión• ASP.NET permite guardar información de
estado en otras máquinas (sumamente útil para Web Farms).– Cada petición de un cliente puede ser atendida por un
servidor diferente.– Cada aplicación configura en donde (en cual máquina) se
almacenará la información de estado.– En web.config, asignar un valor adecuado al atributo
stateConnectionString y poner mode=stateserver
• Se puede guardar información de estado en unSQL Server.– Habilitación en web.config, poner el atributo mode=sqlserver
y también usar sqlConnectionString.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5454
ASP.NET : Estado de Aplicación
• Manejo del Estado de una AplicaciAplicacióónn.– ASP.NET permite guardar información a nivel
de aplicación.– Información que cambia rara vez, y se aplica a
todos los usuarios de una aplicación.• No está asociada a un usuario en particular.
– Se tiene un objeto llamado ApplicationApplication..– Manejo y acceso es similar a lo que se hace
con el objeto SessionSession..
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5555
ASP.NET (1): Seguridad• Autenticación
– Probar la identidad de alguien.– Estar seguros de que alguien es en realidad quien dice
ser.– No basta enviar un login y un password (credenciales),
así se utilice encripción.
• Autorización– Una vez concluido el proceso de autenticación, se debe
decidir si el usuario está autorizado a ver la página que está solicitando.
– Se puede realizar administrativamente (web.config) o programáticamente.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5656
ASP.NET (2): Seguridad• Se debe decidir el mejor lugar para
realizar autenticación.– Balancear facilidad de uso VS. Seguridad.– Diferentes áreas de un aplicación requieren
diferentes niveles de seguridad.
• Un sitio Web de una empresa Financiera:– Requiere autenticación para visualizar estado
de cuentas.– Se puede hacer de forma anónima el acceso a
la información de marketing.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5757
ASP.NET (3): Seguridad• ASP.NET soporta tres formas de autenticación.
– Autenticación estándar de Windows, utilizada desde IIS.– Con formas o formularios.
• Todo pedido de una página al servidor, debe contener en su encabezado (header) un cookie, que el servidor emitióanteriormente.
• Intentos de acceso a recursos protegidos sin el envío del cookie, son redireccionados a una página de login para verificar las credenciales y emitir el cookie.
– Microsoft’s Passport.• Similar a la de formularios, pero información de
login/password y emisión del cookie a cargo de un servicio externo de Microsoft.
• Se autentica una vez y sirve para acceder a muchos lugares.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5858
ASP.NET (4): Seguridad
• Ninguna de las formas mencionadas proveen encripción de la información transmitida.– “Limitación” derivada de HTTP.– Si se desea encripción se debe usar SSL (Secure
Sockets Layer), u otro mecanismo de encripción.
• El sitio Web de una aerolínea transportaría la información de tarjetas de crédito con encripción, pero no lo haría para la búsqueda de vuelos.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
5959
ASP.NET (5): Seguridad• Autenticación basada en Windows.
– Delegar el proceso de autenticación a IIS.– IIS se configura para presentar una ventana de diálogo en el
browser del cliente para recolectar login/password.– Las credenciales deben coincidir con una cuenta de usuario
de Windows, en el dominio al cual pertenece la máquina que ejecuta IIS.
– Adecuada para ambientes intranets que usan solo Windows y en el cual se tiene absoluto control administrativo.
– No muy adecuado para ambientes como el Internet:• Se quiere interconexión con diferentes tipos de sistemas.• No se desea crear cuentas Windows para cada usuario.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6060
ASP.NET (6): Seguridad• Autenticación con Formularios (cookie).
– Se debe crear cuentas con login/password.• Puede ser en línea ( página de acceso anónimo).• Enviando solicitud escrita a institución.
– Al solicitar por primera vez una página se redirecciona al usuario a una página en la que proporcionarálogin/password.
– El servidor chequea esta información con la que tiene a disposición.
– El servidor genera y entrega un cookie al browser del usuario, que representa el éxito en el proceso de login.
– El cookie contiene de forma encriptada la identificación del usuario.
– El cookie será enviado por el browser automáticamente, para que el servidor sepa de que usuario autenticado viene el pedido (para no tener que ingresar login/pwd).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6161
ASP.NET (7): Seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6262
ASP.NET (8): Seguridad• Autenticación con Formularios (cookie).
– Al crear el cookie, el servidor especifica si el cliente puede guardarlo solo para una sesión o de forma indefinida.
– La opción de autenticación se especifica en el archivo web.config
– loginUrl es el nombre de la página que recolecta las credenciales del usuario.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6363
ASP.NET (9): Seguridad• Autenticación con Formularios (cookie).
– La sección de autorización indica a ASP.NET, que se niegue el acceso a cualquier usuario no autenticado.
– La tarea del programador se reduce a chequear si el password es el adecuado e invocar una función que redirecciona al usuario a la página originalmente solicitada.• Esta función de redirección genera un ticket
de admisión, que se inserta en el cookie, de forma encriptada.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6464
ASP.NET (10): Seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6565
ASP.NET (11): Seguridad
Autenticacióncon Passport.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6666
ASP.NET (12): Seguridad• Autorización
– En esta sección se pueden tener elementos:• allow : permitir acceso a usuarios o miembros de roles
(grupos de usuarios).• deny : negar acceso.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6767
ASP.NET (13): Seguridad• Autorización
– ASP.NET aplica las reglas en el orden en el que aparecen en web.config hasta que se tiene una decisión de aceptar o negar una petición.
– Si ASP.NET no puede tomar una decisión con el web.configactual, continua con el web.config del directorio padre, hasta llegar a machine.config
• machine.config por predefinición permite acceso a las peticiones.
– Para el ejemplo:• Si el usuario es “Simba”, o el usuario pertenece al rol de
“Doctors”, se garantiza el acceso y se termina el chequeo.• Caso contrario se niega el acceso a todos los demás usuarios
(*), con lo que el chequeo concluye y se niega el acceso.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6868
ASP.NET (14): Seguridad• Autorización
– * :denota “todos”– ? :denota todos los usuarios “anónimos”.
• Roles– Si se utiliza autenticación con Windows, ASP.NET
automáticamente reconoce como un role a cualquiera de los grupos definidos en Windows.
• No hay tarea de programación para creación de roles.
– Para autenticación con formas y passport, se debe definir los roles e informar a ASP.NET, mediante código.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
6969
ASP.NET (15): Seguridad• Autorización: Ejemplo
– Se definen usuarios y roles a los que pertenecen los usuarios.
• Roles: doctors, nurses– Dependiendo del rol se permite el acceso a ciertas
páginas.– Se crean Web Forms adicionales, ubicadas en
distintos directorios, y cada directorio con su propio archivo web.config
• DoctorsOnly• NursesOnly• DoctorsOrNurses• Public
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7070
ASP.NET (16): Seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7171
ASP.NET (17): Seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7272
ASP.NET (18): Seguridad
• Autorización: Ejemplo– En la forma de login, si el password es el adecuado:
• Se crea un ticket indicando versión, un nombre, fecha de emisión y expiración, si es persistente o no, y se indica datos del usuario (en este caso el nombre del rol del usuario, definido por nosotros).
– Este último punto es el que genera la necesidad de crear el ticket y cookie manualmente.
• Se encripta el ticket.• Se coloca el ticket en un cookie.• Se agrega el cookie a la respuesta a enviarse al
cliente (Response). • Se redirecciona al usuario a la página solicitada
originalmente.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7373
ASP.NET (19): Seguridad• MyOwnGetRole es una función definida por nosotros
y que retorna el nombre del rol.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7474
ASP.NET (20): Seguridad
• Autorización: Ejemplo– Para que ASP.NET se entere del rol asignado al usuario, se
utiliza Global.asaxGlobal.asax, , que tiene manejadores de eventos a nivel de aplicación.
– El evento utilizado es AuthenticateRequestAuthenticateRequest que se invoca al inicio de toda solicitud de página.
– Idea simplificada:• Una vez que se haya identificado al usuario, se recupera
una referencia a un objeto identidad, que tiene la información del usuario, incluido el rol.
• La información del rol está en UserData, ASP.NET no sabe que esta información es del rol del usuario.
• Se debe crear un nuevo objeto para reemplazar al “currentuser”, con la misma identidad, pero incluyendo información del rol.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7575
ASP.NET (21): Seguridad• id tiene la información del usuario, la cual está
disponible en HttpContext.Current.User
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7676
ASP.NET (22): Seguridad
De
acue
rdo
al ro
l, se
pod
ráo
no a
cced
er a
las
pági
nas
pres
enta
das
com
o op
ción
en
los
boto
nes.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7777
ASP.NET (23): Seguridad
• Autorización: Ejemplo– Una vez que se haya identificado al usuario, en la
página solicitada (WebForm1), apenas se carga la página, se recupera el nombre del usuario y su rol, y se presenta esta información al usuario.• La información del usuario se obtiene con
Page.User.Identity.Name• La información del rol del usuario se obtiene con
User.IsInRole("Doctors")– La información de los roles está disponible en esta
página gracias a lo realizado en global.asax.– Se ofrece además cuatro posibilidades para visitar
otras páginas, cuyo acceso se garantiza de acuerdo al rol.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7878
ASP.NET (24): Seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
7979
ASP.NET (25): Seguridad• Autorización: Ejemplo
– Para restringir acceso de acuerdo a los roles, en cada subdirectorio se debe especificar en los archivos web.config, quienes están autorizados.
– No se puede incluir en subdirectorios, secciones de: <authentication> y <sessionState >
– Para el caso de “DoctorsOrNurses”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
8080
ASP.NET (26): Seguridad
• Autorización: Ejemplo– Para “DoctorsOrNurses”, se presenta una página en
la cual se realizan actividades dependiendo del rol del usuario (se quiere restringir actividades dentro de una página, ya no solo restringir el acceso a la página),.
– Un doctor o una enfermera pueden recetar aspirinas.– Solamente un doctor puede recetar morfina.– Nuevamente la decisión de aprobar o no una actividad
se realiza evaluando el rol del usuario.• User.IsInRole("Doctors“)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
8181
ASP.NET (27): Seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICCASP.NETASP.NET
8282
ASP.NET (28): Seguridad