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

如何为Elsa Workflow的HTTP端点添加Authorization授权

Elsa Workflow HTTP端点授权实现方案

以下是三种可直接落地的实现方式,你可以根据业务场景选择:

全局统一配置授权策略

  • 适用场景:所有Elsa暴露的HTTP端点都需要统一的Bearer Token校验
  • 操作方法:在项目的服务注册逻辑中修改Elsa的HTTP模块配置,示例代码(针对Elsa 3.x版本):
builder.Services.AddElsa(elsa =>
{
    elsa.UseHttp(httpConfig => 
    {
        // 全局生效的HTTP端点授权校验逻辑
        httpConfig.HttpEndpointAuthorizationPolicy = async httpContext =>
        {
            // 读取Authorization请求头
            var authHeader = httpContext.Request.Headers.Authorization.FirstOrDefault();
            if (string.IsNullOrWhiteSpace(authHeader) || !authHeader.StartsWith("Bearer "))
            {
                return false;
            }
            
            var token = authHeader["Bearer ".Length..].Trim();
            // 替换为你自己的Token校验逻辑,比如JWT签名校验、权限校验等
            return CustomTokenValidator.Validate(token);
        };
        // 校验失败默认返回401状态码,也可自定义未授权响应内容
    });
});

单个端点配置专属授权

  • 适用场景:只需要给特定工作流的HTTP端点加授权,其他端点保持公开
  • 操作方法:
    1. 打开目标工作流的HTTP Endpoint活动编辑页面
    2. 找到授权条件配置项,输入C#校验表达式,示例:
      HttpContext.Request.Headers.Authorization.Any() && HttpContext.Request.Headers.Authorization.ToString().StartsWith("Bearer ") && CustomTokenValidator.Validate(HttpContext.Request.Headers.Authorization.ToString()[7..].Trim())
    3. 在未授权响应配置项中自定义401返回的状态码和响应体内容

整合ASP.NET Core原生授权体系

  • 适用场景:项目本身已经配置了ASP.NET Core的JWT Bearer认证,希望复用现有授权逻辑
  • 操作方法:在中间件配置中对Elsa的HTTP端点路径增加授权拦截,示例代码:
// 确保已提前注册并启用Authentication、Authorization中间件
app.UseAuthentication();
app.UseAuthorization();

// 拦截所有Elsa HTTP端点的请求做授权校验
app.UseWhen(context => context.Request.Path.StartsWithSegments("/elsa/workflows"), appBuilder =>
{
    appBuilder.Use(async (context, next) =>
    {
        // 复用项目现有的认证结果做校验
        if (!context.User.Identity?.IsAuthenticated ?? true)
        {
            context.Response.StatusCode = StatusCodes.Status401Unauthorized;
            await context.Response.WriteAsync("未授权访问");
            return;
        }
        await next();
    });
});

注意事项

  • 如果你修改过Elsa HTTP端点的默认基础路径,需要把拦截规则中的路径前缀替换为你自定义的路径
  • Token校验逻辑建议统一封装,不要在不同配置位置重复编写,避免后续维护不一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:27:03