Configuración de métodos de verificación de firma de respuesta para el cliente
Utilice las API WSSVerification y WSSVerifyPart para seleccionar los métodos de verificación de firma. Los métodos de verificación de firma de solicitudes incluyen el algoritmo de conversión y los métodos de transporte.
Antes de empezar
- Utilice la API WSSVerification para configurar los métodos de canonicalización y firma.
- Utilice la API WSSVerifyPart para configurar los métodos de conversión y transformación.
Acerca de esta tarea
La siguiente tabla describe la finalidad de esta información. Algunas de estas definiciones se basan en la especificación de firmas XML, que se puede consultar en el siguiente sitio web:http://www.w3.org/TR/xmldsig-core.
Nombre del método | Finalidad |
---|---|
Algoritmo de conversión | Se aplica a los datos después de que se efectúen las transformaciones, si así se especifican, para ceder el elemento <DigestValue>. La firma del elemento <DigestValue> enlaza el contenido del recurso con la clave de firmante. El algoritmo seleccionado para la configuración del emisor de solicitudes de cliente debe coincidir con el algoritmo seleccionado en la configuración del receptor de solicitudes de cliente. |
Algoritmo de transformación | Se aplica al elemento <Transform>. |
Algoritmo de firma | Especifica los URI (identificadores de recursos uniformes) del método de verificación de firma. |
Algoritmo de canonicalización | Especifica los URI (identificadores de recursos uniformes) del método de canonicalización. |
Después de configurar el cliente para firmar digitalmente el mensaje, debe configurar el cliente para verificar la firma digital. Puede utilizar las API de WSS o configurar conjuntos de políticas, utilizando la consola administrativa para verificar la firma digital y seleccionar la verificación y los algoritmos de la parte de verificación. Si utiliza las API de WSS para realizar la configuración, utilice las API WSSVerification y WSSVerifyPart para especificar qué partes del mensaje firmadas digitalmente se van a verificar y para especificar qué métodos de algoritmo se van a utilizar, cuando se configura el cliente para la firma de solicitudes.
Las API WSSVerification y WSSVerifyPart realizan los pasos siguientes para configurar la verificación de firma y los métodos del algoritmo de las partes de verificación:
Procedimiento
Resultados
Ejemplo
En el ejemplo siguiente se proporciona un código de ejemplo de la API de WSS que especifica la información de verificación, el cuerpo como una parte que se debe verificar, HMAC_SHA1 como un método de firma, C14N y EXC_C14N como los candidatos de los métodos de canonicalización, TRANSFORM_STRT10 como un método de transformación y SHA256 como un método de conversión.
// Obtener el contexto de mensaje
Object msgcontext = getMessageContext();
// Generar la instancia WSSFactory
WSSFactory factory = WSSFactory.getInstance();
// Generar la instancia 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 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 va a ser especificada por WSSVerifyPart
WSSVerifyPart verPart = factory.newWSSVerifyPart();
// Establecer la parte que va a ser especificada por la palabra clave
verPart.setRequiredVerifyPart(WSSVerification.BODY);
// Establecer los candidatos de los métodos de conversión para utilizar para la verificación (paso. 3)
// DEFAULT : WSSVerifypart.TRANSFORM_EXC_C14N : String
verPart.addAllowedTransform(WSSVerifyPart.TRANSFORM_STRT10);
// Establecer los candidatos de los métodos de conversión para utilizar para 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 de WS-Security
concont.process(msgcontext);
Qué hacer a continuación
Ha completado la configuración de los algoritmos de verificación de firma. A continuación, configure los algoritmos de cifrado o descifrado, si todavía no los ha configurado. O bien, configure la información de la señal de seguridad, según sea necesario.