Selección de los métodos de las partes de verificación mediante la API WSSVerifyPart

Puede configurar la información de verificación de firmas para el enlace de consumidor mediante la API de WSS. El algoritmo de transformación y los métodos de conversión se utilizan para el enlace de consumidor. Utilice la API WSSVerifyPart para configurar los métodos del algoritmo. La API WSSVerifyPart se proporciona en el paquete com.ibm.websphere.wssecurity.wssapi.verification.

Para configurar la información acerca de las partes de verificación del consumidor que permiten proteger la integridad de los mensajes, en primer lugar debe firmar digitalmente y luego verificar la firma y las partes firmadas de los mensajes SOAP. La 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 transmiten por la red.

Métodos

Los métodos que se utilizan para la información de firmas son:
Método de conversión
Establece el método de conversión.
Método de transformación
Establece el método del algoritmo de transformación.

Algoritmos de conversión

El algoritmo del método de conversión se especifica dentro del elemento que se utiliza en el elemento <Digest>. WebSphere Application Server da soporte a los siguientes algoritmos de conversión preconfigurados.

Tabla 1. Métodos de conversión de las partes de verificación. Utilice las partes de verificación para proteger la integridad de los mensajes.
Método de conversión Descripción
WSSVerifyPart.SHA1 (el valor predeterminado) Un URI del algoritmo de conversión, SHA1: http://www.w3.org/2000/09/xmldsig#sha1
WSSVerifyPart.SHA256 Un URI del algoritmo de conversión, SHA256: http://www.w3.org/2001/04/xmlenc#sha256
WSSVerifyPart.SHA512 Un URI del algoritmo de conversión, SHA256: http://www.w3.org/2001/04/xmlenc#sha512

Algoritmos de transformación

El algoritmo de transformación se especifica dentro del elemento <Transform> y especifica el algoritmo de transformación de la parte firmada. WebSphere Application Server da soporte a los siguientes algoritmos de transformación preconfigurados:

Tabla 2. Métodos de transformación de las partes de verificación. Utilice las partes de verificación para proteger la integridad de los mensajes.
Método de conversión Descripción
WSSVerifyPart.TRANSFORM_ENVELOPED_SIGNATURE Un URI del algoritmo de transformación, firma de envoltura: http://www.w3.org/2000/09/xmldsig#enveloped-signature
WSSVerifyPart.TRANSFORM_STRT10 Un URI del algoritmo de transformación, STR-Transform: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
WSSVerifyPart.EXC_C14N (el valor predeterminado) Un URI del algoritmo de transformación, Exc-C14N: http://www.w3.org/2001/10/xml-exc-c14n#
WSSVerifyPart.TRANSFORM_XPATH2_FILTER Un URI del algoritmo de transformación, filtro XPath2: http://www.w3.org/2002/06/xmldsig-filter2
Para las API de WSS, WebSphere Application Server no se da soporte a los siguientes algoritmos de transformación:
  • http://www.w3.org/TR/1999/REC-xpath-19991116
  • http://www.w3.org/2002/07/decrypt#XML

El ejemplo siguiente proporciona el código de la API de WSS de ejemplo que verifica el texto utilizando SHA256 como método de conversión y TRANSFORM_EXC_14N y TRANSFORM_STRT10 como métodos de transformación:

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

	  // generar la instancia WSSFactory
	  WSSFactory factory = WSSFactory.getInstance();		

	  // generar la instancia de WSSConsumingContext
	  WSSConsumingContext concont = factory.newWSSConsumingContext();


	  // generar la lista de certificados
	  	  String certpath = "intca2.cer";// La ubicación del archivo de certificados X509 
      X509Certificate x509cert = null;
	           try {
		  InputStream is = new FileInputStream(certpath);
		  CertificateFactory cf = CertificateFactory.getInstance("X.509");
		  x509cert = (X509Certificate)cf.generateCertificate(is);
	  } catch(FileNotFoundException e1){
		  throw new WSSException(e1);
	  } catch (CertificateException e2) {
		  throw new WSSException(e2);
	  }

	  Set<Object> eeCerts = new HashSet<Object>();
	  eeCerts.add(x509cert);  
	  // crear certStore
	  java.util.List<CertStore> certList = new java.util.ArrayList<CertStore>();
	  CollectionCertStoreParameters certparam = new 
         CollectionCertStoreParameters(eeCerts);
	  CertStore cert = null;
	           try {
		  cert = CertStore.getInstance("Collection", certparam, "IBMCertPath");
	  } catch (NoSuchProviderException e1) {
		  throw new WSSException(e1);
	  } catch (InvalidAlgorithmParameterException e2) {
		  throw new WSSException(e2);
	  } catch (NoSuchAlgorithmException e3) {
		  throw new WSSException (e3);
	  }
	  if(certList != null ){
		  certList.add(cert);
	  }

	  // generar el manejador de retorno de llamada	  	    
	  X509ConsumeCallbackHandler callbackHandler = new 
         X509ConsumeCallbackHandler(
			  "dsig-receiver.ks", 
			  "jks",
			  "server".toCharArray(), 
			  certList, 
			  java.security.Security.getProvider("IBMCertPath")
	  );

	  //generar la instancia de WSSVerification
	  WSSVerification ver = factory.newWSSVerification(X509Token.class, 
        callbackHandler);

	  // establecer uno o más candidatos del método de firma utilizado para 
    // la verificación (paso. 1)
	  // DEFAULT : WSSVerification.RSA_SHA1
	  ver.addAllowedSignatureMethod(WSSVerification.HMAC_SHA1);

	  // establecer uno o más candidatos del método de canonicalización utilizado para 
    //    la verificación (paso. 2)
	  // DEFAULT : WSSVerification.EXC_C14N 
	  ver.addAllowedCanonicalizationMethod(WSSVerification.C14N);
	  ver.addAllowedCanonicalizationMethod(WSSVerification.EXC_C14N);

	  //establecer la parte que se ha de especificar mediante WSSVerifyPart
	  WSSVerifyPart verPart = factory.newWSSVerifyPart();

	  //establecer la parte que se ha de especificar mediante la palabra clave
	  verPart.setRequiredVerifyPart(WSSVerification.BODY);

	  //establecer los candidatos de los métodos de conversión que utilizar en la verificación (paso 3)
	  // VALOR PREDETERMINADO: WSSVerifypart.TRANSFORM_EXC_C14N 
	  verPart.addAllowedTransform(WSSVerifyPart.TRANSFORM_EXC_C14N);
	  verPart.addAllowedTransform(WSSVerifyPart.TRANSFORM_STRT10);

	  //establecer los candidatos de los métodos de conversión que utilizar en la verificación (paso 4)
	  // DEFAULT : WSSVerifyPart.SHA1
	  verPart.addAllowedDigestMethod(WSSVerifyPart.SHA256);

	  //establecer WSSVerifyPart en WSSVerification
	  ver.addRequiredVerifyPart(verPart);

	  //añadir WSSVerification a WSSConsumingContext
	  concont.add(ver);

	  // validar la cabecera WS-Security
	  concont.process(msgcontext);

Icon that indicates the type of topic Reference topic



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