Как использовать JSON Web Token (JWT) в java для каждого запроса?

У меня уже есть токен JWT и URL-адрес, как показано ниже:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV

URL:

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

Я хочу использовать токен JWT с указанным выше URL-адресом для последующего запроса в Java, чтобы получить соответствующий ответ.


person Amit Kumar    schedule 21.11.2019    source источник
comment
поскольку я ничего не знаю о бэкэнде, я могу только догадываться. Добавьте заголовок авторизации с токеном, например. Authorization: Bearer eyJhbGciOiJ... по вашему запросу. Иногда это JWTвместо Bearer   -  person jps    schedule 21.11.2019


Ответы (2)


Это грубый пример для него (при условии, что вы используете 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();

Однако это действительно зависит от веб-реализации

person Andra    schedule 21.11.2019

Я бы хотел, чтобы вы предоставили еще несколько деталей, чтобы я мог предложить точную реализацию.
Вам нужно добавить JWT в заголовок запроса, чтобы получать ответ во всех последующих запросах. Получив JWT, вы можете сохранить его в сеансе и использовать во всех последующих запросах. Я использую шаблон отдыха, вы можете следовать тому же в своем клиенте

    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);
person daemonThread    schedule 21.11.2019