Está en la página 1de 13

Gestin de una aplicacin completa con .

NET
Servicio de Informtica

TEMA 8: IDENTIFICACIN Y CONTROL


DE USUARIOS
1.

AUTENTICACIN Y AUTORIZACIN

DEFINICIONES
Autenticacin: Acepta credenciales proporcionadas por el usuario. Valida esas
credenciales.
Autorizacin: Dada una credencial autenticada, determinar los derechos de acceso a
los recursos. Los accesos pueden ser dados o denegados a un usuario en particular o
basado en un rol
AUTENTICACIN
Basado en Windows:
o La solicitud de la pgina pasa por IIS. Si IIS valida exitosamente la
credencial, entonces se devuelve la pgina solicitada.

Basado en Formularios (el que se desarrolla en este tema)


o Las solicitudes no autenticadas son redireccionadas a un formulario de
login. Despus de validar la credencial se enva al cliente una cookie de
autenticacin

Basado en Microsoft Passport


o Servicio de autenticacin centralizado. Passport es un Web Service.

Para activar un servicio de autenticacin de ASP .NET, debes configurar el elemento


<authentication> en el archivo de configuracin de la aplicacin. Este elemento puede
tomar cualquiera de los valores listados en la siguiente tabla:
Valor

Descripcin

None

Ningn servicio de autenticacin ASP .NET esta activo. Observad que el


servicio de autenticacin de IIS puede estar todava presente.

Windows

Los servicios de autenticacin de ASP .NET adjuntan un


WindowsPrincipal (System.Security.Principal.WindowsPrincipal) a la
peticin actual para permitir la autorizacin contra grupos o usuarios de
NT

Forms

Los servicios de autenticacin de ASP.NET gestionan las cookies y


redireccionan a los usuarios no autenticados a una pgina de registro.
Esto a menudo se usa conjuntamente con la opcin del IIS de permitir
acceso annimo a la aplicacin.

Passport

Los servicios de autenticacin de ASP.NET proporcionan un formato

Tema 4 / Pgina 1

Gestin de una aplicacin completa con .NET


Servicio de Informtica

conveniente alrededor del servicio ofrecido por el Passport SDK, el cual


debe estar instalado en la mquina.
Por ejemplo, el siguiente archivo de configuracin permite autenticacin basada en
formularios (cookies) para una aplicacin:
<configuration>
<system.web>
<authentication mode="Forms"/>
</system.web>
</configuration>

Mtodo
Basado en
Windows
Basado en
Formularios

Microsoft
Passport

Ventajas



Usa la infraestructura de
Windows
Control de acceso a
informacin crtica

Desventajas


No apropiado para la
mayora de las aplicac.
Web




Bueno para aplicac. Web


Soporta a todos los tipos de
clientes

Est basada en cookies

Un solo login para muchos


sitios Web
No se necesita guardar info del
usuario en BD




Est basado en cookies


Tiene un costo
econmico

Tema 4 / Pgina 2

Gestin de una aplicacin completa con .NET


Servicio de Informtica

2.

AUTENTICACIN BASADA EN FORMULARIOS


(teoria)

La autenticacin basada en formularios es un servicio de autenticacin de ASP .NET


que permite a las aplicaciones proporcionar su propia Interfaz de Usuario para el inicio
de sesin y hacer su propia verificacin de credenciales.
ASP .NET autentica usuarios,
usuarios, redirecciona usarios no autenticados a la pgina de
inicio de sesin y ejecuta toda la administracin de cookies necesaria. Este tipo de
autenticacin es una tcnica muy popular usada en muchos sitios web.
Para que una aplicacin utilice autenticacin
basada en formularios, tendremos que fijar el
valor de <authentication> a Forms,
Forms y denegar
el acceso a usuarios annimos. El siguiente
ejemplo muestra cmo puede realizarse esto
en el fichero Web.config para la aplicacin
deseada:

<configuration>
<system.web>
<authentication mode="Forms"/>
mode="Forms"
<authorization>
<deny
deny users="?" />
</authorization>
</system.web>
</configuration>

Los administradores usaremos la autenticacin basada en formularios para configurar


el nombre de la cookie a utilizar, el tipo de proteccin, la URL de la pgina de login,
tiempo de vida de la cookie y la ruta a utilizar para la cookie emitida.
La siguiente
nte tabla muestra los atributos vlidos para los elementos <Forms>, el cual es
un subelemento de <authentication>, mostrado en el siguiente ejemplo:
ejemplo

