You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Camunda人工任务无法阻止非候选组用户认领执行任务的配置问题

Camunda 候选组/候选用户访问限制强制生效配置方案

基于SpringBoot搭建Camunda BPM项目时,若出现人工任务配置的候选组、候选用户规则不生效,非授权用户仍可查看、认领、完成任务的问题,按以下步骤完成配置即可强制权限校验:

1. 开启全局授权校验开关

默认情况下Camunda的权限校验是关闭状态,这是最常见的踩坑点,首先在SpringBoot配置文件中打开授权校验相关配置:

  • YAML格式配置(application.yml):
camunda.bpm:
  authorization:
    enabled: true # 全局授权校验总开关
    task-check: true # 开启任务级权限校验
    user-based-access-check: true # 开启基于用户/组关系的访问校验
  • Properties格式配置(application.properties):
camunda.bpm.authorization.enabled=true
camunda.bpm.authorization.task-check=true
camunda.bpm.authorization.user-based-access-check=true

2. 调整Cockpit默认授权规则

Cockpit默认的权限配置会绕过业务层面的候选组限制,需要手动调整:

  • 测试权限规则时不要使用camunda-admin组下的用户,该组默认持有全量资源的所有操作权限,会导致权限测试结果不符合预期。需新建普通测试用户,仅分配业务对应分组,不要加入管理员组。
  • 进入Cockpit授权管理页面,检查全局授权规则,删除给所有认证用户配置的TASK_READ、TASK_WORK全量授权,这类默认配置会让所有登录用户都能看到全量任务。
  • 核对流程定义中人工任务配置的候选组ID,确保和系统内创建的用户组ID完全一致,Camunda的权限ID匹配是大小写敏感的。

3. 强制任务操作环节的权限校验

  • 检查流程定义的人工任务配置,确认candidateGroups、candidateUsers字段没有配置通配符*,该配置代表所有用户都有权限操作任务。
  • 排查自定义扩展代码:如果项目中实现了TaskListener、任务相关拦截器,检查是否存在调用taskService.addCandidateUser()手动给非授权用户加权限、或者手动设置skipAuthorizationCheck=true跳过权限校验的逻辑。
  • 添加进程引擎配置插件,禁止全局跳过权限校验:
import org.camunda.bpm.engine.impl.cfg.AbstractProcessEnginePlugin;
import org.camunda.bpm.engine.impl.cfg.ProcessEngineConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CamundaAuthConfig {
    @Bean
    public AbstractProcessEnginePlugin authCheckPlugin() {
        return new AbstractProcessEnginePlugin() {
            @Override
            public void postProcessEngineBuild(ProcessEngineConfiguration processEngineConfiguration) {
                processEngineConfiguration.setSkipAuthorizationCheckEnabled(false);
                processEngineConfiguration.setAuthorizationCheckRevokesEnabled(true);
            }
        };
    }
}

4. 权限规则验证步骤

配置完成后按以下逻辑验证规则是否生效:

  • 新建两个普通测试用户:user1归属配置的候选业务组,user2归属无权限的其他业务组,两个用户均不加入camunda-admin管理员组。
  • 启动流程实例,流转到配置了候选组的人工任务节点。
  • 使用user2账号登录Cockpit,确认任务列表无法查询到对应任务,直接调用任务认领、完成接口会抛出权限不足的异常。
  • 使用user1账号登录,确认可以正常查询、认领、完成对应任务。

注意:调用Camunda REST API操作任务时,必须携带对应用户的认证信息,未携带认证信息的请求会默认以管理员权限执行,绕过所有权限校验。

内容的提问来源于stack exchange,提问作者Mike M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 02:01:12