Когда клиент, не прошедший проверку подлинности, запрашивает URL-адрес, для которого требуется неанонимный уровень доступа, как определено в security-config.xml
, защита spring отправляет перенаправление HTTP на нашу страницу входа (например, /login
). Это прекрасно.
Проблема заключается в том, что отсутствует существующий сеанс (указанный cookie, предоставленный в запросе клиента), spring -security вызывает перенаправление, которое также указывает новый сеанс клиента в URL-адресе, например. /login;jsessionid=8o7pglapojus
.
Многие контейнеры поддерживают это (видимо, он отлично работает в tomcat?), но похоже, что Jetty (именно это мы сейчас используем) не перенаправляет URL-адрес на наш URL-маршрутизатор полностью неповрежденным (в том числе параметр jsessionid
"), и именованный сеанс не связан с запросом /login
по вызову jetty/spring -security (т.е. полностью новый идентификатор сеанса представлен в заголовке Set-Cookie ответа на /login
).
Мы можем обойти это, сопоставляя /login.*
на наших маршрутах, но мне любопытно, есть ли способ предотвратить выброс идентификатора сеанса в перенаправление аутентификации для начала.