asegura webservices

of 30 /30
De la seguridad en Servicios Web para .Net Este escrito se centra en la seguridad de los servicios Web en el nivel de la plataforma, mediante las características subyacentes de IIS y ASP.NET. Para la seguridad de los mensajes, Microsoft está desarrollando el kit de desarrollo de servicios Web, que permite generar soluciones de seguridad conforme a la especificación WS-Security, que forma parte de la iniciativa Global XML Architecture (GXA). Contenido Modelo de seguridad para los servicios Web Arquitectura de seguridad para plataformas/transporte Estrategias de autenticación y autorización Configurar la seguridad Transmitir credenciales para la autenticación de servicios Web Transferir el llamador original Subsistema de confianza Obtener acceso a recursos del sistema Obtener acceso a recursos de red Obtener acceso a los objetos COM Utilizar certificados de cliente con los servicios Web Comunicación segura Resumen En este capítulo se describe cómo desarrollar y aplicar las técnicas de autenticación, autorización y comunicación seguras para proteger los servicios Web de ASP.NET y los mensajes de los servicios Web. También se describe la seguridad desde el punto de vista de los servicios Web y se explica cómo autenticar y autorizar los llamadores, además de cómo transferir el contexto de seguridad a través de los servicios Web. Encontrará también información, desde la perspectiva del cliente, para llamar a los servicios Web mediante credenciales y certificados para admitir la autenticación por parte del servidor. Modelo de seguridad para los servicios Web La seguridad de los servicios Web puede aplicarse en tres niveles distintos: Seguridad (de punto a punto) para plataformas/transporte Seguridad (personalizada) para aplicaciones

Author: arian-reyes-arrunategui

Post on 22-Jan-2015

883 views

Category:

Technology


0 download

Embed Size (px)

DESCRIPTION

Web services seguros

TRANSCRIPT

  • 1. De la seguridad en Servicios Web para .NetEste escrito se centra en la seguridad de los servicios Web en el nivel de la plataforma, mediante las caractersticas subyacentes de IIS y ASP.NET. Para la seguridad de los mensajes, Microsoft est desarrollando el kit de desarrollo de servicios Web, que permite generar soluciones de seguridad conforme a la especificacin WS-Security, que forma parte de la iniciativa Global XML Architecture (GXA).Contenido Modelo de seguridad para los servicios Web Arquitectura de seguridad para plataformas/transporte Estrategias de autenticacin y autorizacin Configurar la seguridad Transmitir credenciales para la autenticacin de servicios Web Transferir el llamador original Subsistema de confianza Obtener acceso a recursos del sistema Obtener acceso a recursos de red Obtener acceso a los objetos COM Utilizar certificados de cliente con los servicios Web Comunicacin segura Resumen En este captulo se describe cmo desarrollar y aplicar las tcnicas de autenticacin, autorizacin y comunicacin seguras para proteger los servicios Web de ASP.NET y los mensajes de los servicios Web. Tambin se describe la seguridad desde el punto de vista de los servicios Web y se explica cmo autenticar y autorizar los llamadores, adems de cmo transferir el contexto de seguridad a travs de los servicios Web. Encontrar tambin informacin, desde la perspectiva del cliente, para llamar a los servicios Web mediante credenciales y certificados para admitir la autenticacin por parte del servidor. Modelo de seguridad para los servicios Web La seguridad de los servicios Web puede aplicarse en tres niveles distintos: Seguridad (de punto a punto) para plataformas/transporte Seguridad (personalizada) para aplicaciones

