Seguimos discutiendo aspectos sobre la seguridad de los servicios web en la plataforma .NET.
2 Autenticación y autorización
2.1 Autenticación:
La autenticación es el proceso por el que se comprueba la identidad de alguien o algo, para ver si es lo que dice ser. Ese "alguien" o "algo" se denomina principal. La autenticación requiere pruebas de identidad, denominadas credenciales. Por ejemplo, una aplicación cliente puede presentar una contraseña como sus credenciales. Si la aplicación cliente presenta las credenciales correctas, se asume que es quien dice ser.
2.2 Autorización:
Una vez que se ha autenticado la identidad de un principal, deben tomarse decisiones sobre la autorización. El acceso se determina comparando la información del principal con información de control de acceso, como listas de control de acceso (ACL. Es posible que los clientes tengan distintos grados de acceso. Por ejemplo, algunos clientes pueden tener acceso total a los servicios Web XML, mientras que otros estarían autorizados sólo a ciertas operaciones. A algunos clientes se les permitirá un acceso total a todos los datos, mientras que a otros sólo se les permitirá acceso a un subconjunto de los datos y otros tendrán acceso de sólo lectura.
Un modo sencillo de implementar servicios Web XML Web consiste en aprovechar las características de autenticación del protocolo que se utilice para intercambiar mensajes. Para la mayoría de los servicios Web XML, esto significa aprovechar las características de autenticación disponibles en HTTP. Microsoft Internet Información Server (IIS) e ISA Server funcionan en conjunción con Windows 2000 Server y ofrecen soporte para varios mecanismos de autenticación en HTTP.
Entre los métodos para la implementación de autenticación en servicios Web XML también se incluyen servicios de terceros, como los que se encuentran en Microsoft® . NET Passport, características de sesión de Microsoft ASP.NET o la creación de métodos de autenticación personalizados.
3 Próximamente: Interoperabilidad
Como puede ver, las técnicas habituales para crear aplicaciones Web seguras se pueden aplicar por separado o combinadas a la hora de proteger servicios Web XML. Estas técnicas ya se han utilizado en el pasado y resultan bastante efectivas. Sin embargo, no ofrecen una solución integrada dentro de la arquitectura de servicios Web XML. Conforme aumenta la complejidad del entorno de servicios Web XML (sobrepasando los límites de la confianza, extendiéndose a múltiples sistemas o empresas) los responsables de implementarlos tienen que recurrir a soluciones personalizadas que, si bien resultan eficaces, no ofrecen una interoperabilidad total.
Para hacer frente a estas necesidades y mejorar la interoperabilidad entre servicios Web XML, Microsoft y sus socios están trabajando en un conjunto de especificaciones de seguridad basadas en el mecanismo de extensibilidad de la especificación SOAP para ofrecer funciones de seguridad mejoradas e integradas en el núcleo mismo de los servicios Web XML.
Una de las principales especificaciones que se están desarrollando es el lenguaje de seguridad de servicios Web XML (WS-Security) que proporciona mejoras en la mensajería SOAP, consistentes en tres funcionalidades: transferencia de credenciales, integridad de mensajes y confidencialidad. Estas funcionalidades no proporcionan por sí mismas una solución de seguridad completa; WS-Security es una pieza que se puede utilizar en conjunción con la infraestructura y otros protocolos de servicios Web XML para hacer frente a un gran número de requisitos de seguridad de aplicaciones. La arquitectura de servicios Web XML globales de Microsoft alberga a WS-Security y otras especificaciones relacionadas y proporciona un marco para la evolución de la infraestructura de los servicios Web XML.
2.1 Autenticación:
La autenticación es el proceso por el que se comprueba la identidad de alguien o algo, para ver si es lo que dice ser. Ese "alguien" o "algo" se denomina principal. La autenticación requiere pruebas de identidad, denominadas credenciales. Por ejemplo, una aplicación cliente puede presentar una contraseña como sus credenciales. Si la aplicación cliente presenta las credenciales correctas, se asume que es quien dice ser.
2.2 Autorización:
Una vez que se ha autenticado la identidad de un principal, deben tomarse decisiones sobre la autorización. El acceso se determina comparando la información del principal con información de control de acceso, como listas de control de acceso (ACL. Es posible que los clientes tengan distintos grados de acceso. Por ejemplo, algunos clientes pueden tener acceso total a los servicios Web XML, mientras que otros estarían autorizados sólo a ciertas operaciones. A algunos clientes se les permitirá un acceso total a todos los datos, mientras que a otros sólo se les permitirá acceso a un subconjunto de los datos y otros tendrán acceso de sólo lectura.
Un modo sencillo de implementar servicios Web XML Web consiste en aprovechar las características de autenticación del protocolo que se utilice para intercambiar mensajes. Para la mayoría de los servicios Web XML, esto significa aprovechar las características de autenticación disponibles en HTTP. Microsoft Internet Información Server (IIS) e ISA Server funcionan en conjunción con Windows 2000 Server y ofrecen soporte para varios mecanismos de autenticación en HTTP.
- Básica: utilizada para identificación no segura o poco segura de clientes, ya que el nombre de usuario y la contraseña se envían como texto codificado en base 64, que puede ser fácilmente descodificado. IIS autorizará el acceso a los servicios Web XML si las credenciales coinciden con las de una cuenta de usuario válida.
- Básica sobre SSL: igual que la autenticación básica, excepto que el canal de comunicación está cifrado y protege de ese modo el nombre de usuario y la contraseña. Una buena opción para entornos en Internet; sin embargo, el uso de SSL influye negativamente en el rendimiento.
- Implícita: utiliza algoritmos hash para transmitir las credenciales del cliente de forma segura. Sin embargo, es posible que no sea compatible con todas las herramientas de desarrollo para generar clientes de servicios Web XML. IIS autorizará el acceso a los servicios Web XML si las credenciales coinciden con las de una cuenta de usuario válida.
- Autenticación de Windows integrada: resulta útil sobre todo en entornos en Intranet. Utiliza NTLM o Kerberos. El cliente debe pertenecer al mismo dominio que el servidor o a un dominio en el que el dominio del servidor confía. IIS autorizará el acceso a los servicios Web XML si las credenciales coinciden con las de una cuenta de usuario válida.
- Certificados de cliente a través de SSL: requiere que cada cliente obtenga un certificado. Los certificados se asignan a las cuentas de usuario, que son utilizadas por IIS para autorizar el acceso a los servicios Web XML. Se trata de una solución viable para entornos en Internet, aunque el uso de certificados digitales no está muy extendido actualmente. Es posible que no sea compatible con todas las herramientas de desarrollo para generar clientes de servicios Web XML. Sólo está disponible en conexiones SSL, de modo que el rendimiento puede verse afectado.
Entre los métodos para la implementación de autenticación en servicios Web XML también se incluyen servicios de terceros, como los que se encuentran en Microsoft® . NET Passport, características de sesión de Microsoft ASP.NET o la creación de métodos de autenticación personalizados.
3 Próximamente: Interoperabilidad
Como puede ver, las técnicas habituales para crear aplicaciones Web seguras se pueden aplicar por separado o combinadas a la hora de proteger servicios Web XML. Estas técnicas ya se han utilizado en el pasado y resultan bastante efectivas. Sin embargo, no ofrecen una solución integrada dentro de la arquitectura de servicios Web XML. Conforme aumenta la complejidad del entorno de servicios Web XML (sobrepasando los límites de la confianza, extendiéndose a múltiples sistemas o empresas) los responsables de implementarlos tienen que recurrir a soluciones personalizadas que, si bien resultan eficaces, no ofrecen una interoperabilidad total.
Para hacer frente a estas necesidades y mejorar la interoperabilidad entre servicios Web XML, Microsoft y sus socios están trabajando en un conjunto de especificaciones de seguridad basadas en el mecanismo de extensibilidad de la especificación SOAP para ofrecer funciones de seguridad mejoradas e integradas en el núcleo mismo de los servicios Web XML.
Una de las principales especificaciones que se están desarrollando es el lenguaje de seguridad de servicios Web XML (WS-Security) que proporciona mejoras en la mensajería SOAP, consistentes en tres funcionalidades: transferencia de credenciales, integridad de mensajes y confidencialidad. Estas funcionalidades no proporcionan por sí mismas una solución de seguridad completa; WS-Security es una pieza que se puede utilizar en conjunción con la infraestructura y otros protocolos de servicios Web XML para hacer frente a un gran número de requisitos de seguridad de aplicaciones. La arquitectura de servicios Web XML globales de Microsoft alberga a WS-Security y otras especificaciones relacionadas y proporciona un marco para la evolución de la infraestructura de los servicios Web XML.
Benjamín González C.
Ingeniero de Sistemas