Upload
aracely-bojorquez
View
6
Download
0
Embed Size (px)
Citation preview
Componentes deComponentes de
ASP.NETASP.NETLeonardo Diez DolinskiLeonardo Diez DolinskiServicios ProfesionalesServicios ProfesionalesDanysoftDanysoft
OrdenOrden deldel díadía
Funcionamiento internoFuncionamiento interno
ConfiguraciónConfiguración
SeguridadSeguridad
Manejo de estadoManejo de estado
Generación de una página .aspxGeneración de una página .aspx
Enviar
<HTML><HEAD> <TITLE>Mi página</TITLE></HEAD><BODY> <FORM runat="server" id="WebForm1"> <INPUT type="text" id="nombre" runat="server"> <asp:TextBox id="apellidos" runat="server"></asp:TextBox> <asp:Button id="enviar" Text="enviar" runat="server"></asp:Button> </FORM></BODY></HTML>
Generación de una página .aspxGeneración de una página .aspx
<HTML><HEAD> <TITLE>Mi página</TITLE></HEAD><BODY> <FORM runat="server" id="WebForm1"> <INPUT type="text" id="nombre" runat="server"> <asp:TextBox id="apellidos" runat="server"></asp:TextBox> <asp:Button id="enviar" runat="server"></asp:Button> </FORM></BODY></HTML>
Objeto página
Controls
<HTML><HEAD> <TITLE>Mi página</TITLE></HEAD><BODY>
HtmlGeneric
HtmlGeneric
<FORM runat="server" id="WebForm1">
</FORM>
HtmlForm
</BODY></HTML>
<asp:TextBox id="apellidos" runat="server"></asp:TextBox> HtmlInput
TextBox
<INPUT type="text" id="nombre" runat="server">
<asp:Button id="enviar" runat="server"></asp:Button>
Button
Generación de una página .aspxGeneración de una página .aspx
Objeto página
Controls
HtmlGeneric
HtmlGeneric
HtmlForm
HtmlInput
TextBox
<HTML><HEAD> <TITLE>Mi página</TITLE></HEAD><BODY>
</BODY></HTML>
<FORM action="...>
</FORM>
<INPUT type="text" name="nombre"...>
<INPUT type="text" name="apellidos"...>
Button <INPUT type="button" name="enviar"...>
PostBackPostBack
Objeto página
Controls
HtmlGeneric
HtmlGeneric
HtmlForm
HtmlInput
TextBox
Button
POST WebForm1.aspx
nombre=Leonardoapellidos=Diez...
nombre.Text = "Leonardo"
apellidos.Text = "Diez"
eLeonardo
Diez
enviar
ViewStateViewState
...apellidos.BackColor = Color.Blue...
Objeto página
Controls
HtmlGeneric
HtmlGeneric
HtmlForm
HtmlInput
TextBox
<FORM action="...> <INPUT type="hidden“ name="__ViewState“ value=“4fwe..."> ... ... </FORM>
ENCODEButton
ViewStateViewState
POST WebForm1.aspx
...__ViewState=4fwe......
Objeto página
Controls
HtmlGeneric
HtmlGeneric
HtmlForm
HtmlInput
TextBoxapellidos.BackColor = Color.BlueDECODE
eLeonardo
Diez
enviar
EventosEventos
Objeto página
Controls
HtmlGeneric
HtmlGeneric
HtmlForm
HtmlInput
TextBox
Button
eLeonardo
Diez
enviar
POST WebForm1.aspx
...enviar=enviar
enviar.click
OrdenOrden deldel díadía
Funcionamiento internoFuncionamiento interno
ConfiguraciónConfiguración
SeguridadSeguridad
Manejo de estadoManejo de estado
ConfiguraciónConfiguración
A través de ficheros de configuraciónA través de ficheros de configuraciónFormato XML y extensión .configFormato XML y extensión .configFácil mantenimiento y despliegueFácil mantenimiento y despliegue
Diferentes alcancesDiferentes alcancesToda la máquina (Directorio [windows]\Toda la máquina (Directorio [windows]\Microsoft.NET)Microsoft.NET)Aplicación de escritorioAplicación de escritorioAplicación y directorios webAplicación y directorios web
Organización jerárquicaOrganización jerárquicaAlcance inferior sobrescribe alcance superiorAlcance inferior sobrescribe alcance superiorAlcance superior puede fijar valoresAlcance superior puede fijar valores
Configuración de máquinaConfiguración de máquina
Fichero machine.configFichero machine.config
Dentro del directorio de WindowsDentro del directorio de Windows
Establece los valores predeterminados para Establece los valores predeterminados para todas las aplicaciones webtodas las aplicaciones web
Seguimiento: DeshabilitadoSeguimiento: Deshabilitado
Máx. tiempo de ejecución: 90 segundosMáx. tiempo de ejecución: 90 segundos
Manejo de sesiones: Activo, en procesoManejo de sesiones: Activo, en proceso
Autenticación: Permitir usuarios anónimosAutenticación: Permitir usuarios anónimos
Soporte multi-CPU: DeshabilitadoSoporte multi-CPU: Deshabilitado
Configuración de aplicaciones Configuración de aplicaciones webweb
Fichero web.configFichero web.config
Almacena la mayoría de las opciones de Almacena la mayoría de las opciones de configuraciónconfiguración
Sobrescribe algunos valores de machine.configSobrescribe algunos valores de machine.config
Añade nuevas configuracionesAñade nuevas configuraciones
Los cambios toman efecto inmediatamenteLos cambios toman efecto inmediatamenteReinicia la aplicaciónReinicia la aplicación
Fácil despliegueFácil despliegueSe distribuye con el sitioSe distribuye con el sitio
Casi no es necesaria la base de datos de IISCasi no es necesaria la base de datos de IIS
Páginas de erroresPáginas de errores
Permite redirigir la ejecución a otra página, Permite redirigir la ejecución a otra página, según el error ocurridosegún el error ocurrido
<customErrors mode="On"><customErrors mode="On"><error statusCode="404" <error statusCode="404"
redirect="errorpage404.aspx" />redirect="errorpage404.aspx" /></customErrors></customErrors>
<customErrors mode="RemoteOnly"><customErrors mode="RemoteOnly"><error statusCode="404" <error statusCode="404"
redirect="errorpage404.aspx" />redirect="errorpage404.aspx" /></customErrors></customErrors>
Configuración personalizadaConfiguración personalizada
Es posible añadir valores de configuración Es posible añadir valores de configuración específicos de la aplicación al fichero de específicos de la aplicación al fichero de configuraciónconfiguración
<configuration><configuration><appSettings><appSettings>
<add key="Conexion" <add key="Conexion" value="…" />value="…" />
</appSettings></appSettings></configuration></configuration>
Acceso desde el códigoAcceso desde el códigocn = cn = ConfigurationSettings.AppSettings("Conexion")ConfigurationSettings.AppSettings("Conexion")
Configuración especialConfiguración especial
Es posible añadir configuración específica para determinados Es posible añadir configuración específica para determinados ficheros o directorios mediante el uso del tag <location>ficheros o directorios mediante el uso del tag <location><configuration><configuration>
<system.web><system.web>......</system.web></system.web><location path=“/admin”><location path=“/admin”>
<system.web><system.web><security><security>
<authorization><authorization><allow roles=“Admins”><allow roles=“Admins”>
</authorization></authorization></security></security>
</system.web></system.web></location></location>
</configuration></configuration>
OrdenOrden deldel díadía
Funcionamiento internoFuncionamiento interno
ConfiguraciónConfiguración
SeguridadSeguridad
Manejo de estadoManejo de estado
Elementos de seguridadElementos de seguridad
AutenticaciónAutenticación
AutorizaciónAutorización
ImpersonaciónImpersonación
AutenticaciónAutenticación
Identificación de la persona (o sistema) Identificación de la persona (o sistema) que desea acceder a un sistemaque desea acceder a un sistema
Tipos de autenticación dadas por Tipos de autenticación dadas por ASP.NETASP.NET
WindowsWindows
FormulariosFormularios
PassportPassport
Autenticación de WindowsAutenticación de Windows
Se habilita para ASP.NET a través del Se habilita para ASP.NET a través del fichero de configuraciónfichero de configuración
<security><security><authentication <authentication
mode="Windows" />mode="Windows" /></security></security>
Autenticación de WindowsAutenticación de Windows
Se configura a Se configura a través de la consola través de la consola de administración de administración de Servicios de de Servicios de Internet Information Internet Information ServerServer
Autenticación de WindowsAutenticación de Windows
Es posible acceder al nombre del Es posible acceder al nombre del usuario autenticadousuario autenticado
string usuario = User.Identity.Name;string usuario = User.Identity.Name;
Los grupos de Windows son Los grupos de Windows son automáticamente vinculados a Roles automáticamente vinculados a Roles ASP.NETASP.NET
if (User.IsInRole(“Administrators”)) ...if (User.IsInRole(“Administrators”)) ...
Autenticación de formulariosAutenticación de formularios
El sitio web es el responsable de la seguridad, El sitio web es el responsable de la seguridad, no IISno IIS
Configurar IIS para permitir acceso anónimoConfigurar IIS para permitir acceso anónimo
Fuerza a los usuarios a autenticarse a través Fuerza a los usuarios a autenticarse a través de un formulariode un formulario
<authentication mode="Forms"><authentication mode="Forms"><forms loginUrl=“Login.aspx“ /><forms loginUrl=“Login.aspx“ />
</authentication></authentication>
Cualquier usuario anónimo que intente acceder a Cualquier usuario anónimo que intente acceder a un recurso protegido será enviado a Login.aspxun recurso protegido será enviado a Login.aspx
Autenticación de formulariosAutenticación de formularios
Crear un formulario de ingresoCrear un formulario de ingresoObtener nombre de usuario y contraseñaObtener nombre de usuario y contraseña
Validar datos enviadosValidar datos enviados
Método FormAuthentication.RedirectFromLoginPageMétodo FormAuthentication.RedirectFromLoginPageMarca al usuario como autenticadoMarca al usuario como autenticado
Lleva al usuario a la página que ha pedido originalmenteLleva al usuario a la página que ha pedido originalmente
Si el usuario ha pedido la página de ingreso, lo redirige a la Si el usuario ha pedido la página de ingreso, lo redirige a la página de inicio de la aplicación webpágina de inicio de la aplicación web
La cookie de autenticación puede ser persistenteLa cookie de autenticación puede ser persistente
Existe la posibilidad de realizar cada paso por Existe la posibilidad de realizar cada paso por separadoseparado
Autenticación de formulariosAutenticación de formularios
Para sitios simples, se puede almacenar Para sitios simples, se puede almacenar los nombres de usuarios y contraseñas los nombres de usuarios y contraseñas en el fichero de configuraciónen el fichero de configuración
<credentials passwordFormat="clear"><credentials passwordFormat="clear"><user name="MSDN" <user name="MSDN"
password="online" />password="online" /><user name="Guest" <user name="Guest"
password="guest" />password="guest" /></credentials></credentials>
Método Método FormAuthentication.AuthenticateFormAuthentication.AuthenticateMétodo Método FormAuthentication.HashPasswordForStoringInConfigFileFormAuthentication.HashPasswordForStoringInConfigFile
AutorizaciónAutorización
Determina si el usuario autenticado tiene permisos Determina si el usuario autenticado tiene permisos para acceder a un recursopara acceder a un recurso
Se especifica en el fichero de configuraciónSe especifica en el fichero de configuración<authorization><authorization>
<allow <allow users="usuarios separados por comas" users="usuarios separados por comas" roles="roles separados por comas" roles="roles separados por comas" verbs="verbos separados por comas" />verbs="verbos separados por comas" />
<deny <deny users="usuarios separados por comas" users="usuarios separados por comas" roles="roles separados por comas" roles="roles separados por comas" verbs="verbos separados por comas/>verbs="verbos separados por comas/>
</authorization> </authorization>
Existen símbolos especialesExisten símbolos especiales* para representar a todos los usuarios* para representar a todos los usuarios
? para representar usuarios anónimos? para representar usuarios anónimos
ImpersonaciónImpersonación
Permite representar al usuario de la Permite representar al usuario de la aplicación con un usuario de Windowsaplicación con un usuario de Windows
Autenticación de WindowsAutenticación de Windows<identity impersonate="true" /><identity impersonate="true" />
Independiente del modo de Independiente del modo de autenticaciónautenticación
<identity impersonate="true"<identity impersonate="true" name=“usuario" name=“usuario" password="password" /> password="password" />
DemoDemo
Implementación de la seguridadImplementación de la seguridad
OrdenOrden deldel díadía
Funcionamiento internoFuncionamiento interno
ConfiguraciónConfiguración
SeguridadSeguridad
Manejo de estadoManejo de estado
Manejo de estadoManejo de estado
Una aplicación web se ejecuta en un Una aplicación web se ejecuta en un medio sin estadomedio sin estado
Necesidad de tener una forma de Necesidad de tener una forma de “recordar” datos = mantener estado“recordar” datos = mantener estado
Estado de aplicaciónEstado de aplicación
Colecciones de valores accesibles desde Colecciones de valores accesibles desde cualquier página y sesióncualquier página y sesión
Objeto ApplicationObjeto ApplicationApplication["NombreEmpresa"]Application["NombreEmpresa"]
Se pueden bloquear o desbloquear el Se pueden bloquear o desbloquear el accesoacceso
Métodos Lock y UnlockMétodos Lock y Unlock
Objeto CacheObjeto CachePermite que los datos expirenPermite que los datos expiren
Estado de sesiónEstado de sesión
Colección de valores accesibles desde Colección de valores accesibles desde cualquier páginacualquier página
Objeto SessionObjeto Session
Una colección por usuarioUna colección por usuario
Session["UserId"]Session["UserId"]
Sesiones de ASP.NETSesiones de ASP.NET
Posibilidad de no usar cookiesPosibilidad de no usar cookies
Diferentes modosDiferentes modosInProcInProc
Similar a ASPSimilar a ASP
Almacena las sesiones en la memoria del servidor webAlmacena las sesiones en la memoria del servidor web
StateServerStateServerLas sesiones son almacenadas en memoria en un servicio Las sesiones son almacenadas en memoria en un servicio separadoseparado
El servicio puede estar en un servidor remotoEl servicio puede estar en un servidor remoto
SQLServerSQLServerLas sesiones son almacenadas en una base de datos de Las sesiones son almacenadas en una base de datos de SQL ServerSQL Server
Sesiones de ASP.NETSesiones de ASP.NET
Configuración en web.configConfiguración en web.config<sessionState<sessionState
mode=“Off|InProc|StateServer|SQLServer”mode=“Off|InProc|StateServer|SQLServer”cookieless=“false”cookieless=“false”timeout=“20”timeout=“20”sqlConnectionString=“data source=127.0.0.1; sqlConnectionString=“data source=127.0.0.1;
user user id=sa;password=sa” id=sa;password=sa” stateConnectionString="tcpip=127.0.0.1:42424" />stateConnectionString="tcpip=127.0.0.1:42424" />
Sesiones de ASP.NETSesiones de ASP.NET
Para configurar SQL Server para almacenar Para configurar SQL Server para almacenar información de estados se debe ejecutar un información de estados se debe ejecutar un pequeño script en el servidorpequeño script en el servidor
InstallSQLState.sql puede ser encontrado en InstallSQLState.sql puede ser encontrado en [sysdrive]\winnt\Microsoft.NET\Framework\[sysdrive]\winnt\Microsoft.NET\Framework\[version][version]
Crea lo siguiente en el servidorCrea lo siguiente en el servidorUna base de datos llamada ASPStateUna base de datos llamada ASPStateProcedimientos almacenadosProcedimientos almacenadosTablas en TempDB para almacenar los datos de los Tablas en TempDB para almacenar los datos de los estados.estados.
Para desinstalar ejecutar el script Para desinstalar ejecutar el script UninstallSQLState.sqlUninstallSQLState.sql
Preguntas y respuestasPreguntas y respuestas
ParaPara obtenerobtener másmás informacióninformación
eRevista DanysofteRevista Danysoft
Webs DanysoftWebs Danysoft
Area Formación yArea Formación yS.ProfesionalesS.Profesionales
DVD DanysoftDVD Danysoft
Libros DanypressLibros Danypress
[email protected]@danysoft.com
Gracias por su asistenciaGracias por su asistencia