Configuración de la información de firmas mediante las API de WSS

Puede configurar la información de firmas para los enlaces del generador (emisor) de solicitudes del lado del cliente. La información de firmas se utiliza para firmar y validar partes de un mensaje que incluyen el cuerpo SOAP, la información de indicación de fecha y hora y la señal Username (nombre de usuario). Para configurar el cliente para la firma de solicitudes, especifique qué partes del mensaje se van a firmar digitalmente al configurar el cliente.

Antes de empezar

WebSphere Application Server utiliza la firma digital XML con los algoritmos existentes como, por ejemplo, RSA, HMAC y SHA1. La firma XML define muchos métodos para describir información clave y permite la definición de un nuevo método. Antes de completar estos pasos, familiarícese con la firma digital XML para firmar y verificar las firmas digitales para el contenido digital.

Acerca de esta tarea

Al incluir la firma XML en los mensajes SOAP, se obtienen las siguientes ventajas: la integridad y autenticación de los mensajes. El término integridad hace referencia a la firma digital, mientras que la confidencialidad hace referencia al cifrado. La integridad disminuye el riesgo de que se modifiquen los datos mientras estos se trasmiten por Internet. WebSphere Application Server utiliza la información de firmas para que el generador predeterminado firme partes del mensaje como, por ejemplo, el cuerpo, la indicación de fecha y hora y la señal Username.

Para la información de firmas, debe especificar lo siguiente:
  • Qué partes del mensaje se van a firmar.
  • La tecla de claves a la que hace referencia la información de claves para las claves de firma.
  • Los algoritmos de firma.

WebSphere Application Server proporciona valores predeterminados para los enlaces. Sin embargo, un administrador debe modificar los valores predeterminados para un entorno de producción.

La API WSSSignature configura las partes siguientes como partes de firma:

Tabla 1. Partes de firma preconfiguradas. Utilice la información de firmas para validar las partes de un mensaje.
Parte Descripción
Objeto de señal de seguridad Este objeto autentica el cliente. Si se especifica esta opción, el mensaje se firma. Puede firmar digitalmente el mensaje mediante una señal de seguridad, si selecciona un método de autenticación de inicio de sesión.
Objeto WSSTimestamp Este objeto añade una indicación de fecha y hora a un mensaje. La indicación de hora determina si el mensaje es válido a partir de la hora en el que se envía el mensaje y se recibe posteriormente.
Objeto WSSSignature Part Este objeto añade las partes de firma a un mensaje.
Cabecera SOAP y el QName como destino La parte de la firma añade la cabecera, especificada por QName, como una parte de verificación.

Las API de WSS permiten el uso de palabras clave o de una expresión XPath para especificar qué partes del mensaje se van a firmar. WebSphere Application Server soporta el uso de las siguientes palabras clave:

Tabla 2. Palabras clave de firma soportadas. La información de claves se utiliza para especificar las partes de un mensaje que se firman.
Palabra clave Referencias
ADDRESSING_HEADERS Las cabeceras de direccionamiento de servicios web (WS-Addressing).
BODY El cuerpo del mensaje SOAP. El cuerpo es la parte de los datos del usuario del mensaje.
TIMESTAMP La información de indicación de fecha y hora de creación y de caducidad.

Las API de WSS (Web Services Security) se utilizan para configurar la información de firmas para la sección del generador de solicitudes (lado del cliente) del archivo de enlaces. Para configurar la información de firmas en el lado del cliente, utilice las API de WSS o configure conjuntos de políticas para firmar utilizando la consola administrativa.

Si realiza la configuración utilizando las API de WSS, las API WSSSignature y WSSSignPart completan los siguientes pasos para especificar qué partes del mensaje se van a firmar digitalmente cuando se configura el cliente para la firma del generador de solicitudes:

