Configuración de señales de seguridad del consumidor mediante la API de WSS
Puede proteger los mensajes SOAP, sin utilizar conjuntos de políticas, utilizando las API de Web Services Security. Para configurar la señal en el lado del consumidor, utilice las API de WSS (Web Services Security). Las señales de seguridad del consumidor forman parte del paquete de la interfaz com.ibm.websphere.wssecurity.wssapi.token.
Antes de empezar
La infraestructura de la señal conectable en WebSphere Application Server ha sido rediseñada para que se pueda reutilizar la misma infraestructura desde la API de WSS. Se puede utilizar la misma implementación de creación y validación de señal de seguridad para la ejecución de Web Services Security y, también, para el código de aplicación de la API de WSS. Asimismo, la infraestructura rediseñada simplifica el modelo de programación de la SPI y la hará más fácil para añadir tipos de señal de seguridad.
Puede utilizar la API de WSS o puede configurar las señales utilizando la consola administrativa. Para configurar señales, debe haber completado la tarea de señal siguiente: configurar las señales del generador, según sea necesario.
Acerca de esta tarea
En el lado del generador, CallbackHandler de JASS y LoginModule de JAAS son responsables para crear la señal de seguridad. Se crea la señal utilizando LoginModule de JAAS y utilizando CallbackHandler de JAAS para pasar los datos de autenticación. A continuación, LoginModule de JAAS crea un objeto securityToken, como UsernameToken, y lo pasa al tiempo de ejecución de Web Services Security.
En el lado del consumidor, el formato XML se pasa a LoginModule de JAAS para la validación o autenticación. A continuación, CallbackHandler de JAAS se utiliza para pasar datos de autenticación del tiempo de ejecución de Web Services Security a LoginModule. Después de autenticar la señal y de crearse un objeto de señal de seguridad, se pasa la señal a la ejecución de Web Services Security.
Cuando se utiliza la API de WSS para la validación de la señal del consumidor, se producen determinados comportamientos predeterminados: La forma más sencilla de utilizar la API de WSS es utilizar el módulo de inicio de sesión de JAAS y el manejador de retorno de llamada predeterminado. El ejemplo utiliza sus valores predeterminados, por lo tanto, los ejemplos no especifican el nombre del módulo de inicio de sesión de JAAS.
La forma más fácil de utilizar la API de WSS es utilizar el comportamiento predeterminado (consulte el código de ejemplo). La API de WSS proporciona valores predeterminados para el tipo de señal, el valor de la señal y el nombre de configuración de JAAS. Los comportamientos predeterminados de la señal incluyen:
Decisiones de la señal del consumidor | Comportamiento predeterminado |
---|---|
Qué tipo de señal utilizar | El tipo de señal especifica qué tipo de señal se va a utilizar para firmar y validar mensajes. La señal X.509 es el tipo de señal predeterminada. WebSphere Application Server proporciona los siguientes tipos de señal del consumidor preconfigurados:
También puede crear tipos de señal personalizados, según sea necesario. |
Qué nombre de configuración de inicio de sesión de JAAS especificar | El nombre de configuración del inicio de sesión de JAAS especifica qué nombre de configuración de inicio de sesión de JAAS se va a utilizar. |
Qué tipo de configuración utilizar | El tipo de configuración del módulo de inicio de sesión de JAAS. Sólo se pueden utilizar los tipos de configuración del consumidor preconfigurados para los tipos de señal del consumidor. |
La clase SecurityToken (com.ibm.websphere.wssecurity.wssapi.token.SecurityToken) es la clase de señal genérica y representa la señal de seguridad que tiene métodos para obtener la identidad, el formato XML y las claves criptográficas. Al utilizar la clase de la señal de seguridad, puede aplicar tanto la firma como el cifrado al mensaje SOAP. Sin embargo, para aplicar ambas cosas, debe tener dos objetos SecurityToken, uno para la firma y otro para el cifrado, respectivamente.
Los tipos de señal siguientes son subclases de la clase de señal de seguridad genérica:
Tipo de señal | Nombre de la configuración del inicio de sesión de JAAS |
---|---|
Señal de contexto de seguridad | system.wss.consume.sct |
Señal de clave derivada | system.wss.consume.dkt |
Los tipos de señal siguientes son subclases de la clase de señal de seguridad binaria:
Tipo de señal | Nombre de la configuración del inicio de sesión de JAAS |
---|---|
Señal X.509 | system.wss.consume.x509 |
Señal de vía de acceso de PKI X.509 | system.wss.consume.pkiPath |
Señal PKCS7 X.509 | system.wss.consume.pkcs7 |
- Para cada nombre de la configuración de la señal de inicio de sesión de JAAS, existe un nombre de configuración del generador de señales respectivo. Por ejemplo, para X509Token, el nombre de configuración del generador de señales respectivo es system.wss.generate.x509.
- LTPA y las señales de propagación de LTPA sólo están disponibles en un solicitante que se ejecuta como un cliente basado en servidor. LTPA y las señales de propagación LTPA no están soportados para Java™ SE 6 o para el cliente de aplicación Java EE.
Para validar X509Token en el mensaje SOAP en el lado del consumidor, el elemento <X509Token> debe aparecer en el elemento <wsse:Security>.
Procedimiento
Resultados
Ejemplo
En el código de ejemplo siguiente se proporciona el código de ejemplo de la API de WSS para realizar el descifrado utilizando el módulo de inicio de sesión y el manejador de retorno de llamada predeterminado.
// Obtener el contexto de mensaje
Object msgcontext = getMessageContext();
// Generar la instancia WSSFactory (paso: a)
WSSFactory factory = WSSFactory.getInstance();
// Generar la instancia WSSConsumingContext (paso: b)
WSSConsumingContext gencont = factory.newWSSConsumingContext();
// Generar el manejador de retorno de llamada (paso: c)
X509ConsumeCallbackHandler callbackHandler = new
X509ConsumeCallbackHandler(
"",
"enc-sender.jceks",
"jceks",
"storepass".toCharArray(),
"alice",
"keypass".toCharArray(),
"CN=Alice, O=IBM, C=US");
// Generar la instancia WSSDecryption (paso: d)
WSSDecryption dec = factory.newWSSDecryption(X509Token.class,
callbackHandler);
// Añadir WSSDecryption a WSSConsumingContext (paso: e)
concont.add(dec);
// Validar la cabecera de WS-Security (paso: f)
concont.process(msgcontext);
Qué hacer a continuación
Para cada tipo de señal, configure la señal utilizando las API de WSS o la consola administrativa. A continuación, especifique las señales de generador similares, si no lo ha hecho.
Si se configuran ambas señales, del generador y del consumidor, continúe protegiendo los mensajes SOAP en el consumidor de respuestas utilizando las API de WSS o configure las señales utilizando la consola administrativa.
Si se configuran ambas señales, del generador y del consumidor, continúe protegiendo los mensajes SOAP verificando la firma o bien descifrando el mensaje, según sea necesario. Puede utilizar las API de WSS o la consola administrativa para proteger los mensajes SOAP.