Как передать токен JWT из микросервиса, который использует другой микросервис? - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть два микросервиса, скажем, A и B. Во всех конечных точках REST для обоих микросервисов я реализовал аутентификацию JWT. Пользователь должен нажать конечную точку ("/ login") с именем пользователя и паролем, сгенерировать токен и передать его как RequestHeader всем конечным точкам в обеих службах. Скажем, в микросервисе А у меня есть конечная точка («test1 / createSomething»). У BI есть другая конечная точка («test2 / getSomething»). Теперь я могу вызывать («test2 / getSomething») из службы B, в («test1 / createSomething») в службе A с помощью клиента Feign.

Но я не уверен, как это реализовать таким образом чтобы я сгенерировал токен JWT в службе A и передал его службе B, чтобы использовать ее службы.

Пожалуйста, помогите. Новичок в микросервисах и изучении вещей.

1 Ответ

0 голосов
/ 15 февраля 2020

Один из подходов, которые вы можете попробовать, - это иметь отдельный сервис session / jwt. Роли и ответственность этой службы состоят в том, чтобы хранить / проверять и аутентифицировать, используя следующие конечные точки.

  • create_token (): создать новый токен JWT с заданными входными данными (например, информация о пользователе, срок действия и т. Д. c) )
  • is_token_valid (): проверить, является ли токен действительным или нет

Таким образом, вы можете иметь такой поток: -


 1. First hit to login-service > login service getting token from jwt-service > returning jwt token to UI/client.
 2. UI/Client passing received jwt token to service-b via headers> which indeed pass jwt token to service-a, where each service independently calls is_token_valid() of jwt-service and process the request only after getting success response. 

Для реализации этого в Spring-boot, что вы можете сделать, это добавить слой-перехватчик, который вызывается перед каждым классом Controller, где он читает заголовки, извлекает jwt-token и проверяет это из jwt-service.

Вы можете посмотреть при аналогичном ответе здесь . Другая ссылка здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...