350 likes | 657 Views
Jorge Oblitas. Consultor para los programas Panorama Box y DCE Soluciones Intranet premiadas en Perú y EE.UU. Creador del curso para la segunda estrella DCE Bajista desde 1984 Aficionado a los Golden Retrievers y Beagles. Consultor en tecnología asociada a la gestión del Conocimiento
E N D
Jorge Oblitas Consultor para los programas Panorama Box y DCE Soluciones Intranet premiadas en Perú y EE.UU. Creador del curso para la segunda estrella DCE Bajista desde 1984 Aficionado a los Golden Retrievers y Beagles Consultor en tecnología asociada a la gestión del Conocimiento Ha sido miembro de los programas Microsoft Regional Director (desde el 2000) Microsoft Partner Advisory Council (2002)
“Webcast Series” • Introducción a las ASP.NET para desarrolladores ASP/PHP • Introducción a las ASP.NET 2.0 para desarrolladores ASP.NET • Creación de aplicaciones Web con acceso a datos usando ASP.NET2.0 • Creando aplicaciones seguras a través del uso de membresía y manejo de roles con Visual Studio 2005 y ASP.NET 2.0 • Usando "Profiles" en ASP.NET 2.0 y localizando aplicaciones. • Extendiendo ASP.NET 2.0 a través del modelo basado en proveedores (provider model)
Introducción a las ASP.NET para desarrolladores ASP/PHP Jorge Oblitas Inteligencia e Innovación Microsoft Regional Director
Creando aplicaciones seguras a través del servicio de membresía y manejo de roles con Visual Web Developer Express beta 2 y ASP.NET 2.0 Jorge Oblitas Inteligencia e Innovación Microsoft Regional Director Peru – Andean Regionjorgeo@icuadrado.com
Agenda • Servicio de Membresía (Membership service) • Membership API • Membership providers • Controles Login • Servicio de Manejo de roles • La clase Roles • Role caching • Role providers
Membership Service • Servicio para administrar usuarios y credenciales • Acceso declarativo via el Web Site Admin Tool • Acceso programático usando las clases Membership y MembershipUser • La clase Membership provee servicios base • La clase MembershipUser representa los usuarios y provee servicios adicionales • Basado en providers para un almacenamiento de datos flexible
Esquema del servicio Controles Login LoginStatus LoginView Otros controlesLogin Membership API Membership MembershipUser Membership Providers AccessMembershipProvider SqlMembershipProvider Otros Membership Providers Membership Data Access SQL Server Otros
La clase Membership • Provee m[etodos est[aticos para llevar a cabo tareas claves de al trabajar con membresía • Crear y eliminar usuarios • Recolectar información sobre los usuarios • Generar contraseñas aleatorias • Validar logins • También incluye propiedades estáticas de tipo read-only static para recibir información acerca de la configuración del provider de membresía
Métodos “principales” de la clase Membership Nombre Descripción CreateUser Agrega al usuario al membership data store DeleteUser Remueve el usuario del membership data store GeneratePassword Genera una contraseña aleatoria de un largo específico GetAllUsers Recoge una colección de objetos MembershipUser Representando a todos los usuarios registrados GetUser Recoge un objeto MembershipUser representando a un usuario UpdateUser Actualiza la información del usuario especificador ValidateUser Valida los logins basado enel nombre de usuario y la contraseña MaxInvalidPasswordAttempts Número máximo de intentos de loguearse fallidos
Creando nuevos usuarios try { Membership.CreateUser (“Jorge", “MiPassword", “jorgeo@icuadrado.com"); } catch (MembershipCreateUserException e) { // por que fallo? switch (e.StatusCode) { case MembershipCreateStatus.DuplicateUsername: ... case MembershipCreateStatus.DuplicateEmail: ... case MembershipCreateStatus.InvalidPassword: ... default: ... } }
Validando Logins if (Membership.ValidateUser (UserName.Text, Password.Text)) FormsAuthentication.RedirectFromLoginPage (UserName.Text, RememberMe.Checked);
La clase MembershipUser • Representa a usuarios individuales registrados en el membership data store • Incluye varias propiedades para obtener y configurar información del usuario • Incluye métodos para obtener, cambiar y “resetear” contraseñas
Propiedades “principales” de la clase MembershipUser Nombre Descripción Comment Almacenamiento para datos específicos del usuario CreationDate Día en que el usuario fue añadido al membership data store Email Email del usuario LastLoginDate Día del último login exitoso del usuario LastPasswordChangedDate Día dle último cambio de contraseña UserId Identificador del usuario generado por el membership provider UserName Nombre registrado del usuario
Métodos “principales” de la clase MembershipUser Nombre Descripción ChangePassword Cambia la contraseña del usuario ChangePassword- QuestionAndAnswer Cambia la pregunta y la respuesta utilizada para recuperar la contraseña GetPassword* Obtiene la contraseña ResetPassword “Resetea” la contraseña y crea una nueva aleatoriamente * Works if Membership.EnablePasswordRetrieval is true
Membership Providers • La membresía está basada en providers • El Provider provee la interface entre el servicio de membresía y el lugar físico donde se encuentran los datos * Will be removed from beta 2
Configuración del Provider • Soporte a varios aspectos de la configuración • Cómo deben ser almacenadas las contraseñas ¿cleartext, hashed, encrypted)? • ¿Debemos habilitar recuperación de contraseña? • ¿El email debe ser único para cada usuario? • Se inicializa desde los archivos. config
Cambiando la configuración del provider <membership defaultProvider="Icuadrado" userIsOnlineTimeWindow="15"> <providers> <add name="Icuadrado" type="System.Web.Security.SqlMembershipProvider, System.Web,… connectionStringName="ClubSiteDB" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="Icuadrado" requiresUniqueEmail="true" passwordFormat="Hashed"/> </providers> </membership>
Controles Login Control Descripción ChangePassword UI para cambiar contraseñas CreateUserWizard UI para crear nuevas cuentas de usuario Login UI para ingresar y validad nombres de usuario y contraseñas LoginName Muestra el nombre de usuario del usuario autenticado LoginStatus UI para hacer log in o log out LoginView Muestra diferentes vistas dependiendo de si el usuario está logueado o noy de acuerdo a los roles PasswordRecovery UI para recuperar contraseñas
El control Login • UI para el logueo de usuarios • Se integra al servicio de membership • Llama automáticamente a ValidateUser • Validación y login ´sin código • También trabaja con sin el membership service • Incorpora RequiredFieldValidators
Usando el control Login <html> <body> <form runat="server"> <asp:Login RunAt="server" /> </form> </body> </html>
Eventos del control Login Nombre Descripción Authenticate Se dispara cuando el usuario hace click en el botón Log In. Su propósito esautenticar al usuario validando sus credenciales. LoggedIn Se dispara luego de un login exitoso LoggingIn Se dispara cuando el usuario hace click en el botón log in. Su propósitoes pre validar las credenciales (por ejemplo: formato) LoginError Se dispara cuando falla el intento de loguearse
Servicio de administración de roles (Role Management Service) • Seguridad basada en roles incluida en el producto. • Acceso declarativo via el Web Site Admin Tool • Acceso programático via la clase roles • La clase roles contiene métodos estáticos para la creación de roles, agregar usuarios a esos roles, etc. • Mapea a los usuarios con los roles en cada request • Reemplza a Application_AuthenticateRequest • Basado en providers para tener flexibilidad
Esquema Controles Login LoginStatus LoginView Otros controleslogin Roles API Roles Role Providers AccessRoleProvider SqlRoleProvider Otros Providers Roles Data Access SQL Server Otros
La clase Roles • Puerta de acceso a la API: Role Management • Brinda métodos estáticos para levar a cabo tareas de administración de roles como • Crear y eliminar roles • Agregar usuarios a los roles • Remover usuarios de los roles.. • … y más • También incluyepropiedades estáticas read-only para adquirir datos acerca del provider
Métodos clave Nombre Descripción AddUserToRole Agrega al usuario al rol CreateRole Crea un nuevo rol DeleteRole Elimina un rol existente GetRolesForUser Obtiene una colección de roles a los que pertenece el usuario GetUsersInRole Obtiene una colección de usuarios pertenecientes a ese rol IsUserInRole Indica si el suario pertenece a ese rol RemoveUserFromRole Remueve al usuario del rol especificado
Creando un nuevo rol if (!Roles.RoleExists ("Desarrolladoress")) { Roles.CreateRole ("Desarrolladores"); }
Agregando un usuario al rol string name = Membership.GetUser ().Username; Roles.AddUserToRole (name, “Desarrolladores");
Habilitando el Role Manager • Role management esta deshabilitado por defecto • Se habilita via el Web.config: <configuration> <system.web> <roleManager enabled="true" /> </system.web> </configuration>
Role Caching • El Role manager caches los datos en cookies • Menos acceso al data store • Mejor Performance • Controlado via los atributos<roleManager> y expuesto programáticamente via la clase Roles • ¿Los roles deberían usar cookies? • ¿Las cokies deberían estar encriptadas? • ¿Cuánto tiempo deberían valer las cookies?
Habilitando Role Caching <configuration> <system.web> <roleManager enabled="true" cacheRolesInCookie="true" /> <!-- Other roleManager attributes (and their defaults) include: cookieName=".ASPXROLES" // Nombre de la cookie cookieTimeout="30" // tiempo de vida cookiePath="/" // Ruta cookieRequireSSL="false" // restriccion SSL? cookieSlidingExpiration="true" // renovarlas? createPersistentCookie="false" // generar persistente? cookieProtection="All" /> // Nivel d eproteccion --> </system.web> </configuration>