Sustitución del método de autenticación del consumidor UsernameToken utilizando un módulo de inicio de sesión JAAS apilado
De forma predeterminada, el consumidor UsernameToken de seguridad de servicios web, UNTConsumeLoginModule, siempre valida el nombre de usuario y la contraseña que se encuentran dentro de la señal en el registro de WebSphere. Puede utilizar las SPI que GenericSecurityTokenFactory proporciona para eludir este método de autenticación.
Acerca de esta tarea
Si desea sustituir el método de autenticación que utiliza UNTConsumeLoginModule, debe proporcionar su propio módulo de inicio de sesión JAAS personalizado para realizar la autenticación. El módulo de inicio de sesión personalizado se apila en UNTConsumeLoginModule en una configuración de JAAS personalizada. El UNTConsumeLoginModule consume y valida la señal XML. La validación de los valores proporcionados para el nombre de usuario y la contraseña se aplaza para el módulo de inicio de sesión personalizado apilado.
Debido a que el uso de UNTConsumeLoginModule lleva consigo la suposición de que el nombre de usuario y la contraseña serán autenticados, se colocan más requisitos en un módulo de inicio de sesión apilado que tiene la intención de realizar esta función que los que se colocan en los módulos de inicio de sesión para proporcionar funciones de señal dinámica.
Para indicar a UNTConsumeLoginModule que no debe autenticar el nombre de usuario y la contraseña, debe establecer la propiedad siguiente en el manejador de retorno de llamada configurado:
com.ibm.wsspi.wssecurity.token.UsernameToken.authDeferred=true
Al igual que la mayoría de los módulos de inicio de sesión WS-Security, UNTConsumeLoginModule siempre coloca la señal consumida en la correlación de estado compartido a la que tienen acceso todos los módulos de inicio de sesión de la pila. Cuando se especifica authDeferred=true, en la fase de confirmación, UNTConsumeLoginModule asegura que el mismo objeto UsernameToken que había sido puesto en el estado compartido ha sido puesto en otra ubicación en el estado compartido. Si este objeto UsernameToken no se puede encontrar, se produce una excepción LoginException. Por lo tanto, simplemente no se puede establecer authDeferred=true en el manejador de devolución de llamada sin hacer que un módulo de inicio de sesión que acompaña devuelva la señal al estado compartido.