Spring Security no devuelve el objeto UserDetails, solo el nombre de usuario

Pensé que mi implementación de autorización se había realizado, pero cuando intento recuperar el objeto UserDetails, todo lo que obtengo es el nombre de usuario.

Estoy usando oauth con los siguientes detalles.

Configuración del AuthenticationManager:

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}

Una vez hecho esto, puedo depurar en mi userDetailsService:

@Service
public class UserServiceImpl implements UserService, UserDetailsService {
@Override
    public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
        MyUser persistedUser = userRepository.findByEmail(email);

        if (persistedUser == null) {
            throw new UsernameNotFoundException(String.format("The email %s doesn't exist", email));
        }

        List<GrantedAuthority> authorities = new ArrayList<>();

        MyUser inMemoryUser = new MyUser(persistedUser.getEmail(), null, persistedUser.getEnabled(), false,
                false, false, authorities);

        return inMemoryUser;
    }
}

Esto se completa bien y mi cliente recupera el JWT. Pero encontré el siguiente problema al depurar un método de controlador posterior.

@GetMapping
public @ResponseBody Iterable<Curriculum> getMyCurriculums(@AuthenticationPrincipal MyUser injectedUser) {
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    MyUser principle = (MyUser) auth.getPrincipal();
    return curriculumService.findByUser(principle);
}

En este caso, injectedUser = null, auth es una autenticación OAuth2, y el principio es una cadena: el nombre de usuario. Debería ser MyUser

Respuestas a la pregunta(1)

Su respuesta a la pregunta