380 likes | 551 Views
Componentes de ASP.NET. Leonardo Diez Dolinski Servicios Profesionales Danysoft. Orden del día. Funcionamiento interno Configuración Seguridad Manejo de estado. Enviar. Generación de una página .aspx. < HTML > < HEAD > < TITLE > Mi página </ TITLE > </ HEAD > < BODY >
E N D
Componentes deASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft
Ordendeldía • Funcionamiento interno • Configuración • Seguridad • Manejo de estado
Enviar Generación de una página .aspx <HTML> <HEAD> <TITLE>Mi página</TITLE> </HEAD> <BODY> <FORMrunat="server"id="WebForm1"> <INPUTtype="text"id="nombre"runat="server"> <asp:TextBoxid="apellidos"runat="server"></asp:TextBox> <asp:Buttonid="enviar" Text="enviar" runat="server"></asp:Button> </FORM> </BODY> </HTML>
<HTML> <HEAD> <TITLE>Mi página</TITLE> </HEAD> <BODY> <FORMrunat="server"id="WebForm1"> <INPUTtype="text"id="nombre"runat="server"> <asp:TextBoxid="apellidos"runat="server"></asp:TextBox> <asp:Buttonid="enviar"runat="server"></asp:Button> </FORM> </BODY> </HTML> Generación de una página .aspx Objeto página <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> Controls HtmlGeneric HtmlForm HtmlInput TextBox Button HtmlGeneric
Generación de una página .aspx Objeto página <HTML> <HEAD> <TITLE>Mi página</TITLE> </HEAD> <BODY> Controls HtmlGeneric HtmlForm <FORM action="...> </FORM> HtmlInput <INPUTtype="text" name="nombre"...> TextBox <INPUTtype="text" name="apellidos"...> Button <INPUTtype="button" name="enviar"...> HtmlGeneric </BODY> </HTML>
Objeto página Controls HtmlGeneric HtmlForm HtmlInput nombre.Text = "Leonardo" enviar TextBox apellidos.Text = "Diez" Button HtmlGeneric PostBack e POST WebForm1.aspx nombre=Leonardo apellidos=Diez ... Leonardo Diez
ENCODE ViewState ... apellidos.BackColor = Color.Blue ... <FORM action="...> <INPUTtype="hidden“ name="__ViewState“ value=“4fwe..."> ... ... </FORM> Objeto página Controls HtmlForm HtmlGeneric HtmlInput TextBox HtmlGeneric Button
Objeto página Controls HtmlGeneric HtmlForm HtmlInput TextBox DECODE HtmlGeneric ViewState e POST WebForm1.aspx ... __ViewState=4fwe... ... Leonardo apellidos.BackColor = Color.Blue Diez enviar
Objeto página Controls HtmlGeneric HtmlForm HtmlInput enviar TextBox Button enviar.click HtmlGeneric Eventos e POST WebForm1.aspx ... enviar=enviar Leonardo Diez
Ordendeldía • Funcionamiento interno • Configuración • Seguridad • Manejo de estado
Configuració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.NET) • Aplicación de escritorio • Aplicación y directorios web • Organización jerárquica • Alcance inferior sobrescribe alcance superior • Alcance superior puede fijar valores
Configuració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
Configuració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
Páginas de errores • Permite redirigir la ejecución a otra página, según el error ocurrido • <customErrors mode="On"> <error statusCode="404" redirect="errorpage404.aspx" /></customErrors> • <customErrors mode="RemoteOnly"> <error statusCode="404" redirect="errorpage404.aspx" /></customErrors>
Configuración personalizada • Es posible añadir valores de configuración específicos de la aplicación al fichero de configuración • <configuration> <appSettings> <add key="Conexion" value="…" /> </appSettings></configuration> • Acceso desde el código • cn = ConfigurationSettings.AppSettings("Conexion")
Configuración especial • Es posible añadir configuración específica para determinados ficheros o directorios mediante el uso del tag <location> • <configuration> <system.web> ... </system.web> <location path=“/admin”> <system.web> <security> <authorization> <allow roles=“Admins”> </authorization> </security> </system.web> </location></configuration>
Ordendeldía • Funcionamiento interno • Configuración • Seguridad • Manejo de estado
Elementos de seguridad • Autenticación • Autorización • Impersonación
Autenticació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
Autenticación de Windows • Se habilita para ASP.NET a través del fichero de configuración • <security> <authentication mode="Windows" /></security>
Autenticación de Windows • Se configura a través de la consola de administración de Servicios de Internet Information Server
Autenticació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”)) ...
Autenticació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 • <authentication mode="Forms"> <forms loginUrl=“Login.aspx“ /></authentication> • Cualquier usuario anónimo que intente acceder a un recurso protegido será enviado a Login.aspx
Autenticació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
Autenticación de formularios • Para sitios simples, se puede almacenar los nombres de usuarios y contraseñas en el fichero de configuración • <credentials passwordFormat="clear"> <user name="MSDN" password="online" /> <user name="Guest" password="guest" /></credentials> • Método FormAuthentication.Authenticate • Método FormAuthentication.HashPasswordForStoringInConfigFile
Autorización • Determina si el usuario autenticado tiene permisos para acceder a un recurso • Se especifica en el fichero de configuración • <authorization> <allow users="usuarios separados por comas" roles="roles separados por comas" verbs="verbos separados por comas" /> <deny users="usuarios separados por comas" roles="roles separados por comas" verbs="verbos separados por comas/></authorization> • Existen símbolos especiales • * para representar a todos los usuarios • ? para representar usuarios anónimos
Impersonación • Permite representar al usuario de la aplicación con un usuario de Windows • Autenticación de Windows • <identity impersonate="true" /> • Independiente del modo de autenticación • <identity impersonate="true" name=“usuario" password="password" />
Demo Implementación de la seguridad
Ordendeldía • Funcionamiento interno • Configuración • Seguridad • Manejo de estado
Manejo de estado • Una aplicación web se ejecuta en un medio sin estado • Necesidad de tener una forma de “recordar” datos = mantener estado
Estado 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
Estado de sesión • Colección de valores accesibles desde cualquier página • Objeto Session • Una colección por usuario • Session["UserId"]
Sesiones 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
Sesiones de ASP.NET • Configuración en web.config • <sessionState mode=“Off|InProc|StateServer|SQLServer” cookieless=“false” timeout=“20” sqlConnectionString=“data source=127.0.0.1; user id=sa;password=sa” stateConnectionString="tcpip=127.0.0.1:42424" />
Sesiones 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
Paraobtenermásinformación • eRevista Danysoft • Webs Danysoft • Area Formación yS.Profesionales • DVD Danysoft • Libros Danypress • info@danysoft.com