1
resposta

Autenticação com JPA passando usuario e senha com Basic Autentication

Olá,

Estou com uma dúvida na implementação do exemplo de aula, e gostaria de saber, como o trecho de código abaixo ficaria, caso a minha intenção fosse ao invés de me autenticar via formulário, eu quisesse passar o usuário e senha via requisição, postman ou insomia. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Bruno,

Para realizar a autenticação via requisição, você pode utilizar o Basic Authentication. Nesse caso, você precisa enviar o header Authorization com o valor Basic seguido do usuário e senha em Base64.

Segue um exemplo de como ficaria o código:

@RestController
public class LoginController {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Autowired
    private JwtTokenUtil jwtTokenUtil;

    @PostMapping("/login")
    public ResponseEntity<?> login(@RequestBody LoginDTO loginDTO) throws AuthenticationException {

        final Authentication authentication = authenticationManager.authenticate(
                new UsernamePasswordAuthenticationToken(
                        loginDTO.getUsername(),
                        loginDTO.getPassword()
                )
        );

        SecurityContextHolder.getContext().setAuthentication(authentication);

        final String token = jwtTokenUtil.generateToken(authentication);

        return ResponseEntity.ok(new JwtResponse(token));
    }

    @GetMapping("/hello")
    public ResponseEntity<?> hello() {
        return ResponseEntity.ok("Hello World!");
    }
}

Para testar a autenticação, você pode enviar uma requisição POST para a URL /login com o seguinte header:

Authorization: Basic base64(username:password)

Substitua "username" e "password" pelo usuário e senha desejados em formato de texto simples.

Espero ter ajudado e bons estudos!