Tema 4 / Pgina 3

Gestin de una aplicacin completa con .NET


Servicio de Informtica

<authentication mode="Forms">
<forms
name=".ASPXCOOKIEDEMO"
loginUrl="login.aspx"
defaultUrl="default.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="true"
enableCrossAppRedirects="false"
cookieless="UseDeviceProfile"
domain="">
</forms>
</authentication>
(La tabla completa est en http://msdn.microsoft.com/es-es/library/1d3t3c61.aspx)
Atributo

Descripcin

Cookieless

Los formularios de autenticacin de ASP.NET 2.0 pueden almacenar


los tickets de autenticacin de los formularios con o sin la
representacin en la URL de una cookie. El valor por defecto de
UseDeviceProfile indica que ASP .NET determina dnde almacenar el
ticket basado en el perfil del navegador pre-calculado.

cookieless=

"[UseUri |
UseCookies | La opcin de AutoDetect hace que ASP.NET determine dinmicamente
AutoDetect | si el navegador soporta cookies o no.
UseDevicePr
ofile]"
UseUri y UseCookies fuerza el uso de tickets sin y con cookies,
respectivamente.
UseUri modifica la url a algo como:
http://localhost:60194/tema8/%28F%283CIW7kVWVrwCYQBuAG8Abg
BpAG0AbwAAANsh2gLch8sBAdtVvDPgh8sBAAAvAAAA0%29%29/De
fault.aspx
defaultUrl

URL por defecto a la que la peticin es redireccionada despus de un


ingreso vlido. Este valor se usa si no existe una URL de redireccin
en la Autenticacin por Formularios.

domain

Domain en la HttpCookie que contiene los tickets del formulario de


autenticacin.
Configurar este atributo explcitamente permite a las aplicaciones
compartir la misma cookie siempre que las aplicaciones compartan una
porcin comn de un espacio de nombres de DNS (ej: appA.ua.es y
appB.ua.es podran compartir una cookie si el domain attribute tiene el
valor "ua.es").

enableCross
AppRedirect
s

Los formularios de autenticacin de ASP.NET 2.0 permiten enviar los


tickets de autenticacin del formulario entre aplicaciones tanto en una
variable cadena-peticin como en una variable POST de formulario.

Tema 4 / Pgina 4

Gestin de una aplicacin completa con .NET


Servicio de Informtica

Poner este atributo a true permite al FormsAuthenticationModule


extraer el ticket tanto de una cadena-peticin como de una variable
POST de formulario.
loginUrl

Especifica la URL a la cual la peticin es redireccionada para usuarios


no autenticados.

name

Nombre de la cookie HTTP a usar para propsitos de autenticacin.

path

Ruta que usa la cookie emitida. El valor por defecto es /

Protection

Mtodo usado para proteger los datos de las cookies. Por defecto es
All que usa validacin + encriptacin.

protection=
"[All|None|
Encryption|V
alidation]"
Si el valor est a true, la Autenticacin por Formularios configura el bit
de seguridad en la cookie del formulario de autenticacin. Los
navegadores conformistas slo devolvern la cookie a ASP .NET a
travs de una conexion SSL.
Si el valor est a true, los Formularios de Autenticacin actualizarn
slidingExpirat
peridicamente el tiempo de vida para los tickets del formuario de
ion
autenticacin. Esto ocurre independientemente de si el ticket est o no
contenido en una cookie, o en los formatos sin cookie en la URL.
Cantidad de tiempo en minutos enteros, despus del cual la cookie
timeout
expira. El valor por defecto es 30.
requireSSL

Tema 4 / Pgina 5

Gestin de una aplicacin completa con .NET


Servicio de Informtica

3.

AUTENTICACIN BASADA EN FORMULARIOS


(prctica)

Escribimos esto en nuestro web.config:


<configuration>
<system.web>
...
<authentication mode="Forms" >
<forms
name = "ejemplo"
loginUrl ="login.aspx"
defaultUrl ="default.aspx"></forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
...

</configuration>
</system.web>
Ahora debemos montar dos pginas aspx: Login y default.aspx.
Login.aspx debera tener un formulario. Pero por sencillez vamos a poner un botn
que al hacer click haga:
protected void Boton_Click(object sender, EventArgs e)
{
FormsAuthentication.RedirectFromLoginPage("anonimo", true);
}

