Adición de partes firmadas mediante la API WSSSignPart

Puede proteger los mensajes SOAP, sin utilizar conjuntos de políticas para la configuración, utilizando las API de WSS (Web Services Security). Para configurar partes que se van a firmar para los enlaces generador de solicitudes (lado del cliente), utilice la API WSSSignPart para proteger la integridad de los mensajes y para configurar los métodos del algoritmo de conversión y transformación. La API WSSSignPart forma parte del paquete com.ibm.websphere.wssecurity.wssapi.signature.

Antes de empezar

Puede utilizar la API de WSS o puede configurar los conjuntos de políticas utilizando la consola administrativa para configurar la información de firmas. Para proteger los mensajes SOAP utilizando la información de firmas, debe completar una de las tareas siguientes:

  • Configurar la información de firmas
  • Configurar las partes firmas, según sea necesario.

Acerca de esta tarea

WebSphere Application Server utiliza la información de firmas para que el generador predeterminado firme partes del mensaje, y utiliza la firma XML digital con los algoritmos existentes de conversión y transformación (por ejemplo, SHA1 o TRANSFORM_EXC_C14N).

La información de firmas especifica las limitaciones de integridad que se aplican a los mensajes generados. Las partes firmas se utilizan para proteger la integridad de los mensajes. Puede especificar las partes firmadas que se van a añadir para la protección de la integridad de los mensajes.

En la tabla siguiente se muestran las partes firmadas necesarias, cuando se define la limitación de seguridad de firma digital (integridad):

Tabla 1. Información de partes firmadas. Utilice las partes firmadas para proteger los mensajes.
Partes firmadas Descripción
palabra clave Añade partes firmadas utilizando palabras clave. WebSphere Application Server soporta las siguientes palabras clave para las partes firmadas:
  • BODY
  • ADDRESSING_HEADERS
  • TIMESTAMP
Las cabeceras WS-Addressing no se cifran, pero se pueden firmar.
xpath Añade las partes firmadas necesarias utilizando una expresión XPath.
cabecera Añade la cabecera, especificada por QName, como una parte firmada.
timestamp Añade un objeto WSSTimestamp como una parte firmada. Si se especifica, la información de la indicación de fecha y hora especifica cuando se genera y caduca el mensaje.

Se pueden especificar distintas partes de mensaje en la protección del mensaje para la solicitud en el lado del generador. WSSSignPart permite añadir un algoritmo de transformación, establecer un método de conversión, establecer objetos como destinos, especificar si es un elemento y las partes firmadas como, por ejemplo: el cuerpo SOAP, la cabecera WS-Addressing y la información de indicación de fecha y hora.

Para la información de firmas, se producen determinados comportamientos predeterminados. La forma más sencilla de utilizar la API WSSSignPart es utilizar el comportamiento predeterminado (consulte el código de ejemplo). Los comportamientos predeterminados de las partes firmadas incluyen:

Tabla 2. Comportamiento predeterminado de las partes firmadas. De forma predeterminada, hay varias características de parte firmada configuradas.
Decisiones de firma Comportamiento predeterminado
Qué partes del mensaje SOAP firmar

WebSphere Application Server soporta que se firmen las siguientes partes del mensaje SOAP y que se utilicen para la protección del mensaje.

  • WSSSignature.BODY
  • WSSSignature.ADDRESSING_HEADERS
  • WSSSignature.TIMESTAMP
Qué método de conversión utilizar

Establece el método del algoritmo de conversión. El algoritmo del método de conversión que se especifica en el elemento <DigestMethod> se utiliza en el elemento <SigningInfo>.

WebSphere Application Server da soporte a los métodos de conversión preconfigurados siguientes:
  • WSSSignPart.SHA1 (el valor predeterminado): http://www.w3.org/2000/09/xmldsig#sha1
  • WSSSignPart.SHA256: http://www.w3.org/2001/04/xmlenc#sha256
  • WSSSignPart.SHA512: http://www.w3.org/2001/04/xmlenc#sha512
Qué algoritmos de transformación utilizar Añade el método de transformación. El algoritmo de transformación se especifica en el elemento <Transform> y especifica el algoritmo de transformación para la firma.

