У меня есть веб-приложение, работающее только с SSL (без http) на порту 8080:
server:
ssl:
key-store-type: PKCS12
key-store: file:${SERVER_KEYSTORE_PATH}
key-store-password: ${SERVER_CERT_PASSWORD}
port: 8080
Когда я запускаю приложение, я вижу в журналах:
2020-03-17 17:32:29.836 INFO 90960 --- [main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (https)
Одна из моих конечных точек (на самом деле root) защищена Spring Security, OAuth2:
@Override
protected void configure(HttpSecurity http) throws Exception {
String baseURI = redirectURI.substring(redirectURI.lastIndexOf("/"));
http.csrf().disable()
.authorizeRequests()
.antMatchers("/").authenticated()
.antMatchers("/**").permitAll()
.and()
.oauth2Login()
.defaultSuccessUrl("/")
.redirectionEndpoint().baseUri(baseURI);
}
Проблема в том, что когда я go до https://localhost: 8080 - он перенаправляет меня на https://localhost: 8443 / oauth2 / авторизация / oauth Итак, по какой-то причине порт 8080 переопределяется с 8443.
Насколько я понял из Подобные вопросы, это происходит потому, что Tomcat пытается перенаправить пользователя на конечную точку с поддержкой SSL (https) с простой конечной точки (http). Но моя конечная точка уже поддерживает SSL, поэтому я не совсем понимаю, почему это происходит. Если я go на любой другой конечной точке, он работает с https и портом 8080 - так что только защищенная конечная точка проблематична c.
Я пытался настроить TomcatServletWebServerFactory
с помощью ConnectorCustomizers
и установить там порт перенаправления на 8080
, но это не помогло.
Есть идеи, как отключить это бесполезное перенаправление?