[Feature Request] Allow a Connection to use mTLS for encryption and a bearer (JWT/API key) for authN/Z simultaneously
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 48/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- go
调研方向
Read the Connection CRD CEL rule and the client-auth builder paths named in the issue: fetchClientUsingMTLSSecret, fetchClientUsingAPIKeySecret, and getClientOptions. Trace how the CRD values reach TLS and credentials, then check the related tests. Done means a Connection can provide both client mTLS and bearer credentials, with existing single-credential behavior still covered.
由索引模型根据 Issue 内容生成。
描述
Is your feature request related to a problem? Please describe.
We run a self-hosted Temporal frontend that enforces requireClientAuth (mTLS, used for
encryption / client-cert gate) AND has application-layer authorization enabled (default
Authorizer + default JWT ClaimMapper, permissions claim in <namespace>:<role> form). Every
caller is expected to present BOTH a client certificate (mTLS) and a JWT bearer (for authZ).
The Worker Controller cannot connect in this setup. A Connection accepts either
mutualTLSSecretRef OR apiKeySecretRef, enforced as mutually exclusive by a CRD CEL rule, and
the controller builds its client auth in two mutually-exclusive branches:
fetchClientUsingMTLSSecret→{ tls: <client cert>, credentials: nil }fetchClientUsingAPIKeySecret→{ tls: <serverName + CA only, no client cert>, credentials: <api key> }
So an mTLS client cert and a bearer token can never be presented together. With JWT authorization
enabled on the frontend, an mTLS-only controller receives empty claims (the default JWT
ClaimMapper returns empty Claims when no bearer is present) and is denied on every AccessWrite
API — even though our mTLS is valid and our authZ model already works for all other clients.
Describe the solution you'd like
Allow a Connection to carry BOTH an mTLS client credential (encryption) AND a bearer credential
(JWT / API key, for authN/Z) at the same time. Concretely:
- relax the
mutualTLSSecretRefXORapiKeySecretRefCEL constraint so both can be set; - in the client-auth builder, combine the mTLS
tls.Config(client cert) with
opts.Credentials(bearer) rather than choosing one branch.
This matches what the Temporal Go SDK already supports: Options.ConnectionOptions.TLS and
Options.Credentials are independent fields and can both be set. The server likewise supports
mTLS-for-encryption together with JWT-for-authorization. The only place the two are mutually
exclusive is the controller's Connection model.
Additional context
- Chart / controller version:
0.32.0(appVersion1.13.0). - Server: self-hosted, authorization enabled (default Authorizer + default JWT ClaimMapper,
requireClientAuth: trueon the frontend). - Source references:
getClientOptionssetsConnectionOptions.TLSandCredentials
independently;fetchClientUsingMTLSSecret/fetchClientUsingAPIKeySecretpopulate only one;
theConnectionCRD enforces the XOR via a CEL rule. - We suspect the current exclusivity reflects the Temporal Cloud model (API key alone + server
TLS). Self-hosted deployments that combine mTLS encryption with JWT authZ need both at once.
If this is confirmed it is a blocking issue (we cannot use TWC) for security risk (of our security policies).
- 主要语言
- Go
- 星标
- 198
- 派生
- 84
- 平均合并
- 2 天 19 小时
- 30 天内合并 PR
- 34
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
temporalio/temporal-worker-controller 的其他 Issue
-
[Bug] Helm chart: metrics.enabled=false still adds kube-rbac-proxy可能已有人在做 @cujarrett 今天认领。 未关闭
难度 2/5 1 小时以内 新手友好度 20/100
temporalio/temporal-worker-controller#689 ·
维护者通常 1 天内回复
-
[Bug] Helm chart: prometheus.enabled always fails可能已有人在做 @cujarrett 今天认领。 未关闭
难度 3/5 1-2 天 新手友好度 35/100
temporalio/temporal-worker-controller#688 ·
维护者通常 1 天内回复
-
[Feature Request] Configure temporal-worker-controller to use hostNetwork可能已有人在做 @josh-ferrell 于 6 天前认领。 未关闭enhancement
难度 4/5 3-5 天 新手友好度 35/100
temporalio/temporal-worker-controller#680 ·
维护者通常 1 天内回复
-
[Feature Request] Helm chart: support topologySpreadConstraints on the controller Deployment可能已有人在做 @akolacz 于 13 天前认领。 未关闭helm
temporalio/temporal-worker-controller#658 · 1 个 reaction · 已指派 1 人 ·
维护者通常 1 天内回复
-
Bug: v1.6's delete-protection finalizer is never removed from migrated TemporalWorkerDeployment/TemporalConnection, so they stay Terminating after the v1.7 migration可能已有人在做 @nmechack27 于 20 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 57/100
temporalio/temporal-worker-controller#644 · 2 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
查看 temporalio/temporal-worker-controller 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 66/100
-
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
enhancement tariffs
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 66/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复