Понимание механизма безопасности HTTP Session в JHipster - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь выяснить, как JHipster использует HTTP-сессию для защиты приложения и регистрации пользователя.До сих пор мне удавалось понять поток следующим образом:

1) на целевой странице home.component отправляет запрос на api/account с сессионными куки-файлами (если они есть)

, если естьявляется действительным сеансом >> использует учетные данные из сохраненных файлов cookie и затем входит в систему пользователя , если нет >> внутренний сервер отвечает HTTP 401 и отправляет файл cookie XSRF в ответ
Как я понимаю, ответственность за это несет Spring Security

2) когда не было активного сеанса, мы можем заполнить форму входа и войти в систему, которая отправляет запрос на api/authentication (требуется XSRF-файл cookie с шага 1)

если все в порядке >> отвечает HTTP200 и отправляет новый файл cookie XSRF , если нет >> HTTP 403, и отправляет новый файл cookie XSRF

3), если шаг 2 выполнен успешно, тогда веб-интерфейс отправляет учетные данные из формы входа в систему api/account

еще разSpring Security проверяет значение файла cookie XSRF (начиная с шага 2) , если все в порядке >> активирована бизнес-логика для входа в систему пользователя

Но на всех этих этапах нам необходимо перехватитьФайлы cookie отправляются бэкэндом и отправляются обратно, чтобы иметь возможность пройти защиту CSRF.
Какая часть проекта JHipster отвечает за это?
Использует ли он webpack / browsersync или существует какой-то угловой код, созданный JHipster, которыйЯ скучаю?

РЕДАКТИРОВАТЬ
Моя проблема появилась, когда я внес много изменений в сгенерированный проект, поскольку я хочу использовать пользовательские шаблоны / стили и сервисы, сгенерированные JHipster.Я связал шаблоны с сервисами jhipster.

Когда я пытаюсь войти в систему пользователя, я получаю вывод консоли Spring следующим образом:
Forbidden: Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-XSRF-TOKEN'
От предыдущего запроса до api/authentication Iполучить ответ с
Set-Cookie: XSRF-TOKEN=a129cb47-ec96-47be-aaae-69f90848c466; path=/
в сети браузера.

Значит, он устанавливает cookie с неправильным именем.Я изменил имя файла cookie вручную в браузере на: X-XSRF-TOKEN и снова отправил запрос.Новая ошибка выглядит следующим образом:
Forbidden: Could not verify the provided CSRF token because your session was not found.

Я недостаточно разбираюсь в потоке, поэтому не могу определить, в чем проблема.Возможно, я запутался и, возможно, есть некоторый код, сгенерированный JHipster, который отвечает за это.В JHipster Angular есть несколько классов, таких как StateStorageService.Они принимают участие в моей проблеме или они не имеют отношения к этой проблеме?

...