Como validar o usuário presente no token

Estou estudando java com spring security , criei uma aplicação básica para cadastro de usuário, essa aplicação deve permitir um usuário se cadastrar, fazer o login, buscar suas informações, altera-las, e exclui-las.
Apliquei o conceito de filter do spring security e deixei liberado apenas as rotas de cadastro e login, as demais rotas precisam de um token que gerado ao fazer o login.
Dessa forma consigo verificar se a requisição que esta sendo feita é de um usuário autenticado, porem um usuário esta conseguindo buscar informações de outro usuário.
EX: usuario1 realiza login pega o token gerado e consegue buscar as informações do usuario2 passando o token dele.

A duvida é como posso realizar essa validação ? um usuário só pode buscar, alterar e deletar as informações dele mesmo.

Consigo receber o principal com uma controller assim:

@RequestMapping(value = "/username", method = RequestMethod.GET)
    @ResponseBody
    public String currentUserNameSimple(HttpServletRequest request) {
        Principal principal = request.getUserPrincipal();
        return principal.getName();
    }

Porem o retorno é uma string assim :

Optional[Usuario(id=1, nome=humberto teste , cpf=71546486003, email=humberto@teste.com, senha=$2a$10$FFa9AWCBfR/kTvAPX8J7U.JfIWqxuS4AzlRGrbx.y6ZOHRUMYpq3u)]

Como poderia transformar essa string para retornar um obejto json, não sei se é maneira certa de fazer essa validação, como poderia faze-la?

link do repositorio : GitHub - humbertohonorato/APICadastroUsuario

Olá jovem.

Poder usar SecurityContextHolder, tente da forma abaixo:

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String user;
if (principal instanceof UserDetails) {
     user = ((UserDetails)principal).getUsername();
} else {
     user = principal.toString();
}