Donde annimo es un string nombre del usuario. True es la contestacin a si


queremos crear una cookie persistente, es decir, si queremos que el sistema nos
recuerde. El nombre de la cookie ser ejemplo (definido en web.config).
Ahora creamos default.aspx con un botn de salir y cerrar la sesin.
protected void Boton_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect("Login.aspx");
}

Ahora si queremos ir a default.aspx, antes tendremos que pasar por login.aspx. Al


logarnos (simplemente haciendo click) generamos esta cookie:

Tema 4 / Pgina 6

Gestin de una aplicacin completa con .NET


Servicio de Informtica

(Hoy es 18 de nov y son las 21:07)


Para poder estudiar todos los mtodos y propiedades de FormsAuthentication
debemos ir a http://msdn.microsoft.com/eses/library/system.web.security.formsauthentication_members%28v=VS.80%29.aspx

Otro sistema que se puede usar es en nuestro web.config:


<configuration>
<system.web>
...
<authentication mode="Forms" >
<forms
name = "ejemplo"
loginUrl ="login.aspx"
defaultUrl ="default.aspx"></forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
...

</configuration>
</system.web>
Ahora cualquiera se puede pasear por nuestro sitio web.
Para evitarlo contamos un login.aspx con un botn (a reemplazar por un formulario)
protected void Boton_Click(object sender, EventArgs e)
{
FormsAuthentication.SetAuthCookie("anonimo", true);
Response.Redirect("Default.aspx");
}

Y en las pginas donde slo tengan acceso los autentificados (en este caso
defautl.aspx), debemos poner:
protected void Pre_Init(object sender, EventArgs e)

Tema 4 / Pgina 7

Gestin de una aplicacin completa con .NET


Servicio de Informtica

{
if (!User.Identity.IsAuthenticated)
Response.Redirect("Login.aspx");
}

4.

UTILIZANDO LOS CONTROLES DE INICIO DE


SESIN Y LA CLASE LDAP.

Login:
El control Login es el control de inicio de sesin ms simple y soporta las situaciones
ms comunes; identificarse utilizando un nombre de usuario y una contrasea. El
control incluye los cuadros de texto usuario y contrasea y una casilla de verificacin
para los usuarios que deseen comprometer la seguridad de la contrasea
almacenndola en la mquina. El control expone propiedades a travs de las cuales
puede cambiar el texto y la apariencia del control.
Tambin puede agregar vnculos para administrar el registro o la recuperacin de
contrasea.
El control Login interacta de forma predeterminada con el componente miembro
ASP.NET para la autenticacin.
Usando el login con la clase LDap:
1.- Creamos el control login.
2.- Aadimos la clase claseLDap como referencia.
3.- En eventos controlamos el authenticate

Tema 4 / Pgina 8

Gestin de una aplicacin completa con .NET


Servicio de Informtica

Y el cdigo de authenticate sera algo como:


protected void Login1_Authenticate(object sender,
AuthenticateEventArgs e)
{
ClaseLDAP ldap = new ClaseLDAP();
if (ldap.Validar(Login1.UserName, Login1.Password))
FormsAuthentication.RedirectFromLoginPage(Login1.UserName,
Login1.RememberMeSet);
}

LoginView:
Es til para administrar el contenido que muestra para los usuarios autenticados y para
los no autenticados. LoginView muestra el estado del inicio de sesin a travs de
mostrar las plantillas AnonymousTemplate y LoggedlnTemplate. El control muestra
una plantilla diferente dependiendo del estado del usuario.
1.- Arrastro en modo diseo el LoginView.

2.- Arrastro en la caja sealada con un crculo un control Login.

3.- En la parte marcada sealo la vista LoggedInTemplate.


Colocamos un botn con el texto Log Out.

Tema 4 / Pgina 9

Gestin de una aplicacin completa con .NET


Servicio de Informtica

Ahora el cdigo podra ser algo como:


protected void Login1_Authenticate(object sender,
AuthenticateEventArgs e)
{
Login miLogin = (Login)sender;
ClaseLDAP ldap = new ClaseLDAP();
if (ldap.Validar(miLogin.UserName, miLogin.Password))
FormsAuthentication.RedirectFromLoginPage(miLogin.UserName,
miLogin.RememberMeSet);
}

