我们正在使用activiti v5.18和spring boot。要调用activiti REST API,我们必须创建一个activiti用户来传递基本身份验证。据我所知,activiti安全性基于spring boot安全性,我们尝试了两种方法。
排除activiti spring boot security auto config
@EnableAutoConfiguration(exclude = {org.activiti.spring.boot.SecurityAutoConfiguration.class})
创建一个类来扩展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
}
}
不幸的是,他们都没有禁用基本身份验证,当我转到页面“http://localhost:8080/repository/deployments”时,浏览器会弹出用户登录窗口。并在页面上显示错误消息
此应用程序没有/ error的显式映射,因此您将此视为后备。
出现意外错误(type = Unauthorized,status = 401)。 访问此资源需要完全身份验证
此外,我们有自己的REST服务,当客户端调用我们的REST服务时,浏览器也会要求输入activiti REST用户/密码。
有没有办法禁用activiti REST HTTP基本身份验证?
答案 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>
出。 希望它会帮助某人。没有我能找到的文件。