Title: Jorge Oblitas
1Jorge Oblitas
- 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)
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
2Webcast 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)
3Introducción a las ASP.NET para desarrolladores
ASP/PHP
- Jorge Oblitas
- Inteligencia e Innovación
- Microsoft Regional Director
4Creando 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 Region jorgeo_at_icuadrado.com
5Agenda
- Servicio de Membresía (Membership service)
- Membership API
- Membership providers
- Controles Login
- Servicio de Manejo de roles
- La clase Roles
- Role caching
- Role providers
6Membership 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
7Esquema del servicio
Controles
Login
LoginStatus
LoginView
Otros controlesLogin
Membership API
Membership
MembershipUser
Membership Providers
AccessMembershipProvider
Otros Membership Providers
SqlMembershipProvider
Membership Data
Access
SQL Server
Otros
8La clase Membership
- Provee metodos estaticos 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
9Mé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
10Creando nuevos usuarios
try Membership.CreateUser (Jorge",
MiPassword", jorgeo_at_icuadrado.com") catch
(MembershipCreateUserException e) // por
que fallo? switch (e.StatusCode) case
MembershipCreateStatus.DuplicateUsername
... case MembershipCreateStatus.DuplicateEmail
... case MembershipCreateStatus.Invali
dPassword ... default ...
11Validando Logins
if (Membership.ValidateUser (UserName.Text,
Password.Text)) FormsAuthentication.RedirectFr
omLoginPage (UserName.Text,
RememberMe.Checked)
12La 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
13Propiedades 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
14Mé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
15Membership 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
16Configuració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
17Cambiando la configuración del provider
ltmembership defaultProvider"Icuadrado"
userIsOnlineTimeWindow"15"gt ltprovidersgt
ltadd name"Icuadrado"
type"System.Web.Security.SqlMembershipProvider,
System.Web, connectionStringName"Cl
ubSiteDB" enablePasswordRetrieval"fa
lse" enablePasswordReset"true"
requiresQuestionAndAnswer"false"
applicationName"Icuadrado"
requiresUniqueEmail"true"
passwordFormat"Hashed"/gt lt/providersgt
lt/membershipgt
18Membership
19Controles 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
20El 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
21Usando el control Login
lthtmlgt ltbodygt ltform runat"server"gt
ltaspLogin RunAt"server" /gt lt/formgt
lt/bodygt lt/htmlgt
22Eventos 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
23Controles Login
24Servicio 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
25Esquema
Controles
Login
LoginStatus
LoginView
Otros controleslogin
Roles API
Roles
Role Providers
AccessRoleProvider
Otros Providers
SqlRoleProvider
Roles Data
Access
Otros
SQL Server
26La 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
27Mé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
28Creando un nuevo rol
if (!Roles.RoleExists ("Desarrolladoress"))
Roles.CreateRole ("Desarrolladores")
29Agregando un usuario al rol
string name Membership.GetUser
().Username Roles.AddUserToRole (name,
Desarrolladores")
30Habilitando el Role Manager
- Role management esta deshabilitado por defecto
- Se habilita via el Web.config
ltconfigurationgt ltsystem.webgt ltroleManager
enabled"true" /gt lt/system.webgt lt/configurationgt
31Role Caching
- El Role manager caches los datos en cookies
- Menos acceso al data store
- Mejor Performance
- Controlado via los atributosltroleManagergt 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?
32Habilitando Role Caching
ltconfigurationgt ltsystem.webgt ltroleManager
enabled"true" cacheRolesInCookie"true" /gt
lt!-- 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"tr
ue" // renovarlas? createPersistentCookie"
false" // generar persistente?
cookieProtection"All" /gt // Nivel d
eproteccion --gt lt/system.webgt lt/configuratio
ngt
33Role Management
34Preguntas
35(No Transcript)