Nano Hash - криптовалюты, майнинг, программирование

Как отключить активность REST HTTP

Мы используем activiti v5.18 и весеннюю загрузку. Чтобы вызвать REST API Activiti, мы должны создать пользователя Activiti для прохождения базовой аутентификации. Насколько я знаю, безопасность activiti основана на безопасности весенней загрузки, мы попробовали два подхода.

  1. Исключить автоматическую настройку безопасности Activiti Spring Boot Security

    @EnableAutoConfiguration(exclude = {org.activiti.spring.boot.SecurityAutoConfiguration.class})
    
  2. Создайте класс для расширения класса spring «WebSecurityConfigurerAdapter) и установите «security.basic.enabled = false» в application.properties.

    @Configuration
    @EnableWebSecurity
    @EnableGlobalMethodSecurity(prePostEnabled = true)
    @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
    
    // @formatter:off
    http
    .authorizeRequests()
    .antMatchers(HttpMethod.GET, "/","/static/**", "/resources/**","/resources/public/**").permitAll()
    .anyRequest().authenticated()
    .and()
    .formLogin()
    .and()
    .httpBasic().disable()
    .requiresChannel().anyRequest().requiresSecure();
    // @formatter:on
    }
    }
    

К сожалению, ни один из них не отключает базовую аутентификацию, когда я перехожу на страницу 'http://localhost:8080/repository/deployments', в браузере открывается окно входа пользователя. И показать сообщение об ошибке на странице

Это приложение не имеет явного сопоставления для /error, поэтому вы рассматриваете это как запасной вариант.

Произошла непредвиденная ошибка (type=Unauthorized, status=401). Для доступа к этому ресурсу требуется полная аутентификация

Кроме того, у нас есть собственная служба REST, когда клиент вызывает нашу службу REST, браузер также запрашивает ввод пользователя/пароля REST.

Есть ли способ отключить базовую аутентификацию REST HTTP?


Ответы:


1

Вы можете использовать antMatchers для отключения аутентификации для некоторых типов запросов, таких как запросы HTTP-GET или/и HTTP-POST, следующим образом:

.antMatchers(HttpMethod.GET, "/**").permitAll()

С его командой все методы HTTP-GET не попадут в BasicAuthenticationFilter. Для моего варианта использования мне пришлось исключить запросы HTTP-параметров таким образом. Просто отредактируйте org.activiti.rest.conf.SecurityConfiguration.java в activiti-webapp-rest2 следующим образом:

@Override
  protected void configure(HttpSecurity http) throws Exception {
     http
     .authenticationProvider(authenticationProvider())
     .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
     .csrf().disable()
     .authorizeRequests()
     .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
     .antMatchers(HttpMethod.GET, "/**").permitAll()
     .antMatchers(HttpMethod.POST, "/**").permitAll()
     .antMatchers(HttpMethod.PUT, "/**").permitAll()
     .antMatchers(HttpMethod.DELETE, "/**").permitAll()
       .anyRequest().authenticated()
       .and()
     .httpBasic();
  }

После этого вам нужно пересобрать Activiti-Project. Переустановите военный файл, и после этого базовая аутентификация должна быть отключена.

24.08.2015
  • Привет, я хотел бы использовать waffle и пользовательскую аутентификацию вместо базовой аутентификации в activiti, поэтому мне нужно сделать то, что вы написали, а затем, где я могу сделать свою собственную аутентификацию и ответить TRUE на функцию проверки? где я должен поставить точку останова в коде? 01.02.2016
  • Для пользовательской проверки подлинности реализуйте пользовательский фильтр проверки подлинности. Открытый класс CustomAuthenticationFilter расширяет AbstractAuthenticationProcessingFilter. В рамках этого фильтра вы выполняете аутентификацию. В весенней конфигурации Java объявите свой фильтр как компонент: \@Bean public CustomAuthenticationFilter customTokenAuthenticationFilter(){ return new CustomAuthenticationFilter (/**);}; \@Autowired CustomAuthenticationFilter customTokenAuthenticationFilter; и используйте .addFilterBefore(customTokenAuthenticationFilter, BasicAuthenticationFilter.class).httpBasic(); чтобы добавить свой фильтр в цепочку. 01.02.2016
  • Привет, где находится файл конфигурации Spring? при размещении в активном отдыхе? 02.02.2016
  • под activiti-webapp-rest2 --› org.activiti.rest.conf.SecurityConfiguration.java 03.02.2016
  • @ Бен, у меня такая же проблема, но не решить. пожалуйста, помогите мне. Благодарю. 13.04.2016

  • 2

    Это может быть поздно для ОП, но эта работа и, вероятно, все еще поможет другим людям.

    @EnableAutoConfiguration(exclude = {
    org.activiti.spring.boot.RestApiAutoConfiguration.class,
    org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
    org.activiti.spring.boot.SecurityAutoConfiguration.class,
    org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class
    })  
    
    05.03.2016

    3

    вы можете использовать этот класс для настройки с идеей @Ben:

    @Configuration
    @EnableWebSecurity
    @EnableWebMvcSecurity
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public class CustomSecurityConfiguration extends WebSecurityConfigurerAdapter {
    
        @Bean
        @ConditionalOnMissingBean
        public AuthenticationProvider authenticationProvider() {
            return new BasicAuthenticationProvider();
        }
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authenticationProvider(authenticationProvider())
                    .csrf().disable()
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()
                    .authorizeRequests()
                    .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
                    .antMatchers(HttpMethod.GET, "/**").permitAll()
                    .antMatchers(HttpMethod.POST, "/**").permitAll()
                    .antMatchers(HttpMethod.PUT, "/**").permitAll()
                    .antMatchers(HttpMethod.DELETE, "/**").permitAll()
                    .anyRequest().authenticated()
                    .and()
                    .httpBasic();
        }
    }
    
    22.02.2016

    4

    Недавно тоже столкнулся с этой проблемой. Я попробовал несколько предложений и провел много часов, но не смог добиться успеха. Но был очень простой выход. Если вам не нужно использовать Activiti-rest при интеграции его со своим приложением как таковым, просто возьмите зависимость

    <dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-rest-api</artifactId>
    <version>${activiti.version}</version>
    </dependency>
    

    из. Надеюсь, это поможет кому-то. Я не нашел никакой документации, в которой бы упоминалось об этом.

    05.03.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..