Этот вопрос задавался в аналогичной форме в прошлом, но не для версий, которые я использую сейчас, плюс я пробовал то, что они все упоминали, и, похоже, это не сработало.
У меня есть веб-приложение Java 11, Spring 5.3, Spring Boot 2.7.9, Spring Sec 5.7.7, упакованное как WAR, развернутое на сервере веб-приложений Wildfly 15, а также я использую Apache httpd. Домашняя страница https://reactrax.com использует ProxyPass и ProxyPassReverse для общения с Wildfly. В приложении пользователи аутентифицируются с помощью OAuth2 и Google. Однако после авторизации страница возвращается на http://reactrax.com:8080/loginSuccess. Обратите внимание, что теперь это http вместо https, и был добавлен порт Wildfly.
Как сделать так, чтобы страница входа просто перенаправляла обратно на исходную страницу предварительного входа на https://reactrax.com?
Изменения, которые я видел, включают следующее, но я не смог найти волшебную комбинацию, чтобы все это работало.
Апач:
Свойства пружины:
Весенние бобы:
Помните, что это работает в Wildfly, поэтому Wildfly прослушивает 8080 и просто пересылает запросы моему приложению. Я настроил свое приложение как корневое приложение в Wildfly.
и на каком порту работает ваше приложение?
Не указан порт. Он работает в Wildfly, и контекстный путь моего приложения, а не порт, отличает его от других возможных веб-приложений, развернутых в Wildfly.
Я понимаю. Что, если вы запустите Wildfly на любом другом порту, кроме 8080 (например, 8081)?
Я не могу. У меня есть несколько других веб-приложений, работающих на этом Wildfly, и это может помешать их доступу. Из любопытства, что я должен был искать, если я изменил номер порта?
Это заставляет меня задуматься о проблеме, о которой я сообщал там: github.com/spring-projects/spring-security/issues/12307 (также может быть из-за поведения PortMapperImpl
). Вы можете взглянуть на другую альтернативу, о которой я упоминал в своем последнем комментарии: использование абсолютных URI для всего, что связано с входом в систему (там я дал полезные советы)
В конце концов я бросил всю кухонную раковину на проблему, и в конце концов это сработало, но я не уверен, какая часть этого заставила это сработать. :(
Вы пытались использовать любой порт, кроме 8080, для своего приложения Spring с входом в систему? В реализациях весенних сервлетов во многих местах используется
PortMapperImpl
, и он ведет себя неестественным для меня образом, когда задействованы https и порт 8080 (или 80). Вы также можете попробовать использовать абсолютные URI для всего, что связано с входом в систему (страница входа, URI после входа и т. д.), но это менее просто.