Jhipster微服务Java客户端api调用错误

时间:2017-07-24 04:26:11

标签: spring-boot spring-security oauth-2.0 jhipster resttemplate

我们在微服务架构中部署了一个JHipster应用程序。我们正在使用OAuth选项,其中我是新手。前端工作正常。但是现在我们不知道如何调试访问restful端点的java客户端。我们正在使用nginx实现ssh并隐藏端口,以防相关。

代码是:

    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();

回复是

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)

2 个答案:

答案 0 :(得分:1)

假设您使用uaa和网关。

您的代码必须使用POST和JSON有效负载(请参阅/api/authenticate)对UserJWTControllerIntTest.testAuthorize()进行身份验证以获取令牌。

获得令牌后,您必须使用带有Authorization前缀的Bearer HTTP标头随每次请求发送令牌:Authorization : Bearer c123aaacr

答案 1 :(得分:0)

这就是我的工作。

在针对微服务架构的UAA版本进行身份验证时 - 终点是https://myAddress.../myApp.../oauth/token - 标题中的Content-Type = application / x-www-form-urlencoded - Body有grant_type =密码,用户名和密码。

我不再使用UAA了 - 没看到在文档中这一点很重要。

感谢Jon Ruddell。