Modelo de programación de la API de Web Services Security

El modelo de programación del servidor de aplicaciones proporciona Interfaces de programación de aplicaciones de Web Services Security (WSS API) para proteger los mensajes SOAP.

El modelo de programación de la API es un modelo de programación basado en interfaz según estándares de Web Services Security Versión 1.1, pero el diseño también incluye soporte de Web Services Security Versión 1.0 para proteger los mensajes SOAP. La implementación del modelo de programación de la API WSS es una versión simplificada, que se basa en una propuesta de borrador anterior de JSR-183, que es la JSR para definir el enlace de API Java™ para Web Services Security. Por diseño, dado que el código de aplicación está programado en la interfaz, todo código de aplicación que se programe con la implementación de código abierto debe poder ejecutarse en WebSphere Application Server con cambios mínimos o ningún cambio en absoluto.

El modelo de configuración de servicios web también se ha rediseñado a partir de un modelo de descriptor de despliegue a un modelo de conjunto de políticas. Web Services Security puede habilitarse utilizando un conjunto de políticas que se configura utilizando la consola administrativa o utilizando la API WSS para la configuración. Las funciones proporcionadas por las configuraciones de conjunto de políticas son las mismas que las funciones soportadas por la API WSS para el tiempo de ejecución de Web Services Security. No obstante, la política de seguridad que se define utilizando conjuntos de políticas tiene una prioridad mayor que la API WSS. Cuando en la aplicación se utilizan tanto la API WSS como el conjunto de políticas, el comportamiento predeterminado es que se aplique la política de seguridad del conjunto de políticas y que se ignore la API WSS. Para utilizar la API WSS en la aplicación, asegúrese de que no haya ningún conjunto de políticas conectado a la aplicación o los recursos de aplicación, o asegúrese de que no exista ninguna política de seguridad en el conjunto de políticas conectado.

Sigue pudiendo utilizar las aplicaciones JAX-RPC existentes con Web Services Security; no obstante, estas aplicaciones no se benefician de las funciones de Web Services Security Versión 1.1, como la configuración de la política de seguridad utilizando un conjunto de políticas, las mejoras de rendimiento del filtro OM, la API WSS, Web Services Secure Conversation (WS-SecureConversation), la señal Kerberos ni la clave SHA-1 asociada para la protección de mensajes y la propagación de identidades, ni de las características de Web Services Trust (WS-Trust).

Para sacar partido de las funciones de Web Services Security Versión 1.1, debe volver a escribir una aplicación JAX-RPC existente como aplicación JAX-WS, reconfigurar manualmente las restricciones de seguridad en un conjunto de políticas y realizar la migración de código de las SPI basadas en DOM a las SPI basadas en OM.

Por ejemplo, si utiliza el modelo de programación JAX-WS, el diseño mejorado de la infraestructura de señales conectables permite utilizar la misma implementación de seguridad para la API y para los conjuntos de políticas. La infraestructura utiliza el módulo de inicio de sesión de JAAS y el manejador de retorno de llamada JAAS para la creación de y la validación de señales.

Los diagramas siguientes ilustran las diferencias entre los modelos de programación.

Figura 1. Arquitectura de señal conectable utilizando el modelo de programación JAX-WS
Arquitectura de señal conectable utilizando el modelo de programación JAX-WS
Figura 2. Arquitectura de señal conectable utilizando el modelo de programación JAX-RPC
Arquitectura de señal conectable utilizando el modelo de programación JAX-RPC

Qué está soportado cuando se utilizan las API WSS

La API WSS solo puede utilizarse en el cliente. Puede utilizar el cliente Java SE 6, el cliente de aplicación J2EE o un cliente de servidor (un proveedor de servicio que actúa como cliente) utilizando la API para proteger el mensaje SOAP con seguridad a nivel de mensajes.

Necesita conocimientos de Web Services Security (WSS) para poder utilizar las API WSS. Antes de utilizar la API WSS, recuerde que las API WSS:
  • Son interfaces basadas en Java.
  • Se implementan utilizando un modelo de fábrica (WSSFactory).
  • Dan soporte a los estándares WS-Security Versión 1.0 y 1.1, que incluyen los perfiles de señal Username y X.509, Versiones 1.0 y 1.1.
  • Están muy centradas en XML.
  • Incluyen un diseño orientado a objetos que simplifica las API.
  • Están orientadas a las tareas y permiten escenarios de uso comunes como, por ejemplo: firmar el cuerpo y cifrar el contenido del cuerpo del mensaje SOAP.
  • Son flexibles y ampliables, y permiten ampliar el soporte de tipo de señal.
  • Se basan en la infraestructura de proveedor y permiten utilizar distintos modelos de datos como, por ejemplo, AXIOM o DOM.
  • Ofrecen al programador de aplicaciones un mayor control y flexibilidad para aplicar WSS en sus aplicaciones.

Los valores predeterminados para la API WSS están predefinidos y forman parte del tiempo de ejecución de Web Services Security. Se proporcionan valores predeterminados para:

  • La duración de la indicación de la hora
  • El algoritmo de firma, el algoritmo de canonización, el método de conversión, el algoritmo de transformación, el método de referencia de señal de seguridad y partes firmadas como, por ejemplo, el cuerpo SOAP, las cabeceras de Web Services Addressing y la indicación de la hora.
  • El algoritmo de cifrado de claves, el algoritmo de cifrado de datos, el método de referencia de señal de seguridad y partes cifradas como, por ejemplo, el contenido del cuerpo SOAP.

