Title: Componentes de ASP'NET
1Componentes deASP.NET
- Leonardo Diez Dolinski
- Servicios Profesionales
- Danysoft
2Orden del día
- Funcionamiento interno
- Configuración
- Seguridad
- Manejo de estado
3Generación de una página .aspx
ltHTMLgt ltHEADgt ltTITLEgtMi páginalt/TITLEgt lt/HEADgt ltB
ODYgt ltFORM runat"server" id"WebForm1"gt
ltINPUT type"text" id"nombre" runat"server"gt
ltaspTextBox id"apellidos" runat"server"gtlt/aspT
extBoxgt ltaspButton id"enviar" Text"enviar"
runat"server"gtlt/aspButtongt lt/FORMgt lt/BODYgt lt/HT
MLgt
4Generación de una página .aspx
Objeto página
ltHTMLgt ltHEADgt ltTITLEgtMi páginalt/TITLEgt lt/HEADgt ltB
ODYgt ltFORM runat"server" id"WebForm1"gt
ltINPUT type"text" id"nombre" runat"server"gt
ltaspTextBox id"apellidos" runat"server"gtlt/aspT
extBoxgt ltaspButton id"enviar"
runat"server"gtlt/aspButtongt lt/FORMgt lt/BODYgt lt/HT
MLgt
Controls
HtmlGeneric
HtmlForm
HtmlInput
TextBox
Button
HtmlGeneric
5Generación de una página .aspx
Objeto página
ltHTMLgt ltHEADgt ltTITLEgtMi páginalt/TITLEgt lt/HEADgt ltB
ODYgt
Controls
HtmlGeneric
HtmlForm
ltFORM action"...gt lt/FORMgt
HtmlInput
ltINPUT type"text" name"nombre"...gt
TextBox
ltINPUT type"text" name"apellidos"...gt
Button
ltINPUT type"button" name"enviar"...gt
HtmlGeneric
lt/BODYgt lt/HTMLgt
6PostBack
e
POST WebForm1.aspx nombreLeonardo apellidosDiez
...
Leonardo
Diez
7ViewState
... apellidos.BackColor Color.Blue ...
ltFORM action"...gt ltINPUT type"hidden
name"__ViewState value4fwe..."gt ...
... lt/FORMgt
Objeto página
Controls
HtmlGeneric
HtmlForm
HtmlInput
HtmlGeneric
TextBox
Button
8ViewState
e
POST WebForm1.aspx ... __ViewState4fwe... ...
Leonardo
apellidos.BackColor Color.Blue
Diez
enviar
9Eventos
e
POST WebForm1.aspx ... enviarenviar
Leonardo
Diez
10Orden del día
- Funcionamiento interno
- Configuración
- Seguridad
- Manejo de estado
11Configuración
- A través de ficheros de configuración
- Formato XML y extensión .config
- Fácil mantenimiento y despliegue
- Diferentes alcances
- Toda la máquina (Directorio windows\Microsoft.NE
T) - Aplicación de escritorio
- Aplicación y directorios web
- Organización jerárquica
- Alcance inferior sobrescribe alcance superior
- Alcance superior puede fijar valores
12Configuración de máquina
- Fichero machine.config
- Dentro del directorio de Windows
- Establece los valores predeterminados para todas
las aplicaciones web - Seguimiento Deshabilitado
- Máx. tiempo de ejecución 90 segundos
- Manejo de sesiones Activo, en proceso
- Autenticación Permitir usuarios anónimos
- Soporte multi-CPU Deshabilitado
13Configuración de aplicaciones web
- Fichero web.config
- Almacena la mayoría de las opciones de
configuración - Sobrescribe algunos valores de machine.config
- Añade nuevas configuraciones
- Los cambios toman efecto inmediatamente
- Reinicia la aplicación
- Fácil despliegue
- Se distribuye con el sitio
- Casi no es necesaria la base de datos de IIS
14Páginas de errores
- Permite redirigir la ejecución a otra página,
según el error ocurrido - ltcustomErrors mode"On"gt lterror statusCode"404"
redirect"errorpage404.aspx"
/gtlt/customErrorsgt - ltcustomErrors mode"RemoteOnly"gt lterror
statusCode"404" redirect"errorpage404.as
px" /gtlt/customErrorsgt
15Configuración personalizada
- Es posible añadir valores de configuración
específicos de la aplicación al fichero de
configuración - ltconfigurationgt ltappSettingsgt ltadd
key"Conexion" value"" /gt lt/appSettingsgtlt/conf
igurationgt - Acceso desde el código
- cn ConfigurationSettings.AppSettings("Conexion")
16Configuración especial
- Es posible añadir configuración específica para
determinados ficheros o directorios mediante el
uso del tag ltlocationgt - ltconfigurationgt ltsystem.webgt ... lt/system.webgt
ltlocation path/admingt ltsystem.webgt ltsecur
itygt ltauthorizationgt ltallow
rolesAdminsgt lt/authorizationgt lt/security
gt lt/system.webgt lt/locationgtlt/configurationgt
17Orden del día
- Funcionamiento interno
- Configuración
- Seguridad
- Manejo de estado
18Elementos de seguridad
- Autenticación
- Autorización
- Impersonación
19Autenticación
- Identificación de la persona (o sistema) que
desea acceder a un sistema - Tipos de autenticación dadas por ASP.NET
- Windows
- Formularios
- Passport
20Autenticación de Windows
- Se habilita para ASP.NET a través del fichero de
configuración - ltsecuritygt ltauthentication mode"Windows"
/gtlt/securitygt
21Autenticación de Windows
- Se configura a través de la consola de
administración de Servicios de Internet
Information Server
22Autenticación de Windows
- Es posible acceder al nombre del usuario
autenticado - string usuario User.Identity.Name
- Los grupos de Windows son automáticamente
vinculados a Roles ASP.NET - if (User.IsInRole(Administrators)) ...
23Autenticación de formularios
- El sitio web es el responsable de la seguridad,
no IIS - Configurar IIS para permitir acceso anónimo
- Fuerza a los usuarios a autenticarse a través de
un formulario - ltauthentication mode"Forms"gt ltforms
loginUrlLogin.aspx /gtlt/authenticationgt - Cualquier usuario anónimo que intente acceder a
un recurso protegido será enviado a Login.aspx
24Autenticación de formularios
- Crear un formulario de ingreso
- Obtener nombre de usuario y contraseña
- Validar datos enviados
- Método FormAuthentication.RedirectFromLoginPage
- Marca al usuario como autenticado
- Lleva al usuario a la página que ha pedido
originalmente - Si el usuario ha pedido la página de ingreso, lo
redirige a la página de inicio de la aplicación
web - La cookie de autenticación puede ser persistente
- Existe la posibilidad de realizar cada paso por
separado
25Autenticación de formularios
- Para sitios simples, se puede almacenar los
nombres de usuarios y contraseñas en el fichero
de configuración - ltcredentials passwordFormat"clear"gt ltuser
name"MSDN" password"online" /gt ltuser
name"Guest" password"guest" /gtlt/credentialsgt - Método FormAuthentication.Authenticate
- Método FormAuthentication.HashPasswordForStoringIn
ConfigFile
26Autorización
- Determina si el usuario autenticado tiene
permisos para acceder a un recurso - Se especifica en el fichero de configuración
- ltauthorizationgt ltallow users"usuarios
separados por comas" roles"roles separados
por comas" verbs"verbos separados por comas"
/gt ltdeny users"usuarios separados por comas"
roles"roles separados por comas"
verbs"verbos separados por comas/gtlt/authoriza
tiongt - Existen símbolos especiales
- para representar a todos los usuarios
- ? para representar usuarios anónimos
27Impersonación
- Permite representar al usuario de la aplicación
con un usuario de Windows - Autenticación de Windows
- ltidentity impersonate"true" /gt
- Independiente del modo de autenticación
- ltidentity impersonate"true"
nameusuario"
password"password" /gt
28Demo
- Implementación de la seguridad
29Orden del día
- Funcionamiento interno
- Configuración
- Seguridad
- Manejo de estado
30Manejo de estado
- Una aplicación web se ejecuta en un medio sin
estado - Necesidad de tener una forma de recordar datos
mantener estado
31Estado de aplicación
- Colecciones de valores accesibles desde cualquier
página y sesión - Objeto Application
- Application"NombreEmpresa"
- Se pueden bloquear o desbloquear el acceso
- Métodos Lock y Unlock
- Objeto Cache
- Permite que los datos expiren
32Estado de sesión
- Colección de valores accesibles desde cualquier
página - Objeto Session
- Una colección por usuario
- Session"UserId"
33Sesiones de ASP.NET
- Posibilidad de no usar cookies
- Diferentes modos
- InProc
- Similar a ASP
- Almacena las sesiones en la memoria del servidor
web - StateServer
- Las sesiones son almacenadas en memoria en un
servicio separado - El servicio puede estar en un servidor remoto
- SQLServer
- Las sesiones son almacenadas en una base de datos
de SQL Server
34Sesiones de ASP.NET
- Configuración en web.config
- ltsessionState modeOffInProcStateServerSQLSer
ver cookielessfalse timeout20 sqlConnect
ionStringdata source127.0.0.1 user
idsapasswordsa stateConnectionString"tcp
ip127.0.0.142424" /gt
35Sesiones de ASP.NET
- Para configurar SQL Server para almacenar
información de estados se debe ejecutar un
pequeño script en el servidor - InstallSQLState.sql puede ser encontrado en
sysdrive\winnt\Microsoft.NET\Framework\version
- Crea lo siguiente en el servidor
- Una base de datos llamada ASPState
- Procedimientos almacenados
- Tablas en TempDB para almacenar los datos de los
estados. - Para desinstalar ejecutar el script
UninstallSQLState.sql
36Preguntas y respuestas
37Para obtener más información
- eRevista Danysoft
- Webs Danysoft
- Area Formación yS.Profesionales
- DVD Danysoft
- Libros Danypress
- info_at_danysoft.com
38Gracias por su asistencia