Procedimiento

  1. La API WSSSignature añade las partes necesarias del mensaje SOAP para la firma digital. Se puede utilizar una palabra clave o una expresión XPath para especificar las partes de cifrado necesarias.
  2. La API WSSSignature establece el algoritmo del método de firma. El método de firma predeterminado es RSA_SHA1. WebSphere Application Server admite los algoritmos preconfigurados siguientes.

    WebSphere Application Server no soporta el algoritmo siguiente para DSA-SHA1: http://www.w3.org/2000/09/xmldsig#dsa-sha1. No puede utilizar el algoritmo DSA-SHA1, si desea que sea compatible con BSP (Basic Security Profile).

    Cualquier elemento ds:SignatureMethod/@Algorithm de una firma se basa en una clave simétrica y debe tener un valor de RSA-SHA1 o HMAC-SHA1.

    El algoritmo que se especifica para la configuración del generador de solicitudes debe coincidir con el algoritmo especificado para la configuración del consumidor de solicitudes.

  3. La API WSSSignature establece el método de canonicalización. El método de firma predeterminado es EXC_C14N. WebSphere Application Server admite los algoritmos preconfigurados siguientes.
    • El URI del algoritmo de canonicalización exclusivo, EXC_C14N: http://www.w3.org/2001/10/xml-exc-c14n#.
    • El URI del algoritmo de canonicalización inclusivo, C14N: http://www.w3.org/2001/10/xml-c14n#.

    El algoritmo de canonicalización especificado para el generador debe coincidir con el algoritmo del consumidor.

  4. La API WSSSignature añade una señal de seguridad. La API añade información sobre la señal de información que se va a utilizar para la firma como, por ejemplo:
    • La clase de la señal de seguridad.
    • El manejador de retorno de llamada.
    • El nombre de la configuración del inicio de sesión de JAAS.
  5. La API WSSSignature establece el tipo de señal de seguridad y el tipo de referencia de señales. WebSphere Application Server da soporte a las referencias de señales preconfiguradas siguientes:
    • SecurityToken.REF_STR

      Representa la referencia de la señal de seguridad como un tipo de referencia de señales.

    • SecurityToken.REF_KEYID

      Representa la referencia del identificador de claves como un tipo de referencia de señales.

    • SecurityToken.REF_EMBEDDED

      Representa la referencia incorporada como un tipo de referencia de señales.

    • SecurityToken.REF_THUMBPRINT

      Representa la referencia del certificado de huella como un tipo de referencia de señal.

  6. Si se establece SecurityToken.REF_KEYID como el tipo de referencia de señales, la API WSSSignature establece el tipo de firma de información de claves y configura la información de claves a la que hacen referencia las referencias de información de claves. WebSphere Application Server da soporte a lo siguiente:
    • Que se especifique que el elemento KeyInfo no se firma.
    • Que se especifique que todo el elemento <KeyInfo> se firma.
    • Que se especifique que los elementos hijo <Keyinfochildelements> del elemento <KeyInfo> se firman.

    Si no especifica ninguno de los tipos de firma anteriores, WebSphere Application Server especifica que se firme todo el elemento <KeyInfo>, predeterminado.

    Si selecciona Keyinfo o Keyinfochildelements y selecciona http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform como algoritmo de transformación en un paso posterior, WebSphere Application Server firmará también la señal referenciada.

    El tipo de firma de información de claves para el generador debe coincidir con el tipo de firma del consumidor.

  7. La API WSSSignature especifica si es necesaria la confirmación de firma. La especificación OASIS Web Services Security (WS-Security) Versión 1.1 define el uso de la confirmación de firma. Si utiliza WS-Security Versión 1.0, esta función no está disponible.

    El valor de la confirmación de firma se almacena con objeto de validar la confirmación de firma con él, después de devolver el mensaje recibido. Se llama a este método, si se espera que el mensaje de respuesta esté conectado a una confirmación de firma en el mensaje SOAP.

  8. La API WSSSignPart especifica la referencia de partes. La referencia de parte especifica las partes del mensaje que deben firmarse digitalmente.

    La referencia de partes se refiere a la parte del mensaje que está firmada digitalmente. El atributo part hace referencia al nombre del elemento <Integrity>, si se especifica el elemento <PartReference> para la firma. Puede especificar varios elementos <PartReference> dentro del elemento <SigningInfo>. El elemento <PartReference> tiene dos elementos hijo, cuando se especifica para la verificación de firmas: <DigestTransform> y <Transform>.

  9. La API WSSSignPart especifica el algoritmo del método de conversión. El algoritmo del método de conversión especificado en el elemento <DigestMethod> se utiliza en el elemento <SigningInfo>.
    WebSphere Application Server da soporte a los siguientes algoritmos de conversión preconfigurados.
    • http://www.w3.org/2000/09/xmldsig#sha1
    • http://www.w3.org/2001/04/xmlenc#sha256
    • http://www.w3.org/2001/04/xmlenc#sha512
  10. La API WSSSignPart especifica el algoritmo de transformación. El algoritmo de transformación es el que 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:
    • http://www.w3.org/2001/10/xml-exc-c14n#
    • http://www.w3.org/TR/1999/REC-xpath-19991116

      No utilice este algoritmo de transformación, si desea que sea compatible con BSP (Basic Security Profile). En su lugar, utilice http://www.w3.org/2002/06/xmldsig-filter2 para garantizar la compatibilidad.

    • http://www.w3.org/2002/06/xmldsig-filter2
    • http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
    • http://www.w3.org/2002/07/decrypt#XML
    • http://www.w3.org/2000/09/xmldsig#enveloped-signature
    El algoritmo de transformación que seleccione para el generador debe coincidir con el algoritmo de transformación que seleccione para el consumidor.
    Importante: Si se cumplen las dos condiciones siguientes, WebSphere Application Server firma la señal referenciada:
    • Ha seleccionado previamente la opción Keyinfo o Keyinfochildelements
    • Ha seleccionado http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform como algoritmo de transformación.
  11. Si configura correctamente la información de firmas de cliente y servidor, pero recibe un error El cuerpo soap no está firmado al ejecutar el cliente, es posible que sea necesario configurar el actor. Configure conjuntos de políticas utilizando la consola administrativa para configurar las mismas series de actor para el servicio web en el servidor, que procesa la solicitud y devuelve la respuesta.

    La información de actor, tanto en el cliente como en el servidor, debe referirse exactamente a la misma serie. Cuando los campos de actor del cliente y del servidor coinciden, se actúa sobre la solicitud o respuesta en lugar de enviarlas en sentido descendente. El actor podría ser distinto, si los servicios web actúan como una pasarela para otros servicios web. Sin embargo, en todos los demás casos, asegúrese de que la información de actor coincide en el cliente y el servidor. Cuando los servicios web actúan como pasarela y no tienen el mismo actor configurado que la solicitud que pasa por la misma, éstos no procesarán el mensaje desde un cliente. De lo contrario, estos servicios web envían la solicitud en sentido descendente. El proceso en sentido descendente que contiene la serie de actor correcta procesa la solicitud. La misma situación ocurre para la respuesta. Por lo tanto, es importante que verifique que los campos de actor de cliente y de servidor estén sincronizados.

