Recuperar la contraseña del usuario actual de spring-security

Estoy usando Spring-security con HTTP Basic Auth para asegurar una aplicación web java. En mi aplicación web, necesito obtener el nombre de usuario y la contraseña del usuario actual para autenticarlos en otro servicio. Puedo obtener el nombre de usuario, pero no la contraseña.

He intentado usar SecurityContextHolder.getContext().getAuthentication() para acceder a esta información como se sugiere aquí. ¿Cómo puedo obtener una contraseña de texto sin formato de Spring-Security? pero la contraseña se devuelve como null .

¿Cómo puedo obtener la contraseña?

Gracias.

Esta es mi aplicaciónContext-security.xml

                                  

Lo he descubierto.

He cambiado mi configuración del administrador de autenticación para usar el elemento de administrador de autenticación y he agregado el atributo allí:

    

Luego puedo usar SecurityContextHolder.getContext().getAuthentication().getCredentials() en mi clase de controlador para obtener la contraseña.

Gracias por tu ayuda aunque Piotrek De

¿Usas Recordarme / Ejecutar como / Cambiar usuario? En tal caso, la contraseña es nula (como se describe en un subproceso que ha mencionado). Además, probablemente tenga que usar la autenticación de formulario básica, (enviar solicitud a j_spring_security_check)

Si está configurando todos los detalles del usuario actual, incluida la contraseña en el objeto de sesión, puede obtener la contraseña de ese objeto de sesión.

una mejor manera es implementar su ‘userDetailsService’. para que pueda controlar cómo se pueden ingresar los Detalles del usuario al realizar la autenticación. implementé una autenticación basada en formularios y escribí mi servicio de usuario autodefinido,

 @Service("userService") public class UserServiceImpl extends GenericService implements UserDetailsService,UserService{ @Override @Transactional public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException { // Declare a null Spring User UserDetails userDetails = null; // Search database for a user that matches the specified username // You can provide a custom DAO to access your persistence layer // Or use JDBC to access your database // DbUser is our custom domain user. This is not the same as Spring's User User dbUser=this.findUserByUserName(username); if (dbUser == null) { throw new UsernameNotFoundException("HiMVC Security:: Error in retrieving user(username=" + username + ")"); } userDetails = new org.springframework.security.core.userdetails.User( dbUser.getUserName(), dbUser.getPassword(),//here you can put a clear text password true, true, true, true, loadUserAuthorities(username)); return userDetails; }