presentación 2: asp - ivan...

41
Iván Bernal, Ph.D. [email protected] http http:// :// wwwfie.epn.edu.ec wwwfie.epn.edu.ec/ ibernal ibernal Escuela Polit Escuela Polité cnica Nacional cnica Nacional Quito – Ecuador Copyright @2004, I. Bernal MICROSOFT .NET MICROSOFT .NET Presentación 2: ASP.NET Jueves, 21 de Octubre de 2004 Iv Iván Bernal, n Bernal, Ph.D Ph.D. http http:// ://wwwfie.epn.edu.ec wwwfie.epn.edu.ec/ibernal ibernal Escuela Polit Escuela Politécnica Nacional cnica Nacional Quito Quito - Ecuador Ecuador Oct. 2004 Oct. 2004-CICC CICC ASP.NET ASP.NET 2 Agenda Visión general de ASP.NET • Paginas Web estáticas y dinámicas. Problemas y soluciones con la generación de páginas Web dinámicas. Ejemplo de ASP.NET Configuración de Aplicaciones Web. Manejo de estado de sesiones. Seguridad en ASP.NET

Upload: nguyenbao

Post on 27-Sep-2018

220 views

Category:

Documents


0 download

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