Skip to content

功能建议:支持为连接 Hub 的请求配置自定义 Header #430

@Shujakuinkuraudo

Description

@Shujakuinkuraudo

背景

目前 HAPI 在自托管场景下,客户端 / runner 连接 Hub 时,主要依赖:

  • CLI_API_TOKEN / Bearer Token 的 HTTP API 认证
  • Socket.IO 连接时的 auth token

这在普通部署下没有问题,但如果 Hub 放在某些认证代理后面,就会比较难用。

比如以下场景:

  • Cloudflare Access
  • OAuth2 Proxy
  • Google IAP
  • 企业内网里的统一认证反代
  • 其他要求固定 Header / Cookie 的反向代理

这些场景下,虽然 Hub 的 URL 可达,但 HAPI 客户端侧如果不能额外附带代理要求的 Header / Cookie,就无法正常连接。


希望支持的能力

希望 HAPI 能支持一个通用的“自定义请求头”配置,用于客户端 / runner 连接 Hub 时附加额外 Header,而不是做某个厂商特定的适配。

例如支持类似:

  • 环境变量:HAPI_EXTRA_HEADERS_JSON
  • 和/或 settings.json 中增加 extraHeaders

例如:

{
  "Cookie": "CF_Authorization=...",
  "CF-Access-Client-Id": "...",
  "CF-Access-Client-Secret": "..."
}

希望生效的范围

希望这个能力能统一应用到:

  1. 连接 Hub 的 HTTP API 请求
  2. Socket.IO / WebSocket / polling 连接

因为如果只支持 HTTP,不支持 socket,很多实时能力还是会受影响。


为什么建议做成通用 Header,而不是 Cloudflare 专项支持

因为这个需求不只是 Cloudflare Access 才会遇到,很多认证代理 / 反代场景都会有类似要求。

如果做成通用能力,可以同时覆盖:

  • Cloudflare Access
  • OAuth2 Proxy
  • IAP 类网关
  • 企业内网认证代理
  • 其他自定义网关

这样对自托管部署会更灵活,也避免引入厂商特定逻辑。


设计上希望保持简单

我理解这个功能最好是:

  • 可选能力,不影响现有用户
  • 只有配置了才生效
  • 作为高级 / 自托管场景能力提供
  • 尽量只做“透传 Header”,不改变现有认证模型

想确认的问题

  1. 维护者是否愿意接受这种“通用自定义 Header”能力?
  2. 更推荐只做环境变量,还是同时支持 settings.json 配置?
  3. 是否建议 HTTP 和 Socket.IO 一起支持,而不是只支持其中一部分?

如果这个方向可以,我可以再整理一个尽量聚焦的 PR。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions