Вопрос: работает ли @SessionScope в Java-приложении JHipster API Gateway? - PullRequest
0 голосов
/ 26 февраля 2019

у нас есть приложение API Gateway на основе JHipster, которое в настоящее время использует JJWT для ... Я даже не знаю, как правильно назвать его ... для безопасности?

У нас проблема, котораянам нужно аутентифицировать нашего пользователя в сторонней службе всякий раз, когда он запрашивает какую-либо операцию против этой третьей стороны.Таким образом, идея состоит в том, чтобы использовать @SessionScope -d bean-компонент для хранения учетных данных пользователя от стороннего разработчика.Это сработает?Меня смущает, что JWT считается лицом без гражданства. Какой подход тогда должен предложить сообщество?спасибо

1 Ответ

0 голосов
/ 28 февраля 2019

Это то, что было исследовано моим коллегой:

Для поддержки @SessionScope функциональных возможностей аннотации для нашего шлюза (UI - backend), во-первых, нам нужно настроить некоторую конфигурацию:

  1. В application.yml мы должны изменить параметр http-only сеанса на false:

сервер: сервлет: сеанс: cookie: только для http: false

Затем мы должны настроить время ожидания сеанса, чтобы оно соответствовало времени жизни нашего токена JWT:

сервер: сервлет: сеанс: время ожидания: 86400

Наконец, мы должны настроить политику создания сеанса.Это можно сделать с помощью SecurityConfiguration.java:

@ Переопределить общедоступную конфигурацию void (HttpSecurity http), генерирующую исключение {http.sessionCreationPolicy (SessionCreationPolicy.ALWAYS);}

С этого момента у нас будет сеанс, в котором будет храниться контекст Spring Secuirty для каждого аутентифицированного пользователя, но он никогда не будет использоваться для механизма аутентификации, поскольку у нас уже есть JWT для этой цели.Мы будем использовать сессию только для хранения пользовательских данных.

После настройки теперь мы можем создать пользовательский компонент для области действия сессии: CustomSessionScopeBean.java:

@Component
@SessionScope
public class CustomSessionScopeBean{
    @Getter
    @Setter
    ///What ever you want to store in session scope
}
...