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):
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:
|
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:
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.
|
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:
|
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:
|
Procedimiento
Resultados
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);
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.