2015-08-23 3 views
2

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

  1. Исключен Activiti пружинных загрузок Security автонастройки

    @EnableAutoConfiguration(exclude = {org.activiti.spring.boot.SecurityAutoConfiguration.class}) 
    
  2. Создать класс для расширения класса пружинного «WebSecurityConfigurerAdapter), и установить 'security.basic.enabled = ложь' в 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?

ответ

2

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

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

С его командой, все HTTP-GET методы won't нажмите BasicAuthenticationFilter. Для моего UseCase мне пришлось исключить запросы HTTP-Options таким образом. Просто редактировать 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-проект. Переустановите военный файл, и после этого базовый auth должен быть отключен.

+0

Привет, Я хотел бы использовать waffle и пользовательскую аутентификацию вместо базовой аутентификации в activiti, поэтому мне нужно делать то, что вы написали, а затем где я могу сделать свою собственную аутентификацию и ответить с TRUE на проверку функция? где я должен поставить точку останова в коде? – ilansch

+0

Для пользовательской аутентификации реализуйте собственный фильтр проверки подлинности, открытый класс CustomAuthenticationFilter расширяет AbstractAuthenticationProcessingFilter. Внутри этого фильтра вы выполните аутентификацию. В Spring Java конфигурации, объявить фильтр, как боб: \ @Bean \t общественного CustomAuthenticationFilter customTokenAuthenticationFilter() { \t \t возвратный новый CustomAuthenticationFilter ("/ **");}; \ @Autowired CustomAuthenticationFilter customTokenAuthenticationFilter; и использовать .addFilterBefore (customTokenAuthenticationFilter, BasicAuthenticationFilter.class) .httpBasic(); , чтобы добавить фильтр в цепочку. – Ben

+0

Привет, Где весенний файл? когда принимали участие в отдыхе? – ilansch

0

вы можете использовать этот класс для конфигурации с @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(); 
    } 
} 
2

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

@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 
}) 
+0

https://forums.activiti.org/content/disable-activiti-spring-rest-api-basic-authentication – amorales

0

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

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

аут. Надеюсь, это поможет кому-то. Нет документации, которую я мог бы упомянуть об этом.

Смежные вопросы