Я следил за блогом Кэролайн , чтобы настроить многопользовательский сервер отдыха композитора.Итак, у меня есть два сервера, а именно.Сервер администратора и сервер пользователя.
Как уже упоминалось в руководстве I:
- Запущен сервер администратора без аутентификации и однопользовательского режима.Я запустил этот сервер с картой администратора.
- Запустил пользовательский сервер с паспортной аутентификацией JWT в многопользовательском режиме.Я также запустил этот сервер с картой администратора.
- Создал участника пользователя и сгенерировал карту для пользователя с сервера администратора.
- На этом этапе я пытаюсь обменять токен JWT напользовательский сервер (# 2), и я также могу получить токен.
- Ping пользовательский сервер с токеном JWT.Это приводит к «Ошибка: требуется авторизация».
Я следил за блогом Криса Ганги по реализации JWT.Мои COMPOSER_PROVIDERS:
COMPOSER_PROVIDERS='{
"jwt": {
"provider": "jwt",
"module": "/home/composer/node_modules/custom-jwt.js",
"secretOrKey": "somesecretkey",
"authScheme": "saml",
"successRedirect": "/",
"failureRedirect":"/"
}
}'
Я впервые обмениваюсь токеном JWT из службы Java.Чтобы создать токен на предъявителя, я написал следующий код:
public static String getBearerToken(String username, String id) throws UnsupportedEncodingException {
return Jwts.builder()
.claim("timestamp", System.currentTimeMillis())
.claim("username", username)
.claim("id", id)
.signWith(
SignatureAlgorithm.HS256,
"somesecretkey".getBytes("UTF-8")
).compact();
}
С этим я могу получить токен.Далее я использую этот токен для импорта карты в кошелек на сервере пользователя:
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
headers.set("X-Access-Token",getAccess_token(participantEmail));
headers.set("x-api-key", userServerKey);
LinkedMultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("card", new FileSystemResource(card));
params.add("name", participantEmail);
HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(CARD_IMPORT_URL);
ResponseEntity<String> responseEntity = restTemplate.exchange(builder.build().encode().toUri(),
HttpMethod.POST, requestEntity, String.class);
Однако это приводит к:
Необработанная ошибка для запроса POST / api / Wallet/ import: Ошибка: Требуется авторизация
Поиск 1 Как правило, когда мы впервые обмениваемся JWT с использованием носителя аутентификации, в Монго создается база данных с именем «test».Эта БД содержит три коллекции: accessToken, user и userIdentity.Однако в моем случае, когда я обмениваю токен, в монго не создается БД.Любые предложения о том, как я могу отладить это?
Примечание: Вся эта установка работала прекрасно, пока я не решил удалить и перезапустить сеть с нуля.