seguridad en asp.net daniel laco daniell@vemn.com.ar

Post on 03-Feb-2015

13 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Seguridad en ASP.NET

Daniel LacodanielL@vemn.com.ar

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

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>

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

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

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 voidWindowsAuthentication_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/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

Preguntas ?

Muchas GraciasPor su participación !!

Daniel LacoDaniel LacodanielL@vemn.com.ar

top related