Resultados

Después de que las API WSSSignature y WSSSignPart completen estos pasos, la información de firmas se configura para las secciones del generador de los archivos de enlaces.

Ejemplo

El ejemplo siguiente muestra código de ejemplo de la API de WSS para configurar la firma, generar el manejador de retorno de llamada y para especificar el tipo de señal X.509 como la señal de seguridad:

WSSFactory factory = WSSFactory.getInstance();
// Crear una instancia de un contexto de generación
WSSGenerationContext gencont = factory.newWSSGenerationContext();

// Generar el manejador de retorno de llamada y especificar la señal X.509
   X509GenerateCallbackHandler callbackhandler = generateCallbackHandler();
   SecurityToken token = factory.newSecurityToken(X509Token.class, 
                                                  callbackHandler);

// Establecer la información de firmas
WSSSignature sig = factory.newWSSSignature(token);
// Añadir la cabecera utilizando QName
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "To"));
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "MessageID"));
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "Action"));
// Aplicar la firma
   gencont.add(sig); 

// Proteger el mensaje 
gencont.process(msgctx);

Qué hacer a continuación

Debe configurar información de firmas similar para los enlaces del consumidor de solicitudes (receptor) del lado del cliente completando las tareas de verificación siguientes:
  • Verificar la firma.
  • Elegir los métodos del algoritmo de firma.
  • Cambiar o añadir partes firmadas, según sea necesario.

Si ya se ha configurado la verificación de firma, configure la información de cifrado y descifrado, o bien configure las señales del consumidor y del generador.


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_configsigninfogenjaxws
File name: twbs_configsigninfogenjaxws.html