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:

Tabla 1. Comportamientos predeterminados de señal. De forma predeterminada, hay varias características de señal configuradas.
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:

  • Señal de contexto de seguridad
  • Señal de clave derivada
  • Señales X509

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:

Tabla 2. Subclases de SecurityToken. Utilice las subclases para representar la señal de seguridad.
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:

Tabla 3. Subclases en BinarySecurityToken. Utilice las subclases para representar la 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
Nota:
  • 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

  1. Para validar el paquete securityToken, com.ibm.websphere.wssecurity.wssapi.token, en primer lugar, asegúrese de que está instalado el servidor de aplicaciones.
  2. Si utiliza los valores predeterminados, configura las señales para el proceso del consumidor de señales de Web Services Security , para cada tipo de señal, el proceso es similar al proceso de consumidor de la señal siguiente:
    1. Utiliza WSSFactory.getInstance() para obtener la instancia de implementación de la API de WSS.
    2. Crea la instancia WSSConsumingContext desde la instancia WSSFactory. Tenga en cuenta que siempre se llama a WSSConsumingContext en una aplicación cliente de JAX-WS.
    3. Crea un CallbackHandler de JAAS con información que es necesaria para validar la señal de seguridad. Revise la información de la clase de señal para la cual los parámetros son obligatorios u opcionales. Por ejemplo, para una señal X.509, puede configurar lo siguiente:
      Tabla 4. Opciones de la señal X.509. Utilice las opciones de configuración X.509 para controlar el comportamiento de la señal.
      Información de señales Descripción
      keyStoreRef Indica el nombre de referencia del almacén de claves que se almacena en la tarjeta criptográfica. Se puede especificar, cuando la tarjeta se establece en el hardware.
      keyStorePath Indica la vía de acceso del archivo de almacén de claves. No es necesario especificar la keyStorePath, si se establece keyStoreRef.
      keyStorePassword Indica la contraseña del archivo de almacén de claves.
      keyStoreType Indica el tipo del archivo de almacén de claves.
      alias Indica el alias de la clave.
      keyPassword Indica la contraseña de la clave.
      keyName Indica el nombre del sujeto de la clave.
    4. Establece el manejador de retorno de llamada en WSSDecryption, WSSVerification o WSSConsumingContext.
    5. Si el manejador de retorno de llamada se establece en WSSDecryption o WSSVerification, añade uno de los dos a WSSConsumingContext.
    6. Llama a WSSConsumingContext.process().
  3. Si se utilizan otros valores que no son los valores predeterminados, configura las señales para el proceso del consumidor de señales de Web Services Security. Para cada tipo de señal, el proceso es similar al proceso de consumidor de señales siguiente:
    1. Si no utiliza el módulo de inicio de sesión de JAAS ni el manejador de retorno de llamada predeterminado, tendrá que preparar uno personalizado y registrar el nombre de la configuración de inicio de sesión de JAAS utilizando la consola administrativa previamente.
    2. Utiliza WSSFactory.getInstance() para obtener la instancia de implementación de la API de WSS.
    3. Crea la instancia WSSConsumingContext desde la instancia WSSFactory. Tenga en cuenta que siempre se llama a WSSConsumingContext en una aplicación cliente de JAX-WS.
    4. Crea un manejador de retorno de llamada con información necesaria para validar la señal de seguridad. Revise la información de la clase de señal para la cual los parámetros son obligatorios u opcionales. Por ejemplo, para una señal X.509, puede configurar lo siguiente:
      Tabla 5. Opciones de la señal X.509. Utilice las opciones de configuración X.509 para controlar el comportamiento de la señal.
      Información de señales Descripción
      keyStoreRef Indica el nombre de referencia del almacén de claves que se almacena en la tarjeta criptográfica. Se puede especificar, cuando la tarjeta se establece en el hardware.
      keyStorePath Indica la vía de acceso del archivo de almacén de claves. No es necesario especificar la keyStorePath, si se establece keyStoreRef.
      keyStorePassword Indica la contraseña del archivo de almacén de claves.
      keyStoreType Indica el tipo del archivo de almacén de claves.
      alias Indica el alias de la clave.
      keyPassword Indica la contraseña de la clave.
      keyName Indica el nombre del sujeto de la clave.
    5. Establece el nombre de configuración de JAAS y el manejador de retorno de llamada en WSSDecryption o WSSVerification o WSSConsumingContext.
    6. Si el nombre de configuración de JAAS y el manejador de retorno de llamada se han establecido en WSSDecryption o WSSVerification, llama a uno de los dos en WSSConsumingContext.
    7. Llama a WSSConsumingContext.process().

Resultados

Si se produce una condición de error, se proporciona una excepción WSSException. Si es correcto, se llama a WSSConsumingContext.process() y se valida (autentica) la señal de seguridad en el lado del consumidor.

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.


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_confwssconsumertoken
File name: twbs_confwssconsumertoken.html