Seguridad en ASP.NET
Daniel Laco
[email protected]
Agenda
• Como trabaja ASP.NET ?
• Tipos de Autenticación
• Seguridad en WebServices
– Alternativas
• SSL
• Con Autenticación Windows
• Con Cerfiticados
Conceptos
• Impersonalización
• Autenticación
• Autorización
Esquema de Seguridad de ASP.NET
Identidad 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 <processModel>
<processModel enable="true" timeout="Infinite"
....userName="MACHINE"
password="AutoGenerate" ..../>
Servicios 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
• Soporta seguridad a nivel de aplicación
Indentidad 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
<system.web>
<identity impersonate="true" />
</system.web>
Autenticació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
Configuración - Aplicaciones
• Control administrativo sobre la configuración
• Usado para forzar políticas de seguridad o
restricciones en el comportamiento de una
aplicación
<location path="site1/application1"
allowOverride="false">
<system.web>
<identity impersonate="true"/>
</system.web>
</location>
Autorización por URL
• Ejemplo: permite “Admins” o
“WebServiceUsers” y deniega todos los otros
usuarios
<!-- * is all users, ? is anonymous users -->
<authorization>
<allow verbs="POST" Roles="Admins" />
<allow Roles="WebServiceUsers"/>
<deny users="*" />
</authorization>
• Ejemplo: no permite usuarios anónimos
<authorization>
<deny users="?" />
</authorization>
Microsoft 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
• Mas detalles en http://www.passport.com
Autenticació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
Autenticación basada en Formularios
<authentication mode= "Forms">
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
protection="all"
timeout="30"
path="/"
/>
</authentication>
Controlando los Request
• HTTPHandlers
• HTTPModules
Proceso de Request en ASP.NET
ASP.NET ASP.NET
Page
Service
HTTP
Handler
Application
Http Context
HTTP Module
Global.asax
ASP.NET Runtime
Host (IIS)
Native Code .NET Code
HTTP Module
Autenticació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.
Autorizació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.).
Roles 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);
}
Seguridad 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.
Configuración - Trust
<location path="site1/application1"
allowoverride="false">
<system.web>
<trust level="High"
originUrl="http://www.foo.com"/>
</system.web>
</location>
Seguridad en WebServices
•
•
•
•
Pasando Usuario y Clave en el método
Generando una clave de sesión
Autenticando por windows
SoapHeaders
Recursos - Seguridad
• Nota:
http://www.microsoft.com/spain/msdn/articulos/arch
ivo/261001/voices/authaspdotnet.asp
• Cambios en la Versión 1 de Seguridad:
http://msdn.microsoft.com/library/default.asp?url=/l
ibrary/en-us/dnnetsec/html/v1securitychanges.asp
• Seguridad .NET en MSDN:
http://msdn.microsoft.com/library/default.asp?url=/
nhp/Default.asp?contentid=28001369
Preguntas ?
Muchas Gracias
Por su participación !!
Daniel Laco
[email protected]
Descargar

Presentación de PowerPoint