Мое приложение прослушивает порты HTTP и HTTPS. Канал HTTP доступен только для нескольких клиентов, все остальные должны быть перенаправлены на безопасный канал (HTTPS) при попытке доступа к небезопасному.
Проблема в том, что HTTPS-порт для перенаправления, по уважительным причинам, я ' m сам запускаю соединитель, исходя из свойств приложения. Конфигурация по умолчанию сопоставление портов реализация PortMapperImpl
неизвестна, поэтому она всегда возвращает 443
или 8443
, игнорируя фактические порты, которые прослушивает приложение.
Пока что Я нашел это; это работает, но выглядит действительно ужасно:
@Configuration
class MySecurityAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
.requiresChannel()
.requestMatchers(/* some matchers */)
.requiresSecure()
.and()
.setSharedObject(PortMapper.class, myPortMapper());
}
@Bean
PortMapper myPortMapper() { return new MyPortMapper(); }
}
Я использую стандартный API сервлетов, поэтому я не могу извлечь выгоду из ServerHttpSecurity
, где явная настройка сопоставления портов кажется быть включенным .
Каков правильный способ настроить пользовательское сопоставление портов? Это там какой-нибудь элегантный?