如何禁用activiti REST HTTP

时间:2015-08-23 21:08:02

标签: spring-boot basic-authentication activiti

我们正在使用activiti v5.18和spring boot。要调用activiti REST API,我们必须创建一个activiti用户来传递基本身份验证。据我所知,activiti安全性基于spring boot安全性,我们尝试了两种方法。

  1. 排除activiti spring boot security auto config

    @EnableAutoConfiguration(exclude = {org.activiti.spring.boot.SecurityAutoConfiguration.class})
    
  2. 创建一个类来扩展spring类'WebSecurityConfigurerAdapter),并在application.properties中设置'security.basic.enabled = false'

    @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
    }
    }
    
  3. 不幸的是,他们都没有禁用基本身份验证,当我转到页面“http://localhost:8080/repository/deployments”时,浏览器会弹出用户登录窗口。并在页面上显示错误消息

    此应用程序没有/ error的显式映射,因此您将此视为后备。

    出现意外错误(type = Unauthorized,status = 401)。 访问此资源需要完全身份验证

    此外,我们有自己的REST服务,当客户端调用我们的REST服务时,浏览器也会要求输入activiti REST用户/密码。

    有没有办法禁用activiti REST HTTP基本身份验证?

3 个答案:

答案 0 :(得分: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
})  

答案 1 :(得分: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 :(得分:0)

最近我也遇到了这个问题。我尝试了几个建议,花了很多时间,但我没能成功。但是有很简单的出路。如果一个人不需要使用Activiti-rest同时将其与一个应用程序集成,那么只需要依赖

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

出。 希望它会帮助某人。没有我能找到的文件。