Совместное использование сеанса HazelCast между шлюзом API Zuul и серверами ресурсов - PullRequest
2 голосов
/ 14 июня 2019

SCENERIO

У меня есть Zuul Server в качестве шлюза API, Identity Server с Oauth2, ResourceServer1 и ResourceServer2 в примере

ZuulServer, ResourceServer1 иResourceServer2 имеет распределенный сеанс с Hazelcast.

Ниже приведены шаги, которые я выполнил -

  1. Запрос страницы Http, который поступает на сервер zuul, будет перенаправлен на страницу входа в систему по адресуидентификационный сервер.Аутентифицируйте пользователя с помощью oauth2.(Jsessionid возвращается с путем "/")

  2. При получении токена авторизации на шлюзе zuul, сохранял токен аутентификации в распределенном сеансе с использованием Hazelcast.

  3. При успешной проверке подлинности шлюза Zuul страница перенаправляется на домашнюю страницу ResourceServer1

  4. Вызов веб-страницы на resourceServer1 маршрутизируется через шлюз zuul api и здесь, на шлюзе,добавлен токен авторизации

  5. Внутри контроллера домашней страницы я написал две функции, прежде чем показывать домашнюю страницу

  6. Функциональность 1 - Установите значение дляраспределенный сеанс Hazelcast с ключом "TEST_SESSION"

  7. Функциональность 2 - Выполнены вызовы RestTemplate для ResourceServer2 (здесь я добавил cookie)

  8. Вызов RestTemplateк ResourceServer2 были направлены через Zuul API Gateway, и здесь на шлюзе был добавлен токен аутентификации

  9. Элемент управления достиг ResourceServer2, остальные aПи-контроллер и проверил значения сеанса.Значение, сохраненное в шаге 2, было доступно, но значение шага 6 было недоступно.

  10. Вскоре домашняя страница была отображена в браузере (новый сеанс был возвращен с контекстным путем ResourceServer1)

  11. С веб-страницы выполнен оставшийся вызов API api ResourceServer1 через Zuul API Gateway, и здесь был добавлен токен аутентификации.

  12. Элемент управления достиг контроллера ResourceServer1 и возвратил ожидаемыйзначение.

  13. Обнаружено, что для каждого вызова API ResourceServer1 из веб-браузера создается новый сеанс для ResourceServer1.

ПРОБЛЕМА

В последние несколько недель я застрял со следующими проблемами.Пожалуйста, помогите мне в этом отношении: -

  1. Я хочу, чтобы ResourceServer2 имел доступ к информации сеанса, созданной ResourceServer1.Но я не смог получить информацию о сеансе на ResourceServer2, он всегда возвращает ноль.Я проверил сервер Hazelcast с помощью Hazelcast Mancenter и обнаружил, что сеанс распределен.

  2. Как ограничить создание новых сеансов при выполнении вызова API для сервера ресурсов?Это замечено в шагах 9, 10 и 12. Обратите внимание, что здесь я хочу получить значение сеанса, созданного на шагах 2 и 6, используя HttpServletReqest.getSession (), и который создает новый сеанс.Если я удалю код, чтобы получить значение в сеансе, новый сеанс не будет создан.

Заранее спасибо

...