2. Seguridad (de extremo a extremo) para mensajeraCada enfoque ofrece una serie de beneficios y desventajas, que se detallan a continuacin. La eleccin del enfoque depende en gran medida de las caractersticas de la arquitectura y las plataformas que vayan a utilizarse para el intercambio de los mensajes.Nota: tenga en cuenta que este captulo se centra en la seguridad de plataformas y aplicaciones. La seguridad de los mensajes se efecta mediante la iniciativa de arquitectura de servicios Web XML global (GXA) y, en especial, la especificacin de seguridad WS-Security. Durante el perodo de escritura de este documento, Microsoft ha lanzado una versin de tecnologa de prueba de Web Services Development Kit (WSDK). De este modo podr desarrollar soluciones de seguridad para mensajera conformes a la especificacin de seguridad WS- Security. Sideseaobtenerms informacin, consulte http://msdn.microsoft.com/webservices/building/wsdk/ (en ingls).Seguridad(de puntoapunto)para plataformas/transporte Puede utilizarse el canal de transporte entre dos puntos finales (cliente de servicios Web y servicios Web) para garantizar la seguridad de punto a punto. La ilustracin 10.1 refleja este escenario. {Insert figure: CH10 Web Services Security Transport Level.gif} Ilustracin 10.1 Seguridad para plataformas/transporte Cuando se utiliza la seguridad de plataformas, que presupone un entorno de sistema operativo Microsoft Windows estrechamente integrado, por ejemplo, en intranets corporativas: El servidor Web (IIS) proporciona autenticacin bsica, implcita, integrada y mediante certificados. El Servicio Web de ASP.NET hereda algunas funciones de autenticacin y autorizacin de ASP.NET. Puede utilizarse SSL y/o IPSec para aplicar capacidades de integridad y confidencialidad para los mensajes.Escenarios de uso El modelo de seguridad para transporte es sencillo, bien diseado y adecuado para una gran variedad de escenarios (bsicamente para intranets), en los que los 3. mecanismos de transporte y la configuracin del punto final pueden controlarse de forma exhaustiva. Los principales aspectos que deben tenerse en cuenta con relacin a la seguridad del transporte son los siguientes: La seguridad se integra estrechamente con la plataforma subyacente, el mecanismo de transporte y el proveedor de servicios de seguridad (NTLM, Kerberos, etc.), de los que tambin depende. La seguridad se aplica de punto a punto, sin crear provisiones para saltos mltiples ni enrutamiento a travs de nodos de aplicacin intermedios.Seguridad para aplicaciones Con este enfoque, la aplicacin se hace cargo de la seguridad y utiliza las funciones de seguridad personalizadas. Por ejemplo: Una aplicacin puede utilizar un encabezado SOAP personalizado para transferir las credenciales de usuario y autenticar al usuario con cada solicitud de Servicio Web. Un enfoque habitual consiste en transferir un vale (o nombre de usuario o licencia) con el encabezado SOAP. La aplicacin tiene la flexibilidad de generar su propio objeto IPrincipal con funciones incluidas. Puede ser una clase personalizada o la clase GenericPrincipal que se proporciona con .NET Framework. La aplicacin cifra de forma selectiva lo que sea necesario, aunque requiere un almacenamiento seguro de la clave y que los desarrolladores tengan conocimientos de las API de criptografa pertinentes. Una tcnica alternativa consiste en utilizar SSL para ofrecer confidencialidad e integridad, adems de combinar SSL con encabezados SOAP personalizados para llevar a cabo la autenticacin. Escenarios de uso Utilice este enfoque si: Desea aprovechar un esquema existente de base de datos de usuarios y funciones que se utiliza con la aplicacin actual. Desea cifrar partes de un mensaje en lugar de la cadena de datos completa.Seguridad (de extremo a extremo) para mensajera Se trata del enfoque ms flexible y eficaz y el que utiliza la iniciativa GXA, en especial para la especificacin de seguridad WS-Security. La seguridad de mensajes queda esbozada en la ilustracin 10.2. {Insert figure: CH10 - Web Services Security Message Level.gif} 4. Ilustracin 10.2 Seguridad de mensajes Las especificaciones de seguridad WS-Security describen las mejoras realizadas en la mensajera SOAP y que permiten disfrutar de integridad, confidencialidad y autenticacin para los mensajes. La autenticacin se obtiene mediante testigos de seguridad, que se transfieren en encabezados SOAP. La especificacin de seguridad WS-Security no requiere ningn tipo de testigo especfico. Los testigos de seguridad pueden incluir vales Kerberos, certificados X.509 o un testigo binario personalizado. La comunicacin segura se obtiene mediante firmas digitales que garantizan la integridad de los mensajes y el cifrado XML para la confidencialidad de los mensajes.Escenarios de uso La especificacin de seguridad WS-Security puede utilizarse para crear un marco de intercambio de mensajes seguros en un entorno de servicios Web heterogneo. Resulta idnea para entornos y escenarios heterogneos en los que no se detenta el control directo ni de la configuracin de los puntos finales ni de los nodos de aplicacin intermedios. Seguridad de mensajes: Puede ser independiente del transporte subyacente. Permite una arquitectura de seguridad heterognea. Proporciona seguridad de extremo a extremo y permite el enrutamiento de mensajes a travs de nodos de aplicacin intermedios. Admite varias tecnologas de cifrado. Admite el mtodo de no rechazo.Web Services Development Kit (WSDK) Web Services Development Kit ofrece las API necesarias para administrar la seguridad, adems de otros servicios tales como referencias de enrutamiento y de mensajes. Este kit cumple los estndares ms recientes de los servicios Web como la especificacin de seguridad WS-Security, lo cual permite la interoperabilidad con otros proveedores que aplican las mismas especificaciones. Ms informacin Para obtener las ltimas novedades acerca de Web Services Development Kit y la especificacin de seguridad WS-Security, consulte la pgina del centro de desarrolladores XML de MSDN en http://msdn.microsoft.com/webservices/ (en ingls). Para obtener ms informacin acerca de la especificacin de seguridad WS- Security, consulte la pgina de ndice de la especificacin de seguridad WS- Security en http://msdn.microsoft.com/webservices/default.asp?pull=/library/en- us/dnglobspec/html/wssecurspecindex.asp (en ingls). Para obtener ms informacin acerca de la arquitectura GXA, consulte el artculo quot;Understanding GXAquot; (en ingls) de MSDN. Para obtener acceso a las discusiones del tema, consulte el grupo de noticias de interoperabilidad GXA en MSDN. 5. Arquitectura de seguridad para plataformas/transporte La ilustracin 10.3 muestra la arquitectura de seguridad de la plataforma deservicios Web de ASP.NET. {Insert figure: CH10 - Web Services Security Architecture.gif} Ilustracin 10.3 Arquitectura de seguridad de servicios Web La ilustracin 10.3 muestra los mecanismos de autenticacin y autorizacin que incluyen los servicios Web de ASP.NET. Cuando un cliente llama a un servicio Web, se desencadena la siguiente secuencia de eventos de autenticacin y autorizacin:1. Se recibe la solicitud SOAP de la red. Dicha solicitud puede o no contener credenciales de autenticacin, lo que depende del tipo de autenticacin que se est utilizando.2. Opcionalmente, IIS autentica al llamador mediante la autenticacin bsica, implcita, integrada (NTLM o Kerberos) o mediante certificados. En entornos heterogneos en los que no es posible aplicar la autenticacin de IIS (Windows), IIS se configura para la autenticacin annima. En este escenario, el cliente puede autenticarse mediante atributos de los mensajes tales como vales transferidos a travs del encabezado SOAP.3. IIS tambin puede configurarse para que acepte solicitudes nicamente de los equipos cliente con unas direcciones IP especficas.4. IIS transfiere el testigo de acceso a Windows del llamador autenticado a ASP.NET (que puede ser el testigo de acceso del usuario de Internet annimo si se ha configurado el servicio Web para la autenticacin annima). 6. 5. ASP.NET autentica al llamador. Cuando ASP.NET se configura para laautenticacin de Windows, no se efecta ningn otro tipo de autenticacinadicional en esta etapa e IIS se limita a autenticar al llamador.En caso de utilizare un mtodo de autenticacin distinto de Windows, el modode autenticacin de ASP.NET se establece en ninguno a fin de permitir laautenticacin personalizada. Nota: la autenticacin mediante Formularios y la autenticacin de Passport noson compatibles con los servicios Web. 6. ASP.NET autoriza el acceso al servicio Web solicitado (archivo .asmx)mediante la autorizacin de direcciones URL y de archivos, que utilizan lospermisos NTFS asociados con el archivo .asmx para determinar si debeconcederse el acceso al llamador autenticado. Nota: la autorizacin de archivos slo es compatible para la autenticacin deWindows. A fin de disfrutar de una autorizacin de granularidad precisa, tambin puedenutilizarse las funciones .NET (mediante declaraciones o programacin) paragarantizar que el llamador reciba autorizacin para obtener acceso al recursosolicitado o para llevar a cabo la operacin solicitada. 7. El cdigo del servicio Web obtiene acceso a los recursos locales o remotosmediante una identidad determinada. De forma predeterminada, los serviciosWeb de ASP.NET no llevan a cabo ninguna suplantacin, por lo que es lacuenta de proceso ASP.NET configurada la que proporciona la identidad.Otras opciones alternativas incluyen la identidad del llamador original o unaidentidad de servicio configurada.Equipos selectores Los equipos selectores del servicio Web de ASP.NET son:IISSi se deshabilita la autenticacin annima de IIS, los servicios IIS slopermitirn solicitudes de usuarios autenticados.Restricciones de direccin IPIIS puede configurarse para que acepte solicitudes nicamente de equiposcon unas direcciones IP especficas. ASP.NETEl mdulo HTTP de autorizacin de archivos (exclusivamente para laautenticacin de Windows)El mdulo HTTP de autorizacin mediante direcciones URLPeticiones de permisos Principal y comprobaciones de funciones explcitasMs informacinPara obtener ms informacin acerca de los equipos selectores, consultequot;Equipos selectoresquot; en el captulo 8, quot;Seguridad de ASP.NETquot;.Para obtener ms informacin acerca de cmo configurar la seguridad,consulte el apartado quot;Configurar la seguridadquot; que figura ms adelante en estemismo captulo. 7. Estrategias de autenticacin y autorizacin En esta seccin se exponen las opciones de autorizacin (tanto configurables como programticas) disponibles para un conjunto de esquemas de autenticacin utilizados de forma habitual. Los esquemas de autenticacin que van a describirse se indican a continuacin: Autenticacin de Windows con suplantacin Autenticacin de Windows sin suplantacin Autenticacin de Windows con identidad fijaAutenticacin de Windows con suplantacin Los siguientes elementos de configuracin muestran cmo habilitar la autenticacin de Windows (IIS) y la suplantacin mediante declaraciones en los archivos Web.config o Machine.config.Nota: es recomendable configurar la autenticacin en funcin de cada servicio Web en el archivo Web.config del servicio Web correspondiente. Con esta configuracin, el cdigo del servicio Web suplanta al llamador autenticado por IIS. Para suplantar al llamador original es preciso desactivar el acceso annimo en IIS. En caso de utilizar el acceso annimo, el cdigo del servicio Web suplanta la cuenta de usuario de Internet annimo (que, de manera predeterminada, es IUSR_MACHINE).Seguridad configurable El empleo de la autenticacin de Windows junto con la funcionalidad de suplantacin ofrece las siguientes opciones de autorizacin: Listas ACL de Windows Archivo del servicio Web (.asmx). La autorizacin de archivos lleva a cabo comprobaciones de acceso para los recursos ASP.NET solicitados (que incluye el archivo del servicio Web .asmx) mediante el contexto de seguridad del llamador original. Es preciso que el llamador original reciba, como mnimo, acceso de lectura al archivo .asmx. Recursos a los que obtiene acceso el servicio Web. Las listas ACL de Windows de los recursos a los que obtiene acceso el servicio Web (archivos, carpetas, claves de registro, objetos de servicio del directorio Active Directory, etc.) deben incluir una entrada de control de acceso (ACE) que conceda acceso de lectura al llamador original (puesto que el subproceso del servicio Web utilizado para el acceso a los recursos ejecuta la suplantacin del llamador). Autorizacin mediante direcciones URL. Se configura en el archivo Machine.config o Web.config. Con la autenticacin de Windows, los nombres deusuarioadoptanlaformaDomainNameUserName (NombreDominioNombreUsuario) y las funciones se asignan una a una a los grupos de Windows. 8. Seguridad mediante programacin La seguridad mediante programacin hace referencia a las comprobaciones de seguridad ubicadas en el cdigo del servicio Web. Las siguientes opciones de seguridad mediante programacin estn disponibles cuando se utilizan la autenticacin de Windows y la suplantacin. Peticiones de permisos Principal Imperativas (en las lneas del cdigo de un mtodo)PrincipalPermission permCheck = new PrincipalPermission(null, @quot;DomainNameWindowsGroupquot;); permCheck.Demand(); Declarativas (estos atributos pueden figurar antes de los mtodos o las clases Web)// Demand that the caller is a member of a specific role (for Windows // authentication this is the same as a Windows group) [PrincipalPermission(SecurityAction.Demand, [email protected];DomainNameWindowsGroup)] // Demand that the caller is a specific user [PrincipalPermission(SecurityAction.Demand, [email protected];DomainNameUserNamequot;)] Comprobaciones de funciones explcitas. Puede realizar la comprobacin de funciones mediante la interfaz IPrincipal.IPrincipal.IsInRole(@quot;DomainNameWindowsGroupquot;);Escenarios de uso Utilice la autenticacin de Windows y la suplantacin cuando se den las siguientes condiciones: Los clientes del servicio Web pueden identificarse mediante cuentas de Windows, que a su vez puede autenticar el servidor. Debe transferirse el contexto de seguridad del llamador original al siguiente nivel a travs del servicio Web. Por ejemplo, a un conjunto de componentes revisados que utilizan funciones de Servicios Empresariales (COM+) o a un nivel de datos que precisa autorizacin de granularidad fina (por usuario). Debe transferir el contexto de seguridad del llamador original a los niveles indirectos a fin de admitir la auditora de nivel del sistema operativo.Importante: el uso de la suplantacin reduce la escalabilidad porque incide en la agrupacin de conexiones de bases de datos. A modo de enfoque alternativo, es recomendable plantearse la posibilidad de utilizar un modelo de subsistema de confianza en el que el servicio Web autorice a los llamadores y, a continuacin, utilice una identidad fija para obtener el acceso a la base de datos. La identidad del llamador se transfiere desde la aplicacin; por ejemplo, mediante los parmetros de procedimiento almacenados. 9. Ms informacinSi desea obtener ms informacin acerca de la autenticacin de Windows y lasuplantacin, consulte el captulo 8 quot;Seguridad de ASP.NETquot;.Para obtener ms informacin acerca de la autorizacin mediante direccionesURL, consulte quot;Notas acerca de la autorizacin mediante direcciones URLquot; enel captulo 8, quot;Seguridad de ASP.NETquot;.Autenticacin de Windows sin suplantacin Los siguientes elementos de configuracin muestran cmo habilitar la autenticacin de Windows (IIS) sin suplantacin de forma declarativa en el archivo Web.config.Seguridad configurable El empleo de la autenticacin de Windows sin la suplantacin ofrece las siguientes opciones de autorizacin:Listas ACL de WindowsArchivo del servicio Web (.asmx). La autorizacin de archivos lleva acabo comprobaciones de acceso para los recursos ASP.NET solicitados(que incluye el archivo del servicio Web .asmx) mediante el llamadororiginal. No se requiere la suplantacin.Recursos a los que obtiene acceso la aplicacin. Las listas ACL deWindows de los recursos a las que obtiene acceso la aplicacin (archivos,carpetas, claves de registro, objetos de Active Directory) deben incluir unaentrada ACE que conceda acceso de lectura a la identidad del proceso deASP.NET (la identidad predeterminada que utiliza el subproceso delservicio Web para obtener acceso a los recursos).Autorizacin de URLSe configura en los archivos Machine.config y Web.config. Con laautenticacin de Windows, los nombres de usuario adoptan la formaDomainNameUserName (NombreDominioNombreUsuario) y las funciones seasignan una a una a los grupos de Windows. Seguridad mediante programacin La seguridad mediante programacin hace referencia a las comprobaciones de seguridad ubicadas en el cdigo del servicio Web. Las siguientes opciones de seguridad mediante programacin estn disponibles cuando se utiliza la autenticacin de Windows sin suplantacin.Peticiones de permisos PrincipalImperativasPrincipalPermission permCheck = new PrincipalPermission(null, @quot;DomainNameWindowsGroupquot;); 10. permCheck.Demand();Declarativas // Demand that the caller is a member of a specific role (for Windows// authentication this is the same as a Windows group)[PrincipalPermission(SecurityAction.Demand, [email protected];DomainNameWindowsGroup)]// Demand that the caller is a specific user[PrincipalPermission(SecurityAction.Demand, [email protected];DomainNameUserNamequot;)]Comprobaciones de funciones explcitas. Puede realizar la comprobacinde funciones mediante la interfaz IPrincipal. IPrincipal.IsInRole(@quot;DomainNameWindowsGroupquot;);Escenarios de uso Utilice la autenticacin de Windows sin suplantacin cuando se den las siguientes condiciones:Los clientes del servicio Web pueden identificarse mediante cuentas deWindows, que a su vez puede autenticar el servidor.Desea utilizar el modelo de subsistema de confianza y autorizar a los clientesdesde el servicio Web para, a continuacin, utilizar una identidad fija paraobtener acceso a los recursos indirectos (bases de datos por ejemplo) a fin deadmitir la agrupacin de conexiones.Ms informacinSi desea obtener ms informacin acerca de la autenticacin de Windows y lasuplantacin, consulte el captulo 8 quot;Seguridad de ASP.NETquot;.Para obtener ms informacin acerca de la autorizacin mediante direccionesURL, consulte quot;Notas acerca de la autorizacin mediante direcciones URLquot; enel captulo 8, quot;Seguridad de ASP.NETquot;.Autenticacin de Windows con identidad fija El elemento del archivo Web.config es compatible con los atributos opcionales de nombre de usuario y contrasea, lo cual le permite configurar una identidad fija especfica para que la suplante el servicio Web. Este enfoque se muestra en el siguiente fragmento del archivo de configuracin.Escenarios de uso No se recomienda el uso de este enfoque en entornos seguros por dos motivos:Los nombres de usuario y las contraseas no deberan almacenarse enformato de texto sin cifrar en los archivos de configuracin.En Windows 2000, este enfoque obliga a conceder a la cuenta de procesoASP.NET el privilegio Actuar como parte del sistema operativo. De estemodo se reduce la seguridad del servicio Web y aumenta el riesgo de 11. amenaza en caso de que un intruso pusiera en peligro el proceso del servicio Web (Aspnet_wp.exe).Ms informacin Si desea obtener ms informacin acerca de la autenticacin de Windows y la suplantacin, consulte el captulo 8 quot;Seguridad de ASP.NETquot;. Para obtener ms informacin acerca de la autorizacin mediante direcciones URL, consulte quot;Notas acerca de la autorizacin mediante direcciones URLquot; en el captulo 8, quot;Seguridad de ASP.NETquot;. Configurar la seguridad En esta seccin encontrar los pasos que debe realizar para configurar la seguridad de un servicio Web ASP.NET. Dichos mecanismos se reflejan en la Ilustracin 10.4. {Insert figure: CH08 Configuring ASP.NET Security.gif} 12. Ilustracin 10.4 Configurar la seguridad de un servicio Web ASP.NETConfigurar los parmetros de IIS Para obtener informacin pormenorizada acerca de cmo configurar los parmetros de seguridad de IIS, consulte el apartado quot;Configurar la seguridadquot; del captulo 8, quot;Seguridad de ASP.NETquot;; la informacin que encontrar es vlida tambin para los servicios Web ASP.NET.Configurar los parmetros de ASP.NET Los parmetros de configuracin de la aplicacin se almacenan en archivos Web.config, ubicados en el directorio raz virtual del servicio Web. Es preciso configurar los siguientes parmetros:1. Configure la autenticacin. Debe establecerse para cada servicio Web (no en el archivo Machine.config) del archivo Web.config ubicado en el directorio raz virtual del servicio Web.Nota: los servicios Web no son compatibles actualmente con la autenticacin mediante Formularios y la autenticacin de Passport. Si decide utilizar la autenticacin personalizada o de mensajes, establezca el modo en ninguna.2. Configure la suplantacin y la autorizacin. Si desea obtener informacin detallada, consulte quot;Configurar la seguridadquot; en el captulo 8, quot;Seguridad de ASP.NET.quot; Ms informacin Para obtener ms informacin acerca de la autorizacin mediante direcciones URL, consulte quot;Notas acerca de la autorizacin mediante direcciones URLquot; en el captulo 8, quot;Seguridad de ASP.NETquot;.Proteger recursos Debera utilizar las mismas tcnicas que se describen en el captulo 8, quot;Seguridad de ASP.NETquot;, para proteger los recursos Web Adems, valore la posibilidad de eliminar los protocolos HTTP-GET y HTTP-POST del archivo Machine.config de los servidores de produccin cuando utilice los servicios Web.Deshabilitar HTTP-GET y HTTP-POST De forma predeterminada, los clientes se comunican con los servicios Web ASP.NET mediante tres protocolos: HTTP-GET, HTTP-POST y SOAP a travs de HTTP. Deshabilite la compatibilidad para los protocolos HTTP-GET y HTTP-POST en el nivel de equipo de los equipos de produccin en los que no sean necesarios. De esta forma conseguir evitar posibles problemas de seguridad que podran permitir que una pgina Web mal intencionada obtenga acceso a un servicio Web interno que se ejecute detrs de un servidor de seguridad.Nota: deshabilitar estos protocolos implica que los clientes nuevos no podrn comprobar un servicio Web XML mediante el botn Invocar de la pgina de prueba del servicio Web. En su lugar, deber crear un programa cliente de comprobacin. Para hacerlo, agregue una referencia al servicio Web mediante el sistema de desarrollo Microsoft Visual Studio .NET. Quizs desee mantener 13. habilitados estos protocolos en los equipos de desarrollo a fin de que los desarrolladores sean capaces de utilizar la pgina de comprobacin.Para deshabilitar los protocolos HTTP-GET y HTTP-POST en todo un equipo 1. Modifique el archivo Machine.config. 2. Elimine los comentarios de las lneas del elemento queagregan compatibilidad para los protocolos HTTP-GET y HTTP-POST. Cuandohaya acabado, el archivo Machine.config debera ofrecer el siguiente aspecto. 3. Guarde el archivo Machine.config.Nota: en algunos casos especiales en los que clientes de servicios Web se comunican con un servicio Web que utiliza el protocolo HTTP-GET o HTTP-POST, es posible agregar la compatibilidad necesaria para dichos protocolos desde el archivo Web.config de la aplicacin, con slo crear un elemento y agregar compatibilidad para los protocolos con los elementos y , tal como se ha mostrado anteriormente. Ms informacin Si desea obtener informacin detallada acerca de cmo proteger recursos, consulte quot;Proteger recursosquot; en el captulo 8, quot;Seguridad de ASP.NETquot;.Comunicacin segura Utilice una combinacin de SSL e IPSec para proteger los vnculos de comunicacin.Ms informacinPara obtener informacin acerca de cmo llamar a un servicio Web medianteSSL, consulte quot;Cmo llamar a un servicio Web con SSLquot; en la seccin dereferencia de este manual.Para obtener informacin acerca de cmo utilizar IPSec entre dos equipos,consulte quot;Cmo utilizar IPSec para garantizar una comunicacin segura entredos servidoresquot; en la seccin de referencia de este manual. Transmitir credenciales para la autenticacin de servicios Web Las llamadas a los servicios Web se efectan mediante un proxy de servicio Web, un objeto local que expone el mismo conjunto de mtodos que el servicio Web de destino. 14. Puede generar un proxy de servicio Web mediante la utilidad de la lnea de comandos Wsdl.exe. Si utiliza Visual Studio .NET tambin puede generar el proxy agregando una referencia Web al proyecto.Nota: si el servicio Web para el que desea generar un proxy est configurado para requerir certificados de cliente, deber deshabilitar temporalmente dicho requisito mientras agrega la referencia; de lo contrario se producir un error. Una vez agregada la referencia, no olvide volver a configurar el servicio para que exija los certificados. Un enfoque alternativo consiste en mantener fuera de lnea un archivo WSDL (Lenguaje de descripcin de servicios Web) de los servicios Web para que est disponible para las aplicaciones de consumidor. Es importante que recuerde actualizarlo si se modifica la interfaz del Servicio Web.Especificar las credenciales declientepara la autenticacin de Windows El uso de la autenticacin de Windows requiere especificar las credenciales que deben utilizarse para la autenticacin mediante la propiedad Credentials del proxy de servicio Web. Si no establece esta propiedad de forma expresa, se efectuar la llamada al servicio Web sin utilizar credenciales. Cuando se requiere la autenticacin de Windows, se generar un estado HTTP 401, de respuesta de acceso denegado.Utilizar DefaultCredentials Las credenciales de cliente no se transfieren de forma implcita. Es el consumidor del servicio Web quien debe establecer las credenciales y los detalles de la autenticacin en el proxy. Para transferir el contexto de seguridad del contexto de seguridad Windows del cliente (sea desde un testigo de subproceso suplantado sea desde un testigo de proceso) a un servicio Web, establezca la propiedad Credentials del proxy de servicio Web en CredentialCache.DefaultCredentials tal como se muestra a continuacin.proxy.Credentials = System.Net.CredentialCache.DefaultCredentials; Tenga en cuenta los siguientes aspectos antes de utilizar este enfoque: Este mtodo transfiere las credenciales del cliente nicamente cuando se utiliza la autenticacin NTLM, Kerberos o negociada. Si una aplicacin de cliente (por ejemplo, una aplicacin de formularios de Windows) llama al servicio Web, las credenciales se obtendrn de la sesin de inicio de sesin interactiva del usuario. Las aplicaciones de servidor, como las aplicaciones Web de ASP.NET, utilizan la identidad de proceso, salvo que se haya configurado la suplantacin, en cuyo caso se utiliza la identidad del llamador suplantado.Utilizar credenciales especficas Para utilizar un conjunto especfico de credenciales de autenticacin para llamar a un servicio Web, utilice el siguiente cdigo.CredentialCache cache = new CredentialCache(); cache.Add( new Uri(proxy.Url), // Web service URL quot;Negotiatequot;, // Kerberos or NTLM new NetworkCredential(quot;usernamequot;, quot;passwordquot;, quot;domainnamequot;) ); proxy.Credentials = cache; 15. En este ejemplo, el tipo de autenticacin negociada solicitada puede ser la autenticacin Kerberos o NTLM. Solicitar siempre un tipo de autenticacin especfica Es recomendable solicitar siempre un tipo de autenticacin especfico, tal como se muestra ms arriba. Evite el uso directo de la clase NetworkCredential, como se refleja en el siguiente fragmento de cdigo.proxy.Credentials = newNetworkCredential(quot;usernamequot;, quot;passwordquot;, quot;domainnamequot;); Este mtodo debera evitarse en el cdigo de produccin porque se pierde el control del mecanismo de autenticacin que utiliza el servicio Web y, como consecuencia, se pierde tambin el control con relacin al uso de las credenciales. Por ejemplo, es probable que se produzca un desafo de autenticacin Kerberos o NTLM desde el servidor pero, en su lugar, recibir un desafo bsico. En este caso, el nombre de usuario y la contrasea proporcionados se enviarn al servidor en formato de texto no cifrado.Establecer la propiedad PreAuthenticate La propiedad PreAuthenticate del proxy puede establecerse como verdadera o falsa. Establzcala en verdadera (true) para proporcionar las credenciales de autenticacin especficas para generar un encabezado HTTP WWW-authenticate para transferir con la solicitud Web. Esta propiedad guarda la denegacin de acceso del servidor Web en la solicitud y lleva a cabo la autenticacin en la siguiente solicitud de reintento.Nota: la preautenticacin slo se aplica cuando el servicio Web se autentica correctamente la primera vez. La preautenticacin no tiene repercusin alguna en la primera solicitud Web.private void ConfigureProxy( WebClientProtocol proxy,string domain, string username,string password ) { // To improve performance, force pre-authentication proxy.PreAuthenticate = true; // Set the credentials CredentialCache cache = new CredentialCache(); cache.Add( new Uri(proxy.Url),quot;Negotiatequot;,new NetworkCredential(username, password, domain) ); proxy.Credentials = cache; proxy.ConnectionGroupName = username; }Utilizar la propiedad ConnectionGroupName Tenga en cuenta que el cdigo anterior establece la propiedad ConnectionGroupName del proxy de servicio Web. Este paso slo es necesario si el contexto de seguridad utilizado para la conexin con el servicio Web vara de una solicitud a la otra, tal como se describe a continuacin. 16. Si trabaja con una aplicacin Web de ASP.NET que se conecta a un servicio Web y transfiere el contexto de seguridad del llamador original (mediante DefaultCredentials o estableciendo las credenciales explcitas, como en el caso anterior), debera establecer la propiedad ConnectionGroupName del proxy de servicio Web de la aplicacin Web. Con ello se consigue evitar que un cliente autenticado nuevo vuelva a utilizar una conexin TCP autenticada antigua para el servicio Web asociado con unas credenciales de autenticacin de cliente anteriores. La reutilizacin de conexiones puede tener lugar tras un resultado HTTP KeepAlives y la persistencia de autenticacin que se habilita por motivos de rendimiento en IIS. Establezca la propiedad ConnectionGroupName en un identificador (como el nombre de usuario del llamador) que distinga un llamador del siguiente, tal como se muestra en el fragmento de cdigo anterior.Nota: si el contexto de seguridad del llamador original no se transfiere a travs de la aplicacin Web hasta el servicio Web sino que la aplicacin Web se conecta al servicio Web mediante una identidad fija (como la identidad de proceso ASP.NET de la aplicacin Web), no ser necesario que establezca la propiedad ConnectionGroupName. En este escenario, el contexto de seguridad de conexin permanece constante de un llamador al siguiente.Llamar a los servicios Web desde clientes que no sean de Windows Existen una serie de enfoques de autenticacin que funcionan con los escenarios que implican varios exploradores. Entre ellos figuran: Autenticacin mediante certificados. Mediante certificados X.509 para varias plataformas. Autenticacin bsica. Si desea obtener un ejemplo de cmo utilizar la autenticacin bsica con un almacn de datos personalizado (sin que sea necesarioActiveDirectory),consulte http://www.rassoc.com/gregr/weblog/stories/2002/06/26/webServicesSecurityH ttpBasicAuthenticationWithoutActiveDirectory.html (en ingls). Enfoques para mensajes GXA. Utilice Web Services Development Toolkit para implementar soluciones GXA (WS-Security). Enfoques personalizados. Por ejemplo, para transferir las credenciales mediante encabezados SOAP.Autenticacin de servidor proxy La autenticacin de servidor proxy no se admite en el cuadro de dilogo Agregar referencia Web de Visual Studio .NET (aunque s que ser compatible en la siguiente versin de Visual Studio .NET). Como resultado puede producirse un estado de HTTP 407: quot;Autenticacin proxy obligatoriaquot; cuando intente agregar una referencia Web.Nota: quizs no experimente este error si visualiza el archivo .asmx desde un explorador porque los exploradores envan las credenciales automticamente. Para solucionar este problema, utilice la utilidad de la lnea de comandos Wsdl.exe (en vez del dilogo Agregar referencia Web), como se muestra a continuacin.wsdl.exe /proxy:http:///pu:/pp: /pd: http://www.YouWebServer.com/YourWebService/YourService.asmx 17. Utilice el cdigo presentado a continuacin si necesita establecer mediante programacin la informacin de autenticacin del servidor proxy.YourWebServiceProxy.Proxy.Credentials = CredentialsCache.DefaultCredentials; Transferir el llamador original En esta seccin se describe cmo transferir el contexto de seguridad del llamador original a travs de una aplicacin Web de ASP.NET hasta un servicio Web ubicado en un servidor de aplicaciones remoto. Quizs necesite recurrir a este procedimiento para que un servicio Web sea compatible con la autorizacin por usuario, o bien prximos subsistemas indirectos (como bases de datos en las que se desee autorizar a los llamadores originales con relacin a objetos de base de datos individuales). La ilustracin 10.5 refleja el contexto de seguridad del llamador original (Alice) y cmo se transfiere a travs del servidor Web de cliente que aloja una aplicacin Web de ASP.NET hasta el objeto remoto, alojado por ASP.NET en un servidor de aplicaciones remotas, y finalmente a travs de un servidor de bases de datos de servidor. {Insert figure: CH10 Flowing original caller with Web Service.gif} Ilustracin 10.5 Transferir el contexto de seguridad del llamador original Para transferir las credenciales a un servicio Web, el cliente del servicio Web (la aplicacin Web de ASP.NET en este escenario en concreto) debe configurar el proxy de servicio Web y establecer de forma expresa la propiedad Credentials del proxy, como se describe en el apartado quot;Transmitir credenciales para la autenticacin de servicios Webquot; que figura anteriormente en este captulo. Tiene a su disposicin dos mtodos para transferir el contexto del llamador. Transferir las credenciales predeterminadas y utilizar la autenticacin Kerberos (y la delegacin). Este enfoque requiere el uso de la suplantacin en la aplicacin Web de ASP.NET y la configuracin del proxy de objeto remoto con el elemento DefaultCredentials obtenido del contexto de seguridad del llamador suplantado. Transferir las credenciales explcitas y utilizar la autenticacin bsica o mediante Formularios. Este enfoque no requiere el uso de funciones de suplantacin en la aplicacin Web de ASP.NET. En cambio, es preciso configurar programticamente el proxy de servicio Web con credenciales explcitas obtenidas bien de variables de servidor (en el caso de la autenticacin bsica) bien de campos de formularios HTML (en el caso de la autenticacin mediante Formularios) disponibles para la aplicacin Web. Tanto para la autenticacin bsica como mediante Formularios, el nombre de usuario y la contrasea estn disponibles en formato de texto sin cifrar. 18. Credenciales predeterminadas con delegacin Kerberos Para utilizar la delegacin Kerberos, todos los equipos (servidores y clientes) deben ejecutar Windows 2000 o versiones posteriores. Por otra parte, las cuentas de cliente que vayan a delegarse debern almacenarse en Active Directory y no marcarse nunca como Confidencial y no se puede delegar. Las tablas que figuran a continuacin muestran los pasos de configuracin que deben llevarse a cabo en el servidor Web, as como en el servidor de aplicaciones.Configurar el servidor Web Configurar IIS PasoMs informacin Deshabilitar el acceso annimo para el directorio raz virtual de la aplicacin Web La autenticacin Kerberos se negociar teniendo en Habilitar la autenticacincuenta que tanto los clientes como el servidor ejecutan integrada de Windows para Windows 2000 o versiones posteriores. el directorio raz virtual de Nota: si ya utiliza Internet Explorer 6 en Windows 2000, el la aplicacin Web valor predeterminado es la autenticacin NTLM en vez de la autenticacin Kerberos que se precisa en este contexto. Para habilitar la delegacin Kerberos, consulte el artculo Q299838, quot;Unable to Negotiate Kerberos Authentication after upgrading to Internet Explorer 6quot; (en ingls) en la Knowledge Base de Microsoft. Configurar ASP.NET PasoMs informacin Configurar la aplicacinModifique el archivo Web.config del directorio virtual de la Web de ASP.NET para aplicacin Web. utilizar la autenticacin deEstablezca el elemento como se indica Windows a continuacin: Configurar la aplicacinModifique el archivo Web.config del directorio virtual de la Web de ASP.NET para laaplicacin Web. suplantacinEstablezca el elemento como se indica a continuacin: Configurar el proxy de servicio Web PasoMs informacin Establecer la propiedad deConsulte el apartado quot;Utilizar DefaultCredentialsquot; que credenciales del proxy de figura ms arriba en este captulo para obtener muestras servicioWeb ende cdigo. DefaultCredentials. Configurar el servidor de aplicaciones remoto Configurar IIS PasoMs informacin 19. Deshabilitarelacceso annimo para el directorio raz virtual del servicio WebHabilitar la autenticacin integrada de Windows para el directorio raz virtual de la aplicacin Web Configurar ASP.NET (host del servicio Web) Paso Ms informacin Configurar ASP.NET paraModifique el archivo Web.config del directorio virtual del utilizar la autenticacin de servicio Web. WindowsEstablezca el elemento como se indicaa continuacin: Configurar ASP.NET paraModifique el archivo Web.config del directorio virtual del la suplantacinservicio Web.Establezca el elemento como se indica acontinuacin: Nota: este paso slo es necesario si se desea transferir elcontexto de seguridad del llamador original al siguientenivel indirecto (una base de datos por ejemplo) a travsdel servicio Web. Si est habilitada la suplantacin, elacceso a los recursos (tanto local como remoto) utilizarel contexto de seguridad del llamador original suplantado.Si sus necesidades se limitan a permitir comprobacionesde autorizacin por usuario en el servicio Web, nonecesitar utilizar la suplantacin. Ms informacin Para obtener ms informacin acerca de cmo configurar la delegacin Kerberos, consulte quot;Cmo implementar la delegacin Kerberos para Windows 2000quot; en la seccin de referencia de este manual.Credenciales explcitas con autenticacin bsica o mediante Formularios Como alternativa a la delegacin Kerberos, puede utilizar la autenticacin bsica o mediante Formularios en la aplicacin Web para capturar las credenciales del cliente y utilizar a continuacin la autenticacin bsica (o integrada de Windows) para el servicio Web. Gracias a este enfoque, la aplicacin Web tiene a su disposicin las credenciales del cliente en formato de texto sin cifrar. stas se pueden transferir al servicio Web a travs del proxy de servicio Web. Para hacerlo, escriba el cdigo pertinente en la aplicacin Web que le permita recuperar las credenciales del cliente y configurar el proxy. 20. Autenticacin bsica Gracias a la autenticacin bsica, las credenciales del llamador original estn disponibles para la aplicacin Web en formato de variables de servidor. El siguiente fragmento de cdigo muestra cmo recuperarlas y configurar el proxy de servicio Web.// Retrieve client's credentials (available with Basic authentication) string pwd = Request.ServerVariables[quot;AUTH_PASSWORDquot;]; string uid = Request.ServerVariables[quot;AUTH_USERquot;]; // Associate the credentials with the Web service proxy // To improve performance, force preauthentication proxy.PreAuthenticate = true; // Set the credentials CredentialCache cache = new CredentialCache(); cache.Add( new Uri(proxy.Url),quot;Basicquot;,new NetworkCredential(uid, pwd, domain) ); proxy.Credentials = cache;Autenticacin mediante Formularios La autenticacin mediante Formularios permite que las credenciales del llamador original estn disponibles para la aplicacin Web en formato de campos de formulario (en vez de en formato de variables de servidor). En estos casos, utilice el siguiente fragmento de cdigo.// Retrieve client's credentials from the logon form string pwd = txtPassword.Text; string uid = txtUid.Text; // Associate the credentials with the Web service proxy // To improve performance, force preauthentication proxy.PreAuthenticate = true; // Set the credentials CredentialCache cache = new CredentialCache(); cache.Add( new Uri(proxy.Url),quot;Basicquot;,new NetworkCredential(uid, pwd, domain) ); proxy.Credentials = cache; Las tablas que figuran a continuacin muestran los pasos de configuracin que deben llevarse a cabo en el servidor Web, as como en el servidor de aplicaciones.Configurar el servidor Web Configurar IIS Paso Ms informacin Para utilizar la Tanto la autenticacin bsica como la autenticacin autenticacin bsica,mediante Formularios deberan utilizarse junto con SSL deshabilitar el acceso para proteger las credenciales en formato de texto sin annimo para el directorio cifrar que se envan a travs de la red. Si utiliza la raz virtual de la aplicacinautenticacin bsica, debera utilizar SSL para todas las Web y seleccionar la pginas (no slo para la pgina de inicio de sesin inicial), autenticacin bsica puesto que las credenciales bsicas se transmiten contodas y cada una de las solicitudes. 21. - O bien -Parautilizarla autenticacin medianteDel mismo modo, debera utilizar SSL para todas las Formularios, habilitar el pginas si utiliza la autenticacin mediante Formularios a acceso annimofin de proteger las credenciales de texto sin cifrar durante el inicio de sesin y de proteger tambin el vale de autenticacin que se transfiere en solicitudes posteriores. Configurar ASP.NET PasoMs informacin Si se utiliza la autenticacinModifique el archivo Web.config del directorio virtual de la bsica,configurarla aplicacin Web. aplicacinWeb deEstablezca el elemento como se indica ASP.NET para utilizar laa continuacin: autenticacin de Windows - O bien -Si se utiliza la autenticacin medianteFormularios,- O bien - configurar la aplicacin Web de ASP.NET para Modifique el archivo Web.config del directorio virtual de la utilizar la autenticacin aplicacin Web. mediante FormulariosEstablezca el elemento como se indica a continuacin:Deshabilitar la suplantacinModifique el archivo Web.config del directorio virtual de la de la aplicacin Web de aplicacin Web. ASP.NET Establezca el elemento como se indica a continuacin: Nota: este cdigo equivale a suprimir el elemento . No se requiere la suplantacin, dado que las credenciales del usuario se transferirn de forma expresa al servicio Web a travs del proxy. Configurar el proxy de servicio Web PasoMs informacin Escribircdigo para Consulte los fragmentos de cdigo incluidos en las capturaryestablecer secciones de autenticacin bsica y mediante explcitamentelas Formularios. credenciales del proxy de servicio Web Configurar el servidor de aplicaciones Configurar IIS 22. Paso Ms informacin Deshabilitarelacceso annimo para el directorio raz virtual de la aplicacinHabilitar la autenticacin Nota: la autenticacin bsica del servidor de aplicaciones bsica (servicio Web) permite que el servicio Web transfiera elcontexto de seguridad del llamador original a la base dedatos (dado que el nombre de usuario y la contrasea delllamador estn disponibles en formato de texto sin cifrar ypueden utilizarse para responder a los desafos deautenticacin de red desde el servidor de bases de datos).Si no necesita transferir el contexto de seguridad delllamador original ms all del servicio Web, considere laposibilidad de configurar IIS en el servidor de aplicacionespara que utilice la autenticacin integrada de Windows,puesto que con ello se mejora la seguridad y lascredenciales no se transmiten a travs de la red ni estndisponibles para el servicio Web. Configurar ASP.NET (servicio Web) PasoMs informacin Configurar ASP.NET paraModifique el archivo Web.config del directorio virtual del utilizar la autenticacin de servicio Web. WindowsEstablezca el elemento como se indicaa continuacin: Configurar el servicio Web Modifique el archivo Web.config del directorio virtual del de ASP.NET para la servicio Web. suplantacin Establezca el elemento como se indica acontinuacin: Nota: este paso slo es necesario si se desea transferir elcontexto de seguridad del llamador original al siguientenivel indirecto (una base de datos por ejemplo) a travsdel servicio Web. Si est habilitada la suplantacin, elacceso a los recursos (tanto local como remoto) utilizarel contexto de seguridad del llamador original suplantado.Si sus necesidades se limitan a permitir comprobacionesde autorizacin por usuario en el servicio Web, nonecesitar utilizar la suplantacin.Subsistema de confianza El modelo del subsistema de confianza constituye un enfoque alternativo (ms sencillo de implementar) para la transmisin del contexto de seguridad del llamador original. En este modelo existe un lmite de confianza entre el servicio Web y la aplicacin Web. El servicio Web confa en la aplicacin Web para que autentique y autorice correctamente a los llamadores, antes de que permitir que las solicitudes 23. lleguen al servicio Web. En el servicio Web no se lleva a cabo autenticacin alguna de los llamadores originales. El servicio Web autentica la identidad fija de confianza utilizada por la aplicacin Web para la comunicacin con el servicio Web. En la mayora de los casos, se trata de la identidad del proceso de trabajo de ASP.NET. El modelo de subsistema de confianza se refleja en la ilustracin 10.6. {Insert figure: CH10 Trusted subsystem with Web service.gif} Ilustracin 10.6 El modelo de subsistema de confianzaTransmitir la identidad del llamador Si utiliza el modelo de subsistema de confianza, quizs necesite transmitir la identidad del llamador original (el nombre, no el contexto de seguridad), por ejemplo, por motivos de auditora de la base de datos. Puede transferir la identidad desde la aplicacin mediante un mtodo. Por otra parte, puede utilizar los parmetros de procedimientos almacenados y los parmetros de consulta de confianza (como muestra el siguiente ejemplo) para recuperar datos especficos de usuario de la base de datos.SELECT x,y,z FROM SomeTable WHERE UserName = quot;Alicequot;Pasos de configuracin Las tablas que figuran a continuacin muestran los pasos de configuracin que deben llevarse a cabo en el servidor Web, as como en el servidor de aplicaciones.Configurar el servidor WebConfigurar IISPasoMs informacinConfigurar la autenticacin La aplicacin Web puede utilizar cualquier forma dede IISautenticacin para autenticar a los llamadores originales.Configurar ASP.NETPasoMs informacinConfigurar la autenticacin Modifique el archivo Web.config del directorio virtual de lay comprobar que laaplicacin Web.suplantacin est Establezca el elemento en Windows,deshabilitada Forms o Passport. Establezca el elemento como se indica acontinuacin: 24. (O BIEN, elimine el elemento ). Restablecer la contraseaSi desea obtener ms informacin acerca de cmo de la cuenta de ASPNET obtener acceso a los recursos de red (incluidos los utilizada para ejecutarservicios Web) desde ASP.NET y acerca de cmo ASP.NET O BIEN crear seleccionar y configurar una cuenta de proceso para una cuenta de dominio conASP.NET, consulte las secciones quot;Obtener acceso a privilegios mnimos para recursos de redquot; e quot;Identidad del proceso para ASP.NETquot; ejecutar ASP.NETyen el captulo 8, quot;Seguridad de ASP.NETquot;. especificarinformacin detallada de la cuenta en el elemento del archivo Web.config Configurar el proxy de servicio Web PasoMs informacin Configurar el proxy de Utilice la siguiente lnea de cdigo: servicio Web para utilizar las credenciales proxy.Credentials = DefaultCredentials; predeterminadaspara todas las llamadas al servicio Web Configurar el servidor de aplicaciones Configurar IIS Paso Ms informacin Deshabilitarelacceso annimo para el directorio raz virtual del servicio WebHabilitar la autenticacin de Windows integrada Configurar ASP.NET Paso Ms informacin Configurar ASP.NET paraModifique el archivo Web.config del directorio virtual del utilizar la autenticacin de servicio Web. WindowsEstablezca el elemento como se indicaa continuacin: Deshabilitar la suplantacin Modifique el archivo Web.config del directorio virtual de laaplicacin.Establezca el elemento como se indica acontinuacin: 25. Obtener acceso a recursos del sistema Para obtener informacin detallada sobre el acceso a los recursos del sistema (por ejemplo, al registro de sucesos y al registro) de los servicios Web de ASP.NET, consulte el apartado quot;Obtener acceso a recursos de sistemaquot; del captulo 8, quot;Seguridad de ASP.NETquot;. Los enfoques y las restricciones abordados en el captulo 8 tambin son vlidos para los servicios Web de ASP.NET. Obtener acceso a recursos de red Cuando obtenga acceso a recursos de red desde un servicio Web, debe tener en consideracin la identidad utilizada para responder a los desafos de autenticacin de la red desde el equipo remoto. Existen tres opciones:La identidad de proceso (determinada por la cuenta utilizada para ejecutar elproceso de trabajo de ASP.NET)Una identidad de servicio (por ejemplo, una creada llamando a la interfazLogonUser)La identidad del llamador original (con el servicio Web configurado para lasuplantacin)Para obtener informacin detallada acerca de los beneficios que reporta cada uno de estos enfoques, junto con informacin pormenorizada de configuracin, consulte el apartado quot;Obtener acceso a recursos de redquot; del captulo 8, quot;Seguridad de ASP.NETquot;. Obtener acceso a los objetos COM La directiva AspCompat (utilizada por las aplicaciones Web cuando llaman a objetos COM de subprocesamiento controlado) no est disponible para los servicios Web. Esto significa que cuando se llama a objetos de modelo de subprocesamiento controlado desde servicios Web, se produce un intercambio de subproceso. El resultado es una ligera disminucin del rendimiento, y si el servicio Web aplica la suplantacin, el testigo de suplantacin se perder al llamar al componente COM. Como consecuencia suele generarse una excepcin de acceso denegado.Ms informacinPara obtener ms informacin acerca de las excepciones de acceso denegadocuando se llama a objetos COM de subprocesamiento controlado, consulte elartculo Q325791,quot;PRB: Access Denied Error Message Occurs WhenImpersonating in ASP.NET and Calling STA COM Componentsquot; (en ingls) enla Knowledge Base de Microsoft.Para obtener ms informacin acerca de cmo obtener acceso a los objetosCOM y utilizar el atributo AspCompat, consulte el apartado quot;Obtener acceso alos objetos COMquot; del captulo 8, quot;Seguridad de ASP.NETquot;.Para obtener ms informacin acerca de cmo llamar a objetos COM desubprocesamiento controlado desde los servicios Web, consulte el artculoQ303375, quot;INFO: XML Web Services and Apartment Objectsquot; (en ingls), de laKnowledge Base de Microsoft. Utilizar certificados de cliente con los servicios Web En esta seccin se describen las tcnicas para utilizar los certificados de cliente X.509 para la autenticacin de servicios Web. 26. Puede utilizar la autenticacin mediante certificados de cliente desde un servicio Web para autenticar los siguientes elementos: Otros servicios Web Aplicaciones que se comunican directamente con el servicio Web (por ejemplo, aplicaciones basadas en servidores o aplicaciones de escritorio de cliente)Autenticar clientesde exploradorWeb mediante certificados Un servicio Web no puede utilizar certificados de cliente para autenticar a los llamadores si stos interactan con una aplicacin Web intermedia, puesto que no es posible reenviar el certificado del llamador original al servicio Web a travs de la aplicacin Web. Mientras que la aplicacin Web puede autenticar a sus propios clientes mediante certificados, dichos certificados no pueden utilizarse en el servicio Web para la autenticacin. El motivo por el que da errores este escenario servidor a servidor es que la aplicacin Web no tiene acceso al certificado del cliente (en especial a la clave privada) de su almacn de certificados. Este problema se muestra en la ilustracin 10.7. {Insert figure: CH10 - Web service server-to-server certificate problem.gif} Ilustracin 10.7 Autenticacin mediante certificados de cliente del servicio WebUtilizar el modelo de subsistema de confianza La solucin a esta restriccin pasa por utilizar un modelo de subsistema de confianza que, adems, reporta compatibilidad para la autenticacin mediante certificados en el servicio Web. Con este enfoque, el servicio Web autentica la aplicacin Web mediante el certificado de la aplicacin Web (no con el certificado del llamador original). El servicio Web confa en la aplicacin Web para autenticar a sus usuarios y llevar a cabo la autorizacin necesaria que garantice que slo los llamadores autorizados sean capaces de obtener acceso a los datos y las funciones expuestos por el servicio Web. Este enfoque queda reflejado en la ilustracin 10.8. 27. {Insert figure: CH10- Web ServiceCertificate Authentication Trusted Subsystem.gif} Ilustracin 10.8 El servicio Web autentica la aplicacin Web de confianza Si la lgica de autorizacin del servicio Web requiere varias funciones, la aplicacin Web podr enviar certificados distintos segn la funcin a la que pertenezca el llamador. Por ejemplo, puede utilizarse un certificado para miembros de un grupo Administradores (con permisos para actualizar los datos de una base de datos servidor) y otro certificado para el resto de los usuarios (con autorizacin para operaciones de lectura exclusivamente).Nota: en escenarios como ste existe la posibilidad de utilizar un servidor de certificados local (al que slo pueden obtener acceso los dos servidores) para administrar todos los certificados de aplicacin Web. En este escenario: La aplicacin Web autentica a sus usuarios mediante certificados de cliente. La aplicacin Web acta como equipo selector y autoriza a sus usuarios, adems de controlar el acceso al servicio Web. La aplicacin Web llama al servicio Web y transmite un certificado distinto que representa a la aplicacin (o, quizs, un rango de certificados basados en la pertenencia a funciones del llamador). El servicio Web autentica la aplicacin Web y confa en la aplicacin para ejecutar la autorizacin de cliente necesaria. Se utiliza IPSec entre el servidor de aplicaciones Web y el servidor de servicios Web a fin de proporcionar un control de acceso adicional. IPSec evita los intentos de acceso no autorizado desde otros equipos. La autenticacin mediante certificados del servidor de servicios Web tambin evita el acceso no autorizado.Implementacin de soluciones Para utilizar la autenticacin de certificados en el servicio Web de un escenario como ste, utilice un proceso independiente para llamar al servicio Web y transmitir el certificado. No deben manipularse los certificados directamente desde la aplicacin 28. Web de ASP.NET porque dicha aplicacin no dispone de ningn perfil de usuario cargado ni de almacn de certificados asociado. El proceso independiente debe configurarse para que se ejecute con una cuenta dotada de un perfil de usuario asociado (y almacn de certificados). Existen dos opciones bsicamente: Utilizar una aplicacin de servidor de Servicios Empresariales Utilizar un servicio WindowsLa ilustracin 10.9 muestra este escenario con una aplicacin servidor de Servicios Empresariales. {Insert figure: CH10 - Web Service Certificate Authentication.gif} Ilustracin 10.9 Autenticacin mediante certificados con servicios Web A continuacin se resume la secuencia de eventos que recopila ilustracin 10.9.1. La aplicacin Web autentica al llamador original mediante certificados de cliente.2. La aplicacin Web es el equipo selector y, por lo tanto, responsable de autorizar el acceso a determinadas reas de funcionalidad (incluidas aqullas que suponen interaccin con el servicio Web).3. La aplicacin Web llama a un componente revisado mediante la ejecucin de una aplicacin de Servicios Empresariales fuera de proceso.4. La cuenta utilizada para ejecutar la aplicacin de Servicios Empresariales dispone de un perfil de usuario asociado. El componente obtiene acceso al certificado del cliente desde su almacn de certificados, que lo utiliza el servicio Web para autenticar la aplicacin Web.5. El componente revisado llama al servicio Web y transmite el certificado del cliente en cada solicitud de mtodo. El servicio Web autentica la aplicacin Web mediante este certificado y confa en la aplicacin Web para que autorice correctamente a los llamadores originales.Por qu utilizar un proceso adicional? La necesidad de un proceso adicional (en vez de utilizar el proceso Web Aspnet_wp.exe para ponerse en contacto con el servicio Web) se debe a que se requiere un perfil de usuario (que contenga un almacn de certificados). 29. Una aplicacin Web que se ejecuta mediante la cuenta ASPNET no tiene acceso aninguno de los certificados del servidor Web. El motivo radica en que los almacenesde certificados se conservan en los perfiles de usuario asociados a las cuentas deusuario interactivas. Los perfiles de usuario se crean exclusivamente para lascuentas interactivas cuando se inicia una sesin fsica con dichas cuentas. Elobjetivo de la cuenta ASPNET no consiste en actuar como una cuenta de usuariointeractiva y se configura con el privilegio quot;Denegar inicio de sesin interactivoquot; a finde mejorar la seguridad. Importante: no vuelva a configurar la cuenta ASPNET para eliminar este privilegioy convertirla en una cuenta de inicio de sesin interactivo. Utilice un procesoindependiente con una cuenta de servicio configurada para obtener acceso a loscertificados, como se ha descrito anteriormente en este captulo.Ms informacinPara obtener ms informacin acerca de cmo implementar este enfoque,consulte quot;Cmo llamar a un servicio Web mediante certificados de cliente deASPNETquot; en la seccin de referencia de este manual.Para obtener ms informacin acerca de la configuracin de IPSec, consultequot;Cmo utilizar IPSec para garantizar una comunicacin segura entre dosservidoresquot; en la seccin de referencia de este manual. Comunicacin seguraLa comunicacin segura hace referencia a la proteccin de la integridad y laconfidencialidad de los mensajes del servicio Web conforme se transmiten deaplicacin en aplicacin a travs de la red. Se han desarrollado dos enfoques parasolucionar este problema: opciones para el transporte y opciones para los mensajes. Opciones para el transporteLas opciones para el transporte incluyen:SSLIPSec Estas opciones resultan apropiadas cuando se cumplen las siguientes condiciones:Se enva un mensaje directamente desde la aplicacin a un servicio Web sinque el mensaje se enrute a travs de ningn sistema intermedio.Es posible controlar la configuracin de los dos puntos finales implicados en latransferencia del mensaje. Opciones para los mensajesLos enfoques relativos a los mensajes permiten proteger la confidencialidad eintegridad de los mensajes cuando pasan por un nmero arbitrario de sistemasintermedios. Existe la posibilidad de firmar los mensajes para dotarlos de integridad.En cuanto a la confidencialidad, puede elegir entre cifrar la totalidad del mensaje onicamente una parte del mismo.Utilice un enfoque para mensajes cuando se cumplan las siguientes condiciones:Se enva un mensaje a un servicio Web y es probable que el mensaje sereenve a otros servicios Web o que se enrute a travs de sistemasintermedios.No se tiene control sobre la configuracin de los dos puntos finales; porejemplo, porque se envan mensajes de una empresa a otra. 30. Ms informacinWeb Service Development Toolkit incluir funciones para el cifrado demensajes compatibles con la especificacin de seguridad WS-Security.Si desea obtener ms informacin acerca de SSL e IPSec, consulte el captulo4, quot;Comunicacin seguraquot;. ResumenEste captulo se centra en la seguridad de los servicios Web (punto a punto) relativatanto a la plataforma como al transporte que pueden ofrecer los serviciossubyacentes de ASP.NET, IIS y el sistema operativo. Mientras que la seguridad de laplataforma permite soluciones seguras para escenarios de intranet estrechamentevinculados, no resulta conveniente para escenarios heterogneos. Es por estemotivo precisamente por el que se requiere la seguridad que ofrece la especificacinde seguridad WS-Security de la arquitectura GXA. Utilice Web Services DevelopmentKit para crear soluciones de seguridad de mensajes para servicios Web.Para entornos de dominios Windows estrechamente vinculados:Si desea transmitir la identidad del llamador original desde una aplicacin Webde ASP.NET a un servicio Web remoto, la aplicacin Web de ASP.NETdebera utilizar la autenticacin Kerberos (con cuentas configuradas para ladelegacin), bsica o mediante Formularios.Si utiliza la autenticacin Kerberos, habilite la suplantacin con laaplicacin Web y configure la propiedad Credentials del proxy de servicioWeb mediante DefaultCredentials.Si utiliza la autenticacin bsica o mediante Formularios, capture lascredenciales del llamador y establezca la propiedad Credentials del proxyde servicio Web agregando un nuevo objeto CredentialCache. Para escenarios de servicio Web a servicio Web:Utilice la autenticacin bsica o Kerberos y establezca las credenciales en elproxy de cliente.Utilice una aplicacin de Servicios Empresariales o un servicio de Windowsfuera de proceso para que manipule los certificados X.509 desde lasaplicaciones Web.En la medida de lo posible, utilice las comprobaciones de autorizacin desistema como, por ejemplo, la autorizacin mediante archivos y direccionesURL.Si utiliza la autorizacin granular (en el nivel de mtodo Web por ejemplo),utilice funciones .NET (tanto de forma declarativa como imperativa).Autorice a los usuarios que no sean de Windows mediante funciones .NET(basadas en un objeto GenericPrincipal que contenga funciones).Deshabilite los protocolos HTTP-GET y HTTP-POST en todos los servidoresde producto.Utilice la seguridad de transporte si no le preocupa transferir los mensajes deforma segura a travs de sistemas intermedios.Utilice la seguridad de transporte si el rendimiento de SSL es adecuado.Utilice la especificacin de seguridad WS-Security y Web ServicesDevelopment kit para desarrollar soluciones para mensajes.