Proteger servicios web XML creados con ASP.NET
Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.
La decisión de qué implementación de seguridad es mejor para un Servicio Web comienza por el examen de dos principios de seguridad clave: autenticación y autorización. La autenticación es el proceso de validar una identidad basada en las credenciales, como un nombre de usuario y contraseña, contra una autoridad. Cuando una identidad ha sido autenticada, la autorización determina si esa identidad está autorizada para acceder a un recurso.
Los Servicios Web creados con ASP.NET pueden elegir sus opciones de seguridad a partir de las opciones de autorización y autenticación proporcionadas por ASP.NET o la seguridad personalizada basada en SOAP. ASP.NET funciona en combinación con los servicios de información de internet (IIS) para proporcionar varias opciones de autenticación y autorización. También es posible de crear las opciones de autenticación personalizada, como el uso de encabezados SOAP. Además, ASP.NET proporciona la capacidad, conocida como la suplantación, de ejecutar una solicitud mediante las credenciales del cliente. Para obtener más información sobre cómo utilizar la suplantación, vea Suplantación de ASP.NET.
Este tema resume las opciones de autenticación y autorización disponibles para lo servicios Web generados con ASP.NET. Para obtener más información sobre las opciones de seguridad disponibles en las aplicaciones web ASP.NET, vea Proteger aplicaciones web ASP.NET y Generación de aplicaciones ASP.NET seguras: Autenticación, Autorización y Comunicación segura.
Para obtener más información sobre cómo tener acceso a los recursos remotos de las aplicaciones basadas en ASP.NET, vea los temas del capítulo 3 "Modelo de suplantación/delegación” y el de "Modelo de subsistema de plena confianza” de Generación de aplicaciones ASP.NET seguras.
Opciones de autenticación para los servicios Web XML
Los Servicios Web creados con ASP.NET tienen varias opciones para autenticar los clientes, por lo que la pregunta importante es: ¿Cuál es la opción correcta para un Servicio Web concreto? Al elegir la opción de seguridad correcta, una de las cosas entre las que un programador tiene que elegir es el nivel de seguridad y de rendimiento. Para algunos Servicios Web, es importante que las credenciales del cliente se envíen a través de la red utilizando el cifrado, por lo que es esencial un algoritmo que cifre las credenciales del cliente. Por ejemplo, un programador que escribe un Servicio Web que probablemente procesa las tarjetas de crédito se preocupa más porque puedan robar las credenciales del cliente que la sobrecarga adicional de cifrar los datos de la tarjeta de crédito.
La tabla siguiente es un resumen de las opciones de autenticación disponibles para los Servicios Web generados con ASP.NET. Las opciones prefijadas con Windows forman una parte de las opciones de autenticación de Microsoft Windows disponible para los Servicio Web creados con ASP.NET.
Resumen de opciones de autenticación
Opciones de autenticación. | Descripción |
---|---|
Windows: Basic |
Utilícese para la identificación no segura de clientes, ya que el nombre de usuario y la contraseña se envía en cadenas de codificación de base 64 en texto sin formato. Las contraseñas y nombres de usuario están codificados, pero no cifrados, en este tipo de autenticación. Un usuario malintencionado determinado, equipado con una herramienta de supervisión de la red puede interceptar nombres de usuario y contraseñas. |
Windows: Basic sobre SSL |
Utilícese para la identificación segura de clientes en escenarios de Internet. El nombre de usuario y contraseña se envían a través de la red utilizando el cifrado de Capa de sockets seguros (SSL), en lugar del texto sin formato. Es relativamente fácil de configurar y funciona para los escenarios de Internet. Al utilizar SSL, sin embargo, se degrada el rendimiento. |
Windows: autenticación implícita |
Utilícese para la identificación segura de clientes en escenarios de Internet. Utiliza un algoritmo hash para transmitir así las credenciales del cliente de una manera cifrada de manera que la contraseña no se transmite en texto no cifrado. Además, la autenticación implícita puede funcionar a través de los servidores proxys. Sin embargo, no se admite ampliamente en otras plataformas. |
Windows: Windows integrada |
Utiliza NTLM o Kerberos. Utiliza un intercambio criptográfico con el explorador web Microsoft Internet Explorer del usuario. |
Windows: certificados del cliente |
Utilícese para la identificación segura de clientes en escenarios de Internet e intranet. Exige a cada cliente que obtenga un certificado de una entidad emisora de certificados de mutua confianza. Los certificados están asignados opcionalmente a las cuentas de usuario, que son utilizadas por IIS para autorizar el acceso al Servicio Web. |
Formularios |
No compatible con el Servicio Web. Éste es un sistema por el que las solicitudes no autenticadas se redirigen a un formulario HTML utilizando redirección Http del cliente. La mayoría de los clientes de Servicio Web no desearán proporcionar credenciales mediante una interfaz de usuario; deberá trabajar sobre esta cuestión si desea utilizar la autenticación de formularios. |
Encabezados SOAP. Personalizado |
Útil para escenarios de Internet seguros y no seguros. Las credenciales del usuario se pasan dentro del encabezado SOAP del mensaje SOAP. El servidor web, sin tener en cuenta la plataforma que hospeda el Servicio Web, proporciona una implementación de autenticación personalizada. |
Para todas las opciones enumeradas anteriormente, excepto para el uso de encabezados SOAP, la configuración de seguridad se especifica utilizando una combinación de archivos de configuración e IIS. Se detalla la opción de encabezados SOAP personalizada siguiendo la sección Autorización, cuando esa solución implica autenticación y autorización.
Autenticación de Windows
IIS y ASP.NET proporcionan la compatibilidad para autenticar las aplicaciones web, incluso los Servicio Web, utilizando la seguridad integrada en Windows. Windows proporciona tres opciones para la autenticación: Basic, Autenticación implícita y Windows integrada. Además, cada opción se puede utilizar con SSL. Ya que todas las opciones de autenticación de Windows, excepto Basic, cifran los datos en algún formulario, el nivel de cifrado adicional proporcionado por SSL se utiliza normalmente solo junto con Basic o Certificados del Cliente.
Sin tener en cuenta que opción de autenticación de Windows se utiliza, los procedimientos para preparar el Servicio Web y el cliente de servicios Web son similares. Para obtener más información, vea Cómo: Configurar un servicio web XML para autenticación de Windows. Ningún código necesita ser agregado a un Servicio Web para utilizar la autenticación de Windows, cuando las opciones de autenticación se establecen en un archivo de configuración e IIS. Se debe agregar un código a un cliente de servicios Web para pasar las credenciales del cliente al Servicio Web.
Si SSL se elige como la parte del mecanismo de autenticación utilizada por un Servicio Web, SSL necesita ser configurado para la aplicación web que hospeda el Servicio Web o para el propio Servicio Web, utilizando IIS. La descripción del servicio y, por consiguiente, las clases de proxy generadas a partir de la descripción del servicio reflejarán que el Servicio Web utiliza SSL (si se tiene acceso a la descripción del servicio y página de ayuda del servicio utilizando SSL). La dirección URL al Servicio Web dentro de la descripción del servicio se prefijará con Https. Para obtener más información sobre la configuración de SSL, consulte la documentación IIS.
Autenticación de certificados de cliente
Los certificados de cliente ayudan a proporcionar un mecanismo seguro para la autenticación, ya que exigen a los clientes que envíen un documento electrónico, denominado certificado de cliente, que identifica al cliente utilizando una conexión SSL al servidor web. La conexión SSL cifra las credenciales del cliente contenidas dentro del certificado de cliente como que se envían a través de la red. La comunicación entre el cliente y el servidor web se cifra utilizando una combinación de las claves de cifrado enviadas por el cliente y las claves proporcionadas por el servidor web. Una vez establecida la comunicación, solo los equipos servidores y cliente pueden comunicarse entre sí utilizando esa conexión SSL.
Un certificado de cliente se puede obtener de una entidad de certificación, que o puede ser el mismo servidor web o un intermediario de plena confianza entre el cliente y servidor. Una vez que se ha obtenido un certificado, y que el servidor web se ha configurado para aceptar los certificados de cliente, un cliente puede enviar el certificado de cliente al servidor web sobre una conexión SSL, cuando se llama a un Servicio Web. Para obtener más información sobre los certificados de cliente consulte la documentación de IIS. Para obtener más información sobre cómo preparar la autenticación mediante certificados de cliente para un Servicio Web, vea Cómo: Configurar un servicio web XML para autenticación de Windows.
Opciones de la autorización para los servicios Web XML
El propósito de la autorización es determinar si una identidad se debería permitir el tipo solicitado de acceso a un recurso determinado. Hay dos maneras fundamentales de autorizar el acceso a un recurso determinado: autorización del archivo y autorización de URL. Se puede utilizar la autorización del archivo siempre que se utiliza la autenticación de Windows, ya que los permisos se establecen en IIS en una base por archivo. La autorización de URL se puede utilizar con cualquiera de los mecanismos de autenticación integrados admitido por ASP.NET. Con autorización de URL, la configuración se hace a través de un archivo de configuración, donde se pueden conceder o denegar el acceso a los usuarios a cualquier archivo asociado a ASP.NET, incluso archivos .asmx, de manera selectiva.
Para obtener más información sobre cómo preparar la autorización en una base por archivo, vea la documentación de IIS.
Para obtener más información sobre cómo configurar la autorización mediante un archivo de configuración, vea Autorización de ASP.NET.
Autenticación personalizada utilizando los encabezados SOAP
Los mecanismos de autenticación de Windows, incluso los certificados de cliente, confían en el transporte HTTP, mientras que SOAP es independiente del transporte. Los Servicio Web generados con ASP.NET utilizan SOAP sobre Http, así como implementaciones HTTP-POST y HTTP-GET que devuelven los documentos XML de no SOAP. Así que, una razón para crear un mecanismo de autenticación personalizada es desacoplar la autenticación del transporte. Esto se puede lograr pasando las credenciales de autenticación en el encabezado SOAP.
Los encabezados SOAP son una gran manera de pasar fuera de banda o información no relacionada con la semántica de un Servicio Web. A diferencia del elemento Body de un mensaje SOAP, que incluye los parámetros in y out para la operación del Servicio Web que son procesados por el método de servicio Web, el elemento Header es opcional y es procesado así por la infraestructura. Es decir, procesado por una infraestructura desarrollada para proporcionar un mecanismo de autenticación personalizada.
Para una descripción de un método para utilizar los encabezados SOAP para la autenticación, vea Cómo: Realizar autenticación personalizada con encabezados SOAP.
Para utilizar los encabezados SOAP para la autenticación, un cliente de servicios Web enviaría sus credenciales al Servicio Web agregando el encabezado SOAP esperado, a la solicitud SOAP y rellenándolo con las credenciales del cliente. Para utilizar la autenticación del encabezado SOAP, un Servicio Web debe hacer dos cosas: especificar que espera el encabezado SOAP que contiene las credenciales de autenticación y autorizar el acceso de cliente al Servicio Web.
Vea también
Tareas
Cómo: Configurar un servicio web XML para autenticación de Windows
Cómo: Realizar autenticación personalizada con encabezados SOAP
Referencia
NetworkCredential
CredentialCache
X509Certificate
Otros recursos
Proteger aplicaciones web ASP.NET
Generar servicios Web XML con ASP.NET