Безопасность Spring блокирует исходящие запросы. Время соединения истекло

Я использую безопасность Spring в своем приложении и вижу, что Spring Security блокирует некоторые исходящие запросы.

Моя весенняя конфигурация выглядит так:

    @Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
                .and()
                .formLogin()
                .failureHandler(authenticationFailureHandler())
                .and()
                .httpBasic()
                .and()
                .antMatcher("/**");
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
    }

    @Bean
    public AuthenticationFailureHandler authenticationFailureHandler() {
        return new SimpleUrlAuthenticationFailureHandler();
    }

    @Bean
    public LogoutSuccessHandler logoutSuccessHandler() {
        return new SimpleUrlLogoutSuccessHandler();
    }

}

Я вижу, что на мой запрос на остановку службы ответил

 I/O error on POST request for "https://someserver.com/api/v1/public/createUser": Connection timed out: connect; nested exception is java.net.ConnectException: Connection timed out: connect

Когда я пытаюсь вызвать эти службы отдыха без Spring Security (безопасность Spring отключена), он работает нормально.

Вот мой конфиг, если RestTemplate

 public CustomRestTemplateContructor() {
        super();
        this.restTemplate = new RestTemplate();
        this.restTemplate.getMessageConverters().add(0, new 
        StringHttpMessageConverter(Charset.forName("UTF-8")));
    }

Класс, в котором у меня есть собственная реализация RestTemplate, выглядит так:

@Configurable
public abstract class CustomRestTemplateContructor extends TestDataBase implements Runnable  {


    public static final Logger log = LoggerFactory.getLogger(CustomRestTemplateContructor.class);

    private String testEnviroment;

    @Autowired
    private ITestDataService iTestDataService;

    private static final Object lockForAddingValueToSharedStorage = new Object();

    private String name;
    private String profileId;
    private final RestTemplate restTemplate;


    protected ThreadLocal<WorkerExecutionStatusThreadLocal> workerExecutionStatus = new ThreadLocal<>();



    public CustomRestTemplateContructor() {
        super();
        this.restTemplate = new RestTemplate();
        this.restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
    }


    public ITestDataService getiTestDataService() {return iTestDataService; }
    public void setiTestDataService(ITestDataService iTestDataService) { this.iTestDataService = iTestDataService; }

    public String getTestEnviroment() { return testEnviroment; }
    public void setTestEnviroment(String testEnviroment) { this.testEnviroment = testEnviroment; }

    public void setName(String name) {
        this.name = name;
    }
    public String getName() { return name; }

    public String getProfileId() {
        return profileId;
    }
    public void setProfileId(String profileId) {
        this.profileId = profileId;
    }

    public RestTemplate getRestTemplate() { return restTemplate; }

Затем я расширяю свой CustomRestTemplateContructor, чтобы получить функциональность Spring RestTemplate и другие дополнительные функции.

Как вы используете свой RestTemplate? Это фасоль?

NatFar 06.03.2019 17:46

Спасибо за ваш ответ, сэр. Итак, я не использую RestTempalate как Spring. У меня есть класс Конструктор CustomRestTemplate с аннотацией @Configurable, где я определяю конструктор для инициализации моего RestTemplate и имею метод получитьRestTemplate() для использования\получения моей реализации RestTemplate в других классах. Затем я расширяю свой Конструктор CustomRestTemplate в других классах, чтобы использовать\получать функциональность моего RestTemplate. Я обновлю тело вопроса для вас.

user_1234567_java 09.03.2019 09:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
88
0

Другие вопросы по теме