La validación de forma tiene valores predeterminados parecidos a la firma (información de firma). De forma similar, el descifrado tiene valores predeterminados parecidos al cifrado.

Qué no está soportado cuando se utilizan las API WSS

La API WSS proporcionada con el servidor de aplicaciones no da soporte a la función siguiente:

  • El modelo de programación de aplicaciones es JAX-WS, lo que significa que las aplicaciones JAX-RPC (JSR-109) no están soportadas.
  • La API WSS está disponible en el intercambio de mensajes síncrono de la aplicación cliente JAX-WS. No obstante, la API WSS no está soportada para el cliente asíncrono.
  • El soporte de API WSS sólo está disponible para el solicitante y no para el proveedor.
  • El modelo de programación de semántica de aserción de identidad no está soportado en la API WSS porque la aserción de identidad no forma parte del estándar Web Services Security Versión 1.0. No obstante, puede utilizar la API WSS para añadir semántica de aserción de identidad en el proceso de señales.

Escenarios de WS-Trust y WS-SecureConversation

Hay varias maneras de proteger los mensajes SOAP de WS-Trust:
  • Utilización de la política del programa de arranque definida en el conjunto de políticas.
  • Utilización de la API WSS, que da soporte a WS-SecureConversation.
  • Habilitación de la política dinámica para el proveedor, de modo que el cliente puede recuperar la política del proveedor durante el tiempo de ejecución.

Una aplicación utiliza la API WSS para adquirir una señal de contexto de seguridad para Secure Conversation basada en API programática. El servicio de confianza de WebSphere Application Server ofrece a una aplicación la posibilidad de solicitar un símbolo de seguridad para acceder a un servicio. El ámbito y el foco del servicio de confianza es sólo para una señal de contexto de seguridad (SCT) de WebSphere Application Server para WS-SecureConversation.

Los escenarios WS-SecureConversation y WS-Trust se centran en las funciones de interoperatividad como, por ejemplo, la interacción del tiempo de ejecución y la configuración de distintos componentes. La API WSS se utiliza para proteger el RST y RSTR de rutina de carga para adquirir la señal de contexto de seguridad del servicio de confianza. Una vez adquirida la señal de contexto de seguridad, se crea una señal de clave derivada utilizando la API WSS. A continuación, la señal de clave derivada se puede utilizar para la firma y el cifrado.

Existen dos condiciones cuando se utiliza la API WSS para proteger el mensaje SOAP con Web Services Security:
  • La generación del mensaje SOAP seguro, que está en el código de aplicación del generador de solicitudes.
  • El consumo del mensaje SOAP protegido, que está en el código de aplicación del consumidor de respuestas.

En ambos casos, se proporciona una clase de excepción Java com.ibm.websphere.wssecurity.wssapi.WSSException si se encuentra un error.

Contexto de seguridad del cliente de servicios web

Cuando el cliente JAX-WS invoca los servicios web, el contexto de seguridad actual que crea el manejador de seguridad se almacena en el objeto RequestContext. De forma predeterminada, el contexto de seguridad en el entorno de ejecución del cliente de servicios web JAX-WS se reconstruye para la siguiente invocación de solicitudes de servicios web. Puede conservar el contexto de seguridad para las siguientes invocaciones de servicios web. Un ejemplo de esto se puede encontrar en un caso donde la política de seguridad necesite que el cliente envíe una señal de seguridad de nombre usuario con el nombre de usuario y la contraseña. Cuando el cliente envíe la primera solicitud para invocar el servicio, se le solicitará que especifique el nombre de usuario y la contraseña necesarios. El nombre de usuario y la contraseña se guardan en una señal Username SecurityToken, en un Asunto del contexto de seguridad. Para evitar que se le solicite volver especificar el nombre de usuario y la contraseña en siguientes invocaciones de la solicitud, puede conservar el contexto de seguridad. Hay dos métodos para conservar el contexto de seguridad: 1) configurar el tiempo de ejecución del cliente para que conserve automáticamente el contexto de seguridad del cliente para invocaciones de solicitudes posteriores; o 2) conservar el contexto de seguridad manualmente.

Para configurar el entorno de ejecución del cliente JAX-WS para conservar automáticamente el contexto de seguridad, establezca la propiedad del sistema com.ibm.websphere.wssecurity.context.management Java en true. Si esta propiedad del sistema es true, el tiempo de ejecución del cliente JAX-WS copia automáticamente el contexto de seguridad creado por el manejador de seguridad en RequestContext, y el contexto se utiliza para futuras invocaciones de la solicitud.

Para conservar de manera manual el contexto de seguridad, utilice el siguiente código de ejemplo:
// Primera solicitud
Service svc = Service.create(...);
svc.addPort(...);
Dispatch<String> dispatch = svc.createDispatch(...);
Map<String, Object> requestContext = dispatch.getRequestContext();
String response = dispatch.invoke(body.toString());

Object securityContext = requestContext.get(com.ibm.wsspi.websvcs.Constants.WEBSPHERE_SECURITY_CONTEXT);

// Solicitud siguiente

Dispatch<String> dispatch = svc.createDispatch(...);
Map<String, Object> requestContext = dispatch.getRequestContext();
Object securityContext = requestContext.put(com.ibm.wsspi.websvcs.Constants.WEBSPHERE_SECURITY_CONTEXT, securityContext);

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_wss_api
File name: cwbs_wss_api.html