mercoledì 21 ottobre 2020

JWT token based REST API

 
 
 
 
@Data
public class JWTData {
    String accessToken;
    long expiresIn;
    String tokenType;
    String scope;
}
 
------------------------------------------------------------------------------------------------------------
 
public void sendRequest() throws Exception {
 
 final String jwturi = "http://someurl";
 RestTemplate JWTRestTemplate = new RestTemplate();
 HttpHeaders tokenheaders = new HttpHeaders();
 tokenheaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
 
 MultiValueMap<String, String> jwtParameters= new LinkedMultiValueMap<>();
 jwtParameters.add("grant_type", "client_credentials");
 jwtParameters.add("client_id", "jwtClientId");
 jwtParameters.add("client_secret", "jwtClientSecret");
 HttpEntity<MultiValueMap<String, String>> tokenRequest = new HttpEntity<>(jwtParameters, tokenheaders);
 ResponseEntity<JWTData> response = JWTRestTemplate.postForEntity(jwturi, tokenRequest , JWTData.class);
 log.info("\n\n-- JWT RESPONSE BODY: {} ", response.getBody().toString());
 String JWT = response.getBody().getAccessToken();
 log.info("access token: " + JWT);
 
 String alertDataAsString = jsonMapper.writeValueAsString(alertData);
 final String uri = alarmNotificationUrl;
 RestTemplate restTemplate = new RestTemplate();
 restTemplate.setErrorHandler(new MyRestErrorHandler());
 HttpHeaders headers = new HttpHeaders();
 headers.setContentType(MediaType.APPLICATION_JSON);
 headers.add("Authorization", "Bearer access_token"+ JWT);
 log.info("Json sent: " + alertDataAsString);
 HttpEntity<?> request = new HttpEntity<Object>(alertDataAsString, headers);
 ResponseEntity<Object> responseAsString = restTemplate.exchange(uri, HttpMethod.POST, request, Object.class);
 log.info("\n\n-- RESPONSE STATUS CODE: {} ", responseAsString.getStatusCode());
 log.info("\n\n-- RESPONSE BODY: {} ", responseAsString.getBody().toString());
}
 
 
------------------------------------------------------------------------------------------------------------
 
@Slf4j
public class MyRestErrorHandler extends DefaultResponseErrorHandler {
    @Override
    public void handleError(ClientHttpResponse response) throws IOException {
        log.info("Errore in chiamata agli endpoint");
    }
}

Run minikube with podman on Fedora

After install minikube as described in the documentation , set rootless property to true to use Podman without sudo: minikube config set roo...