Настраиваемая область не вызывается в приложении Spring Boot - PullRequest
0 голосов
/ 05 мая 2020

Версия загрузки Spring: 2.2.6.RELEASE

Я переношу устаревшее приложение на Spring Boot. В устаревшем приложении на сервере. xml Tomcat у меня была следующая конфигурация Realm:

            <Valve className="com.test.realm.AuthServletValve" />

            <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

            <Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false" />
        </Host>

Я пытаюсь преобразовать эту конфигурацию в конфигурацию Spring класс со следующим кодом:

@Configuration
public class TomcatConfiguration {

    @Bean
    public ConfigurableServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addContextCustomizers(TomcatConfiguration::customize);
        factory.addEngineValves(new SingleSignOn());
        factory.addEngineValves(new ErrorReportValve());
        factory.addContextValves(new AuthServletValve());
        return factory;
    }

    private static void customize(Context context) {
        context.setRealm(new AuthServletRealm());
        context.addConstraint(createSecurityConstraint());
    }


    private static SecurityConstraint createSecurityConstraint() {
        SecurityConstraint securityConstraint = new SecurityConstraint();
        SecurityCollection securityCollection = new SecurityCollection();
        securityCollection.addPattern("/*");
        securityConstraint.addCollection(securityCollection);
        return securityConstraint;
    }
}

Клапаны вызываются правильно, но мой AuthServletValve не вызывается. Я ожидаю, что при каждом вызове моего Spring Boot API вызывается AuthServletValve для получения принципала. Но ничего

...