LoginStatus:
Muestra si el usuario ha iniciado sesin o no. A los usuarios que no han iniciado sesin
se les pide que lo hagan, y a los usuarios que han iniciado sesin se les pide que
cierren la sesin.
Recuerdo que por cdigo usamos User.Identity.IsAuthenticated para saber si el
usuario
est
identificado.
Y
para
cerrar
la
sesin
usamos
FormsAuthentication.SignOut()

LoginName:
El control LoginName muestra el nombre de inicio de sesin del usuario.
Por cdigo podemos usar User.Identity.Name

Otros controles que no vamos a usar por culpa del LDAP:


PasswordRecovery:
Soporta la funcin de los sitios Web que consiste en enviar contraseas a los clientes
cuando las olvidan. Recopila el nombre de la cuenta del usuario y despus contina
con una pregunta de seguridad (siempre y cuando esta funcin este configurada
correctamente). El control enva la contrasea por correo electrnico o crea una
nueva.
ChangePassword:
Proporciona a los usuarios la opcin de cambiar sus contraseas. Un usuario
autenticado puede cambiar su contrasea proporcionando la contrasea original y la
nueva (junto con confirmacin de la contrasea nueva).
CreateUserWizard:
Recopila informacin de los usuarios para que pueda configurar una cuenta miembro
de ASP.NET para cada usuario. El control recopila un nombre de usuario, una

Tema 4 / Pgina 10

Gestin de una aplicacin completa con .NET


Servicio de Informtica

contrasea, direccin de correo electrnico, una pregunta de seguridad y una


respuesta pregunta de seguridad.

5.

EN INTERNET.

Manual sobre autenticacin y autorizacin


http://www.es-asp.net/tutoriales-asp-net/tutorial-61-118/autenticacion-yautorizacion.aspx
http://www.es-asp.net/tutoriales-asp-net/tutorial-61-119/utilizando-los-controles-deinicio-de-sesion.aspx
Diferencia entre Request.IsAuthenticated y User.Identity.IsAuthenticated.
http://es.efreedom.com/Question/1-1379566/Cual-es-la-diferencia-entre-HttpContextCurrent-Request-IsAuthenticated-y-HttpContext-Current-User-Identity-IsAuthenticated
Sobre Microsoft Passport
https://accountservices.passport.net/ppnetworkhome.srf?vv=900&mkt=ES-ES&lc=3082
Para poder estudiar todos los mtodos y propiedades de FormsAuthentication:
http://msdn.microsoft.com/eses/library/system.web.security.formsauthentication_members%28v=VS.80%29.aspx
Atributos vlidos para los elementos <Forms>
http://msdn.microsoft.com/es-es/library/1d3t3c61.aspx

Tema 4 / Pgina 11

Gestin de una aplicacin completa con .NET


Servicio de Informtica

6.

EJERCICIO.

LOGIN.ASPX
Se pide un control de LoginView que:
1.- cuando sea annimo nos d un control Login. Este ocupar el 100% del espacio
de la plantilla. Tiene un cellspacing de 10 de cellpading de 10. El color del fondo de la
cabecera es #30424A
La identificacin la har con la clase LDAP.
En el cuadro de avisos aparecer lo que nos hemos rellenado de forma incorrecta.
Si al identificarte no lo consigues aparecer el siguiente mensaje: Su usuario /
contrasea no son correctos. Por favor contacte con "Servicio de Informtica"

En cuanto se identifique ir a la pgina del ejercicio anterior. El tema ser de color


rojo.

En la parte sealada vendr el nombre del usuario que se ha identificado.


Al pulsar en salir, primero se abandona la sesin y luego nos enviar a la pgina de
login.aspx.

Tema 4 / Pgina 12

Gestin de una aplicacin completa con .NET


Servicio de Informtica

2.- Cuando se est identificado el LoginView nos mostrar:

Finalizar sesin adems de finalizarla recargar la pgina de login.aspx.


DEFAULT.ASPX
Y si intentamos ir a la pgina principal del curso sin identificarte?

Observa cmo ha desaparecido la columna de editar y el botn de nuevo. Salir sigue


llevndonos a www.ua.es. Aparece el texto Usuario desconocido.
Consideraremos el idioma.

Tema 4 / Pgina 13

También podría gustarte