WebSphere Application Server da soporte a los siguientes algoritmos de transformación preconfigurados:

  • WSSSignPart.TRANSFORM_EXC_C14N (el valor predeterminado): http://www.w3.org/2001/10/xml-exc-c14n#
  • WSSSignPart.TRANSFORM_XPATH2_FILTER: http://www.w3.org/2002/06/xmldsig-filter2

    Utilice este método de transformación para garantizar la compatibilidad con BSP (Basic Security Profile).

  • WSSSignPart.TRANSFORM_STRT10: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
  • WSSSignPart.TRANSFORM_ENVELOPED_SIGNATURE: http://www.w3.org/2000/09/xmldsig#enveloped-signature

Procedimiento

  1. Para habilitar Web Services Security utilizando la API de WSS (WSSSignPart), en primer lugar, asegúrese de que está instalado el servidor de aplicaciones.
  2. Utilice la API WSSSignPart para firmar las partes del mensaje y especificar los algoritmos en un mensajes SOAP. El proceso de la API de WSS para las partes firmadas sigue estos pasos de proceso:
    1. Utiliza WSSFactory.getInstance() para obtener la instancia de implementación de la API de WSS.
    2. Crea la instancia WSSGenerationContext desde la instancia WSSFactory.
    3. Crea SecurityToken desde WSSFactory para configurar la clave para la firma.
    4. Crea WSSSignature desde la instancia WSSFactory utilizando SecurityToken.
    5. Crea WSSSignPart desde la instancia WSSFactory.
    6. Establece la parte que se va a firmar y el método de conversión o el método de transformación especificado por el paso g o el paso h, si el valor predeterminado no es apropiado.
    7. Establece el método de conversión, si el valor predeterminado no es apropiado.
    8. Establece el método de transformación, si el valor predeterminado no es apropiado.
    9. Añade WSSSignPart a WSSSignature. Después de establecer cualquier WSSSignPart en WSSSignature, se omiten las partes predeterminadas que se van a firmar, que se especifican en WSSSignature.
    10. Añade WSSSignature a WSSGenerationContext.
    11. Llama a WSSGenerationContext.process() con el SOAPMessageContext.

Resultados

Ha completado los pasos para configurar las partes firmadas para la sección del generador de los archivos de enlaces. Si se produce una condición de error, se proporciona una excepción WSSException. Si es correcto, se llama a WSSGenerationContext.process() y se aplica Web Services Security al mensaje SOAP.

Ejemplo

En el ejemplo siguiente se proporciona código de ejemplo que utiliza todos los métodos definidos en la API WSSSignPart:

// Obtener el contexto de mensaje 
   Object msgcontext = getMessageContext();

// Generar la instancia WSSFactory (paso: a)
   WSSFactory factory = WSSFactory.getInstance();		

// Generar la instancia WSSGenerationContext (paso: b)
   WSSGenerationContext gencont = factory.newWSSGenerationContext();
		
// Generar el manejador de retorno de llamada
   X509GenerateCallbackHandler callbackHandler = new 
      X509GenerateCallbackHandler
      "",
      "dsig-sender.ks",
      "jks", 
      "client".toCharArray(), 
      "soaprequester", 
      "client".toCharArray(), 
      "CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP", null);

// Generar la señal de seguridad utilizada para la firma (paso: c)
   SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);

// Generar la instancia WSSSignature (paso: d)
   WSSSignature sig = factory.newWSSSignature(token);

// Establecer la parte especificada por WSSSignPart  (paso: e)
   WSSSignPart sigPart = factory.newWSSSignPart();

// Establecer la parte especificada por WSSSignPart  (paso: f)
   sigPart.setSignPart(WSSSignature.BODY);

// Establecer el método de conversión especificado por WSSSignPart  (paso: g)
   sigPart.setDigestMethod(WSSSignPart.SHA256);

// Establecer el método de transformación especificado por WSSSignPart  (paso: h)
   sigPart.setTransformMethod(WSSSignPart.TRANSFORM_STRT10);

// Añade la parte especificada por WSSSignPart  (paso: i)
   sig.addSignPart(sigPart);

// Añade WSSSignature a WSSGenerationContext  (paso: j)
   gencont.add(sig);
		
// Generar la cabecera de WS-Security (paso: k)
gencont.process(msgcontext);
Nota: X509GenerationCallbackHandler necesita la contraseña de la clave porque se utiliza la clave privada para la firma.

Qué hacer a continuación

Utilice la API WSSVerifyPart o configure conjuntos de políticas utilizando la consola administrativa para verificar las partes firmadas en el lado del consumidor.


Icon that indicates the type of topic Task topic



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