marcos de desarrollo -...

26
Marcos de Desarrollo Diseño e implementación de aplicaciones Web con .NET

Upload: phungnhan

Post on 06-Oct-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Marcos de DesarrolloDiseño e implementación de aplicaciones Web con .NET

Objetivos

Saber implementar autenticación basada en formularios en aplicaciones Web ASP.NET

Saber restringir el acceso a recursos de la aplicación Web a usuarios no autenticados

Definiciones Autenticación: proceso mediante el cual se comprueba

que el usuario final es quien dice ser El usuario debe especificar ciertas credenciales (normalmente

un nombre de usuario y una contraseña) cuya validez se puede comprobar consultando una lista de datos conocidos. Si las credenciales son correctas, se autentica al usuario; de lo contrario, no se le autentica

Autorización: proceso que consiste en determinar lo que el usuario puede y no puede hacer en la aplicación Se realiza una vez que se ha autenticado al usuario

También se conoce como "control de acceso"

AutenticaciónDiseño e implementación de aplicaciones Web con .NET

Autenticación Niveles:

Internet Information Server (IIS)

ASP.NET

Configurable desde web.config

Métodos de autenticación de IIS

Autenticación Internet Information Server (IIS) En IIS, se pueden seleccionar los distintos modos de

autenticación: Anónimo

El servidor no realiza autenticación (es la opción que usaremos) Control de autenticación se delega en ASP.NET

Básica Usuario y contraseña en claro

Digest Envía un hash de la contraseña

Certificados Digitales El cliente necesita un certificado digital

Integrada Se usan las credenciales de la cuenta de Windows (en donde reside el

IIS)

Autenticación ASP.NET Modos de autenticación

None No se realiza autenticación

Acceso anónimo permitido a toda la aplicación Web

Windows Delega autenticación en IIS (y se utilizaría el mecanismo

seleccionado en IIS)

Es el valor predeterminado

Forms Autenticación basada en formularios (la que utilizaremos)

Passport Autenticación a través del servicio Web MS Passport

Autenticación basada en formularios (forms) Solución flexible: se integra fácilmente con la aplicación Web

Es necesario indicarle a ASP.NET a dónde debe redirigir al usuario en caso de que éste solicite acceso a un recurso protegido. Normalmente se redirige a la página que contiene el formulario para introducir las credenciales de usuario

Una vez el usuario proporciona sus credenciales, es necesario realizar el proceso de validación ASP.NET proporciona mecanismos de validación, pero también se

pueden programar mecanismos propios (e.g. MiniPortal)

Si la validación es correcta, se genera un ticket de autenticación (authentication ticket) y se almacena en una cookie

Autenticación basada en formularios (forms)

IIS ASP.NET

No existe cookie

Usuario

Password

Submit

Cookie

Página

protegida

Existe cookie

loginForm.aspx

Autenticación basada en formularios (forms)

Configuración

En IIS: Establecer método de autenticación como "acceso anónimo"

En Web.config<configuration>

<system.web>

<authentication mode="Forms">

<forms

name=".ASPXAUTH"

loginUrl="/Authentication.aspx"

timeout="30"

path="/"

defaultUrl="/MainPage.aspx"

cookieless="AutoDetect" />

</authentication>

</system.web>

</configuration>

nombre de la cookie de autenticación

URL a la que debe redirigirse la

solicitud de inicio de sesión, si no se

encuentra ninguna cookie de

autenticación válida

minutos de vigencia de la cookie

Autenticación basada en formularios (forms)

Configuración

Establecer autenticación IIS como anónima

En Web.config<configuration>

<system.web>

<authentication mode="Forms">

<forms

name=".ASPXAUTH"

loginUrl="/Authentication.aspx"

timeout="30"

path="/"

defaultUrl="/MainPage.aspx"

cookieless="AutoDetect" />

</authentication>

</system.web>

</configuration>

URL a la que se redirige tras la

autenticación, si se había solicitado

loginUrl.

Si se había solicitado un recurso

protegido, se redirige

automáticamente a él.

ruta de acceso de las cookies

emitidas por la aplicación (se

recomienda "/")

UseUri | UseCookies | AutoDetect

Autenticación basada en formularios (forms) El proceso de validar la identidad de un usuario (autenticación) puede

