如何为每个请求在 java 中使用 JSON Web 令牌 (JWT)?

How to use JSON Web Token (JWT) in java for each request?

我已经有了 JWT 令牌和 URL,如下所示:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

URL :

https://196.168.2.85:8443/api/v1/nodes

我想用上面URL的JWT token进行后续请求,在Java得到相应的响应

这是粗略的示例(假设您使用的是 OkHttpClient

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "message=somemessage");
Request request = new Request.Builder()
  .url("https://196.168.2.85:8443/api/v1/nodes")
  .post(body)
  .addHeader("Content-Type", "application/x-www-form-urlencoded")
  .addHeader("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c,Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

然而,这实际上取决于网络实施

我希望你能提供更多的细节,这样我就可以建议一个确切的实施方案。
您必须在请求 header 中添加 JWT 才能在所有后续请求中获得响应。获得 JWT 后,您可以将其存储在 session 中并在所有后续请求中使用它。 我正在使用休息模板,您可以在您的客户端中使用相同的模板

    String url ="https://196.168.2.85:8443/api/v1/nodes";
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(new MediaType[]{MediaType.APPLICATION_JSON}));
    headers.set("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKK");

    HttpEntity<String> httpEntity = new HttpEntity<>(requestBody,headers);

    ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class);