seguridad en asp.net daniel laco [email protected]

25

Upload: aracely-olivera

Post on 03-Feb-2015

13 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar
Page 2: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Seguridad en ASP.NET

Daniel [email protected]

Page 3: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Agenda

• Como trabaja ASP.NET ?

• Tipos de Autenticación

• Seguridad en WebServices– Alternativas

• SSL

• Con Autenticación Windows

• Con Cerfiticados

Page 4: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Conceptos

• Impersonalización

• Autenticación

• Autorización

Page 5: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Esquema de Seguridad de ASP.NET

Page 6: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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" ..../>

Page 7: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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

Page 8: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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><system.web> <identity impersonate="true" /><identity impersonate="true" /></system.web></system.web>

Page 9: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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

Page 10: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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=<location path=""site1/application1site1/application1"" allowOverride=allowOverride=""falsefalse"">> <system.web><system.web> <identity impersonate=<identity impersonate=""truetrue""/>/> </system.web> </system.web> </location></location>

Page 11: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Autorización por URL

• Ejemplo: permite “Admins” o “WebServiceUsers” y deniega todos los otros usuarios

• Ejemplo: no permite usuarios anónimos

<!-- * is all users, ? is anonymous users --><!-- * is all users, ? is anonymous users --><authorization><authorization> <allow verbs="POST" Roles="Admins" /><allow verbs="POST" Roles="Admins" /> <allow Roles="WebServiceUsers"/><allow Roles="WebServiceUsers"/> <deny users="*" /><deny users="*" /></authorization></authorization>

<authorization><authorization> <deny users="?" /><deny users="?" /></authorization></authorization>

Page 12: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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

Page 13: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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

Page 14: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Autenticación basada en Formularios

<authentication mode= "Forms"> <forms

name=".ASPXAUTH" loginUrl="login.aspx" protection="all" timeout="30" path="/"

/></authentication>

Page 15: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Controlando los Request

• HTTPHandlers

• HTTPModules

Page 16: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Proceso de Request en ASP.NET

Nat

ive

Co

de

.NE

T C

od

e

ApplicationApplication

Host (IIS)Host (IIS)

ASP.NETASP.NETPagePage

ASP.NET RuntimeASP.NET Runtime

ASP.NETASP.NETServiceService

HTTPHTTPHandlerHandler

HTTP ModuleHTTP Module

Global.asaxGlobal.asax

HTTP ModuleHTTP ModuleHttp Context

Page 17: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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.

Page 18: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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.).

Page 19: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Roles personalizados• Maneja el evento authentication

• Reemplace HttpContext.User con un objeto personalizado de IPrincipal o GenericPrincipal

public voidWindowsAuthentication_OnAuthenticate(

Object src,WindowsAuthenticationEvent e)

{ // reemplace HttpContext Principal e.Context.User = new MyPrincipal(e.Identity);}

Page 20: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

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.

Page 21: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Configuración - Trust

<location path="site1/application1" allowoverride="false"> <system.web> <trust level="High"

originUrl="http://www.foo.com"/> </system.web> </location>

Page 22: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Seguridad en WebServices

• Pasando Usuario y Clave en el método

• Generando una clave de sesión

• Autenticando por windows

• SoapHeaders

Page 23: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Recursos - Seguridad

• Nota: http://www.microsoft.com/spain/msdn/articulos/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

Page 24: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Preguntas ?

Page 25: Seguridad en ASP.NET Daniel Laco danielL@vemn.com.ar

Muchas GraciasPor su participación !!

Daniel LacoDaniel [email protected]