realizarse:

a) Utilizando el método Authenticate de la clase System.Web.Security.FormsAuthentication

b) Utilizando un método propio

c) Utilizando las clases del API Membership

Incluye funcionalidades implementadas para registro de usuarios, cambio de contraseña, recuperación de contraseña, etc.

Por sencillez, y para comprender mejor el proceso, aquí utilizaremos la opción b)

En una aplicación "real" se recomienda la opción c)

Autenticación basada en formularios (forms)a) Utilizando el método de la clase

System.Web.Security.FormsAuthentication:

Valida contra el archivo Web.config

<authentication mode="Forms"><forms

loginUrl="~/SignIn.aspx" name=".ASPXAUTH" path="/" defaultUrl="~/Default.aspx">

<credentials passwordFormat="Clear"><user name="testUser1" password="testPass1"/><user name="testUser2" password="testPass2"/>

</credentials>

</forms></authentication>

public static bool Authenticate(string name, string password);

Autenticación basada en formularios (forms)b) Utilizando un método propio:

Por ejemplo, Login(String loginName, StringclearPassword), que comprueba las credenciales contra una base de datos

Autenticación basada en formularios (forms)

Tanto si utilizamos el método a) como si utilizamos el b), una vez hemos determinado que el usuario está autenticado, debemos indicarlo a la aplicación ASP.NET

Es necesario generar un ticket de autenticación

Se hace con métodos de la clase FormsAuthentication

Existen varias opciones

Métodos de FormsAuthentication (1)

No realiza el proceso de validación. Supone que las credenciales de userName han sido comprobadas y son válidas

Marca al usuario userName como "autenticado"

Genera un ticket de autenticación en forma de cookie Si createPersistentCookie es false, se crea una cookie

temporal (sólo se almacena en la memoria del navegador)

Si es true, se crea una cookie persistente, que se almacena en el ordenador del cliente

public static void RedirectFromLoginPage(string userName, bool createPersistentCookie);

Métodos de FormsAuthentication (2) Redirige automáticamente a la página solicitada (si se

había solicitado una página protegida) o a defaultURL(si se había accedido al formulario de login -loginURL)

defaultURL y loginURL se establecen en Web.config

Métodos de FormsAuthentication (3)

No realiza el proceso de validación. Supone que las credenciales de userName han sido comprobadas y son válidas

Crea una cookie de autenticación para userName y la añade a la response

No redirige a ninguna página

public static void SetAuthCookie(string userName, bool createPersistentCookie);

Métodos de FormsAuthentication (4)

No realiza el proceso de validación. Supone que las credenciales de userName han sido comprobadas y son válidas

Crea una cookie de autenticación para userName, pero no la añade a la response

No redirige a ninguna página

public static HttpCookie GetAuthCookie(string userName, bool createPersistentCookie);

Métodos de FormsAuthentication (y 5)

Borra el ticket de autenticación

public static void SignOut();

AutorizaciónDiseño e implementación de aplicaciones Web con .NET

Autorización Es posible controlar de forma declarativa a qué

recursos del sitio Web tienen acceso los usuarios Se configura en el Web.config

e.g. Se deniega el acceso a los usuario anónimos (sólo se permite acceso al sitio Web a los usuarios autenticados)

Comodines * : todos los usuarios

? : Usuarios anónimos

<authorization>

<deny users= "?" />

</authorization>

Autorización Es posible definir control de acceso para recursos

específicos, mediante una sección <location>

e.g. se concede permiso de acceso a la página Register.aspx a todos los usuarios

<location path="Register.aspx"><system.web>

<authorization><allow users ="*" />

</authorization></system.web>

</location>

Autorización Política restrictiva:

"Todo lo que no está expresamente permitido, está prohibido" Primero se deniega el acceso a todos los usuarios anónimos

<deny users ="?" />

Luego se da acceso a los recursos que no necesitan autenticación

Política permisiva: "Todo lo que no está expresamente prohibido, está permitido" Primero se permite el acceso a todos los recursos

<allow users ="*" />

Luego se indican aquellos recursos que necesitan autenticación

Bibliografía Recomendada:

M. MacDonald, A. Freeman, M. Szpuszta. Pro ASP.Net4 in C# 2010. 4th Ed. Apress. 2010.