我们在微服务架构中部署了一个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)
答案 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。