背景
目前 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": "..."
}
希望生效的范围
希望这个能力能统一应用到:
- 连接 Hub 的 HTTP API 请求
- Socket.IO / WebSocket / polling 连接
因为如果只支持 HTTP,不支持 socket,很多实时能力还是会受影响。
为什么建议做成通用 Header,而不是 Cloudflare 专项支持
因为这个需求不只是 Cloudflare Access 才会遇到,很多认证代理 / 反代场景都会有类似要求。
如果做成通用能力,可以同时覆盖:
- Cloudflare Access
- OAuth2 Proxy
- IAP 类网关
- 企业内网认证代理
- 其他自定义网关
这样对自托管部署会更灵活,也避免引入厂商特定逻辑。
设计上希望保持简单
我理解这个功能最好是:
- 可选能力,不影响现有用户
- 只有配置了才生效
- 作为高级 / 自托管场景能力提供
- 尽量只做“透传 Header”,不改变现有认证模型
想确认的问题
- 维护者是否愿意接受这种“通用自定义 Header”能力?
- 更推荐只做环境变量,还是同时支持
settings.json 配置?
- 是否建议 HTTP 和 Socket.IO 一起支持,而不是只支持其中一部分?
如果这个方向可以,我可以再整理一个尽量聚焦的 PR。
背景
目前 HAPI 在自托管场景下,客户端 / runner 连接 Hub 时,主要依赖:
CLI_API_TOKEN/ Bearer Token 的 HTTP API 认证这在普通部署下没有问题,但如果 Hub 放在某些认证代理后面,就会比较难用。
比如以下场景:
这些场景下,虽然 Hub 的 URL 可达,但 HAPI 客户端侧如果不能额外附带代理要求的 Header / Cookie,就无法正常连接。
希望支持的能力
希望 HAPI 能支持一个通用的“自定义请求头”配置,用于客户端 / runner 连接 Hub 时附加额外 Header,而不是做某个厂商特定的适配。
例如支持类似:
HAPI_EXTRA_HEADERS_JSONsettings.json中增加extraHeaders例如:
{ "Cookie": "CF_Authorization=...", "CF-Access-Client-Id": "...", "CF-Access-Client-Secret": "..." }希望生效的范围
希望这个能力能统一应用到:
因为如果只支持 HTTP,不支持 socket,很多实时能力还是会受影响。
为什么建议做成通用 Header,而不是 Cloudflare 专项支持
因为这个需求不只是 Cloudflare Access 才会遇到,很多认证代理 / 反代场景都会有类似要求。
如果做成通用能力,可以同时覆盖:
这样对自托管部署会更灵活,也避免引入厂商特定逻辑。
设计上希望保持简单
我理解这个功能最好是:
想确认的问题
settings.json配置?如果这个方向可以,我可以再整理一个尽量聚焦的 PR。