Title: Seguridad en ASP'NET
1Seguridad en ASP.NET
danielL_at_vemn.com.ar
2Agenda
- Como trabaja ASP.NET ?
- Tipos de Autenticación
- Seguridad en WebServices
- Alternativas
- SSL
- Con Autenticación Windows
- Con Cerfiticados
3Conceptos
- Impersonalizacion
- Autenticacion
- Autorizacion
4Esquema de Seguridad de ASP.NET
5Identidad del Proceso
- El filtro ISAPI
- Aspnet_isapi.dll
- Aspnet_wp.exe
- El proceso que ejecuta los request
- El usuario por defecto es Machine
- Puede también correr con la cuenta ASP.NET o la
cuenta configurada en ltprocessModelgt - ltprocessModel enable"true" timeout"Infinite"
....userName"MACHINE" password"AutoGenerate"
..../gt
6Servicios de Seguridad
- Autenticación y autorización en ASP.NET
- Extensible y personalizable
- Esquema de Autenticación transparente
- Modelo simple de desarrollo
- Soporte para autorizaciones granulares
- Usa CLR Evidence-Based Security
- Suporta seguridad a nivel de aplicación
7Indentidad del Request
- Impersonalización
- Se ejecuta con el contexto de seguridad de la
entidad que hace el Request - Configurable en ASP.NET
- Habilitado para compatibilidad con el
comportamiento de ASP
ltsystem.webgt ltidentity impersonate"true"
/gt lt/system.webgt
8Autenticación
- ASP.NET es una extensión ISAPI
- Solo recibe pedidos para contenido que tenga un
mapeo - Windows Authentication (vÃa IIS)
- Basic, Digest, NTLM, Kerberos, IIS Certificate
- Autenticación basada en Formularios (Cookie)
- Verificación de credencial a nivel de Aplicación
- Soporta Microsoft Passport
- Autenticación Personalizada
- Tiene un modelo simple de desarrollo
9Configuración - Aplicaciones
- Control administrativo sobre la configuración
- Usado para forzar polÃticas de seguridad o
restricciones en el comportamiento de una
aplicación
ltlocation path"site1/application1"
allowOverride"false"gt ltsystem.webgt
ltidentity impersonate"true"/gt
lt/system.webgt lt/locationgt
10Autorización por URL
- Ejemplo permite Admins o WebServiceUsers y
deniega todos los otros usuarios - Ejemplo no permite usuarios anónimos
lt!-- is all users, ? is anonymous users
--gt ltauthorizationgt ltallow verbs"POST"
Roles"Admins" /gt ltallow Roles"WebServiceUsers"
/gt ltdeny users"" /gt lt/authorizationgt
ltauthorizationgt ltdeny users"?"
/gt lt/authorizationgt
11Microsoft Passport
- Un solo ingreso a través de múltiples sitios
- Servicio de perfil de usuario
- Integrado dentro de la autenticación de ASP .NET
- Requiere la instalación del Passport SDK
- ASP .NET envuelve IPassportManager,
IPassportManager2, IPassportCrypt interfaces - Mas detalles en http//www.passport.com
12Autenticación basada en Formularios
- Fácil de implementar
- ASP .NET provee redirección
- Pasos
- Configure IIS para que permita usuarios anónimos
(tÃpicamente) - Use SSL!
- Configure ASP.NET con autenticación por cookie
- Escriba su página de Login
13Autenticación con formularios como trabaja
Web Browser
14Autenticación basada en Formularios
ltauthentication mode "Forms"gt ltforms
name".ASPXAUTH" loginUrl"login.aspx
" protection"all"
timeout"30" path"/"
/gt lt/authenticationgt
15Autenticaciónpor Formularios - Configuración
- Sección ltmachineKeygt
- Configura claves separadas para aislar
aplicaciones
ltmachineKey validationKey"autogenerate"
decryptionKey"autogenerate"
validation"SHA1"/gt
16Controlando los Request
17Proceso de Request en ASP.NET
ASP.NET Page
ASP.NET Service
HTTP Handler
Application
HTTP Module
Http Context
HTTP Module
Global.asax
.NET Code
ASP.NET Runtime
Host (IIS)
Native Code
18Eventos por Request
- Eventos por Request (en orden)
- Application_BeginRequest
- Application_AuthenticateRequest
- Application_AuthorizeRequest
- Application_ResolveRequestCache
- Application_AcquireRequestState
- Application_PreRequestHandlerExecute
- ltlos handler se ejecutan aquÃgt
- Application_PostRequestHandlerExecute
- Application_ReleaseRequestState
- Application_UpdateRequestCache
- Application_EndRequest
19Autenticación Personalizada
- Evento Handle AuthenticateRequest
- Nivel de Aplicación (global.asax) o
- Http Module (implementar IHttpModule)
- Escenarios
- Autenticación SOAP personalizada
- Ej., la aplicación define esquemas basado en los
headers de SOAP - Autenticación de formularios para dispositivos
móviles que no tienen cookies.
20Autorización Web Personalizada
- Maneja el evento AuthorizeRequest
- A nivel de aplicación (global.asax) o
- Http Module (implementar IHttpModule)
- Escenarios
- Implementar un sistema pago por request
- Restringir el acceso basado en reglas del negocio
- Restringir el acceso basado en comportamientos
variables (Ej., lÃmite de acceso por dÃa,, etc.).
21Roles personalizados
- Maneja el evento authentication
- Reemplace HttpContext.User con un objeto
personalizado de IPrincipal o GenericPrincipal
public void WindowsAuthentication_OnAuthenticate(
Object src, WindowsAuthenticationEvent e)
// reemplace HttpContext Principal
e.Context.User new MyPrincipal(e.Identity)
22Verificando la Identidad de un Thread
lt_at_ Import Namespace"System.Security.Principal"
gt WindowsIdentity curr curr
WindowsIdentity.GetCurrent()
23Seguridad de Acceso por Código
- Las aplicaciones Web pueden configurarse con
diferentes grados de confianza - Trust setting determina los permisos
- Ej
- Full trust las aplicaciones pueden usar todos
los recursos (sujeto a las restricciones de SO) - Low trust acceso limitado, acceso a archivos de
solo-lectura desde el directorio de la
aplicación, conectividad de red limitada, etc.
24Configuración - Trust
ltlocation path"site1/application1"
allowoverride"false"gt ltsystem.webgt
lttrust level"High" originUrl"http//www.foo.co
m"/gt lt/system.webgt lt/locationgt
25Seguridad en WebServices
- Pasando Usuario y Clave en el método
- Generando una clave de sesión
- Autenticando por windows
- SoapHeaders
26Recursos - Seguridad
- Nota http//www.microsoft.com/spain/msdn/articulo
s/archivo/261001/voices/authaspdotnet.asp - Cambios en la Versión 1 de Seguridad
http//msdn.microsoft.com/library/default.asp?url
/library/en-us/dnnetsec/html/v1securitychanges.asp
- Seguridad .NET en MSDN http//msdn.microsoft.com/
library/default.asp?url/nhp/Default.asp?contentid
28001369
27Preguntas ?
28Muchas GraciasPor su participación !!
danielL_at_vemn.com.ar