0

Nous avons déployé une application JHipster dans l'architecture microservice. Nous utilisons l'option OAuth, dans laquelle je suis un newbee. L'extrémité avant fonctionne bien. Mais maintenant, nous ne savons pas comment déboguer le client Java qui accède aux points de terminaison reposants. Nous utilisons nginx pour implémenter ssh et masquer le port, au cas où cela serait pertinent.Jhipster microservice Erreur d'appel API client Java

code

est:

String plainCreds = "myuser:mypassword"; 
    byte[] plainCredsBytes = plainCreds.getBytes(); 
    byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); 
    String base64Creds = new String(base64CredsBytes); 

    HttpHeaders headers = new HttpHeaders(); 
    headers.add("Authorization", "Basic " + base64Creds); 

    RestTemplate restTemplate = new RestTemplate(); 
    HttpEntity<String> request = new HttpEntity<String>(headers); 
    String url = "https://mysite/api/my-entity/1111"; 
    ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class); 
    String response = response.getBody(); 

La réponse est

org.springframework.web.client.HttpClientErrorException: 401 Unauthorized 
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:63) 
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:700) 
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:653) 
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:613) 
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:531) 

Répondre

1

En supposant que vous utilisez UAA et une passerelle.

Votre code doit s'authentifier auprès de /api/authenticate en utilisant une charge POST et JSON (voir UserJWTControllerIntTest.testAuthorize()) pour obtenir un jeton.

Une fois que vous avez un jeton, vous devez l'envoyer à chaque demande en utilisant Authorization en-tête HTTP avec Bearer préfixe: Authorization : Bearer c123aaacr

+0

Oh, merci. Cela montre à quel point je sais. Essayé boucle Postman -X POST \ https: // myrul/api/authentification \ 'autorisation: base Z3JlZy5mY2E6aGVyIFRoZW1lMWJyYXllZDJjYW4zYTRkaXNocmFnJWphbSRhLWdleXNlcg ==' -H \ 'cache de contrôle: no-cache' -H \ type de contenu » -H : application/json '\ -H' posman-token: 8c2ad2e7-333b-9a56-6d61-c612070f4200 'et obtenez "Méthode de requête' POST 'non pris en charge", – Ribeye

+0

Également essayé en utilisant OAuth2RestTemplate. Vous avez reçu le même message "Demander la méthode POST non supporté". Google suggère que c'est quelque chose à voir avec ma demande, mais je ne peux pas voir quelque chose de mal. – Ribeye

+0

Votre charge utile n'est pas JSON et pourquoi tous ces en-têtes, juste faire ce qui est fait dans le test unitaire JWTControllerIntTest.testAuthorize() –

0

C'est ce que je dois travailler.

Lors de l'authentification contre la version SAU de l'architecture microservices - point final est https://myAddress.../myApp.../oauth/token - Content-Type en-tête = application/x-www-form-urlencoded - Body a grant_type = mot de passe, nom d'utilisateur et mot de passe.

J'ai laissé mon utilisation de UAA hors de question - n'a pas vu cela fait important dans les docs.

Merci à Jon Ruddell.