1. 概述
Activiti 是一个开源的 BPM(业务流程管理)系统。关于基础入门,可以参考我们的 Activiti Java 指南。
⚠️ 重要变化:Activiti 8 已不再提供身份管理功能。我们需要借助 Spring 框架来实现身份管理。本文将探讨如何使用 Spring Security 处理身份认证问题。
2. Maven 依赖
在 Spring Boot 项目中集成 Activiti 的基础配置,可参考我们的前文。除了 activiti-spring-boot-starter
,还需添加以下安全依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
3. 基于 Spring Security 的身份管理
要使用 Spring Security 提供的用户管理功能,需自定义安全配置类:
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth -> auth
.requestMatchers("/protected-process*")
.authenticated()
.anyRequest()
.permitAll())
.formLogin(login -> login
.loginPage("/login")
.defaultSuccessUrl("/homepage")
.failureUrl("/login?error=true")
.permitAll())
.csrf(AbstractHttpConfigurer::disable)
.logout(logout -> logout.logoutSuccessUrl("/login"));
return http.build();
}
@Bean
public UserDetailsService userDetailsService() {
User.UserBuilder users = User.withDefaultPasswordEncoder();
UserDetails user = users.username("user")
.password("{noop}pass")
.authorities("ROLE_ACTIVITI_USER")
.build();
return new InMemoryUserDetailsManager(user);
}
}
✅ 关键点说明:
- Activiti 8 完全依赖 Spring Security 处理安全、角色和组管理
UserDetailsService
用于配置用户及其关联的组/角色ROLE_ACTIVITI_USER
角色是调用 Activiti 的TaskRuntime API
的必需权限
4. 总结
本文演示了如何将 Activiti 与 Spring Security 集成。我们通过自定义 Spring Security 配置,实现了:
- 自动设置认证用户
- 与 Activiti 的
TaskRuntime API
交互
完整源码可在 GitHub 获取。