Spring Security SAML в Spring Boot 3.5.x не отвечает на перенаправленные запросыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring Security SAML в Spring Boot 3.5.x не отвечает на перенаправленные запросы

Сообщение Anonymous »

У меня старая версия приложения, которую я обновил до SpringBoot 3.5.x, и URL-адрес SAML ACS изменился после обновления. Поэтому я использовал urlrewrite для пересылки запроса со старого URL-адреса на новый URL-адрес. Однако когда я это делаю, это не работает, и я получаю следующую ошибку:

Код: Выделить всё

There was an unexpected error (type=Not Found, status=404).
No static resource login/saml2/sso/customer.
org.springframework.web.servlet.resource.NoResourceFoundException: No static resource login/saml2/sso/customer.
at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:585)
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:52)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
...
В этой трассировке стека исключений вы можете видеть, что все фильтры пропускаются и доходят до HttpServlet, который выдает ошибку, поскольку не может найти этот URL-адрес с ошибкой 404. Из-за использования OncePerRequestFilter вы не видите экземпляры фильтров, поскольку они являются его подклассами, но я подтвердил, что фильтры находятся в стеке с помощью отладчика.
/>Проблема в том, что Saml2WebSsoAuthenticationFilter должен был его обработать, но поскольку urlrewrite перенаправил запрос, Saml2WebSsoAuthenticationFilter отказывается распознавать, что он должен его обработать. Я тестировал его несколько раз, используя обычные запросы (т. е. не пересылаемые) к новому URL-адресу (т. е. /login/saml2/sso/customer), и он работает нормально. Итак, я знаю, что Saml2WebSsoAuthenticationFilter присутствует в цепочке, и что, если запрос не пересылается, он БУДЕТ его обрабатывать.
По умолчанию Springboot 3.x должен обрабатывать типы диспетчера пересылки, запроса и т. д. Но я не вижу, чтобы это происходило. Насколько я могу судить, любой запрос будет отправлен в цепочку фильтров, но я не могу понять, почему Saml2WebSsoAuthenticationFilter продолжает игнорировать перенаправленные запросы.
Свидетельство того, что «любой запрос» будет обработан и сопоставителем является AnyRequestMatcher:

Код: Выделить всё

[DEBUG] 2025-10-17 16:30:06.256 [restartedMain]  o.s.s.w.DefaultSecurityFilterChain - Will secure any request with filters: DisableEncodeUrlFilter, WebAsyncManagerIntegrationFilter, SecurityContextHolderFilter, HeaderWriterFilter, CsrfFilter, LogoutFilter, Saml2WebSsoAuthenticationRequestFilter, Saml2MetadataFilter, Saml2WebSsoAuthenticationFilter, AccountWhiteListFilter, AccountDomainFilter, JsonLoginFilter, Saml2MetadataFilter, RequestCacheAwareFilter, SecurityContextHolderAwareRequestFilter, AnonymousAuthenticationFilter, ExceptionTranslationFilter, AuthorizationFilter
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/797 ... d-requests
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»