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

Kogito集成OIDC时如何获取用户信息?是否支持请求头透传?

Kogito OIDC场景下的用户信息获取与透传方案

首先明确两个问题的结论:

  • Kogito 结合 Quarkus OIDC 栈时自带内置用户信息获取能力,你参考的示例用Query String传approved字段只是为了简化演示,不是框架的能力限制。
  • 框架原生支持请求头中的用户信息透传,不需要额外做复杂的二次开发。

内置用户信息获取的具体用法

process-usertasks-with-security-oidc-quarkus示例里把审批字段放在Query参数里,只是为了降低本地调试门槛——避免开发者测试时还要手动构造带自定义claim的JWT令牌,生产环境不要照搬这种写法,存在参数篡改的越权风险。
当你正确配置Quarkus OIDC扩展后,所有携带合法Bearer Token的请求到达Kogito时,框架会自动完成令牌校验、解析,把用户身份、角色、Token内的自定义Claim全部绑定到Quarkus安全上下文中,你可以直接在业务逻辑里取用:

  1. 在服务任务、自定义回调逻辑中直接注入SecurityIdentity对象获取信息,示例代码:
import io.quarkus.security.identity.SecurityIdentity;
import jakarta.inject.Inject;

public class ApprovalTaskHandler {

    @Inject
    SecurityIdentity securityIdentity;

    public boolean doApprove() {
        // 获取当前登录用户名
        String currentUser = securityIdentity.getPrincipal().getName();
        // 获取Token中携带的角色列表
        var roles = securityIdentity.getRoles();
        // 获取Token中自定义的approved字段,不需要前端通过Query/表单传参
        Boolean approved = securityIdentity.getAttribute("approved");
        // 后续业务逻辑
        return Boolean.TRUE.equals(approved);
    }
}
  1. 如果需要把用户信息自动填充为流程变量,你可以写一个全局的流程启动监听器,在流程实例初始化时直接从SecurityIdentity里取值写入流程变量,不需要前端显式传递用户相关参数。同时Kogito的用户任务权限校验(比如任务 assignee/candidate group 匹配)会自动使用解析到的用户身份完成,不需要手动传用户标识。

请求头用户信息透传的实现方式

Kogito本身不会丢弃或拦截请求传入的合法头信息,透传逻辑可以直接基于Quarkus原生能力实现:

  • 如果是入口请求带的用户信息(比如Authorization头、自定义的用户标识头),在通过Kogito REST客户端调用后端服务时,你可以通过实现Quarkus REST Client的请求过滤器,直接从当前请求上下文里取出对应头信息,透传到下游服务请求中即可。
  • 如果需要把解析后的用户信息传递给后端服务,同样可以在REST Client过滤器里从SecurityIdentity取出需要的字段,塞到下游请求头里,整个过程不需要修改Kogito的核心流程逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:27:17