Tenho um aplicativo spring boot com uma api rest. Vou implantá-lo em um servidor Linux. E temos vários aplicativos Java implantados em vários servidores Linux que chamam essa api. Sempre que uma solicitação for feita para esse ponto final, quero que as informações do nome do host sejam validadas.
- API - http://localhost:8000/teste
- Segundo aplicativo spring boot em execução na porta local 9000 quando este aplicativo faz uma solicitação para http://localhost:8000/test - Eu deveria ser capaz de saber qual host fez uma solicitação. aqui - localhost:9000
Eu tentei usar HttpServletRequest. Estou recebendo apenas os cabeçalhos abaixo daquele Host, connection, user-agent, accept, content-type, content-length. Origin, referer - os cabeçalhos não estão presentes.
Código do controlador abaixo
@PostMapping("/test")
public String authenticateAndGetToken (HttpServletRequest httpServletRequest, @RequestBody Request request) {
String errorMsg = "Invalid UserName";
Log.info("origin"+httpServletRequest.getHeader(HttpHeaders.ORIGIN));
httpServletRequest.getHeaderNames().asIterator().forEachRemaining (xx->System.out.println(xx));
Log.info(httpServletRequest.getRemoteAddr());
UserDetails userDetails = userInfoService. LoadUserBy Username (request.getUsername
Aqui a origem é nula Getremoteaddr é o endereço do servidor, não do cliente
RestTemplate restTemplate1 = new RestTemplate(); HttpHeaders headers = new HttpHeaders();
headers.setContentType (MediaType.APPLICATION_JSON);
Map<String, String> map = new HashMap<>();
map.put("username", "test");
map.put("password", "test");
String jsonBody new ObjectMapper().writeValueAsString(map);
HttpEntity<String> entity = new HttpEntity<>(jsonBody, headers);
ResponseEntity<String> response = restTemplate1.exchange(url: "http://localhost:8000/test", HttpMethod.POST, entity, String.class);