Skip to main content

Module auth

Module auth 

Source
Expand description

gRPC 的 Bearer Token 鉴权

两种模式:

  • 未配置 KeyStore:完全不鉴权(保持旧行为,启动日志 warn)
  • 配置了 KeyStore:所有 RPC 必须带 authorization: Bearer <plaintext> metadata, 且按 EndpointSpec / proto_id / RPC 类型校验 scope

由于 gRPC 采用通用 Request(proto_id, body) RPC 模式,scope 检查优先 使用 EndpointSpec.runtime.scope;未进入 surface spec 的 legacy proto 再回退到 capability/低层 proto_id 表。SubscribePush 流式 RPC 要求 qot:read(推送混合了行情与交易,以行情 scope 为最低门槛)。

proto_id 范围所需 scope
已声明的 1xxx 公开 query(GetGlobalState / GetUserInfo / DelayStatistics)EndpointSpec.runtime.scope
legacy 1xxx 连接协议(InitConnect / KeepAlive / …)无(放行)
3xxx 行情qot:read
2001 / 2008 / 2101 / 2102 / 2111 / 2201 / 2211 / 2221 / 2222 / 2223 / 2225 / 2226 账户只读acc:read
2005 UnlockTradetrade:unlock(v1.4.104 codex F1 P1)
2202 / 2205 / 2237 下单 / 改单 / 确认trade:real
其他拒绝(保守)

Structs§

GrpcAdapter
v1.4.106 D1 5b: gRPC surface adapter — 把 pipeline AuthDecision::Reject 翻成 tonic Status.

Constants§

GRPC_STABLE_CONN_NAMESPACE
gRPC stable conn_id namespace base.

Functions§

derive_grpc_conn_id
派生 gRPC stable conn_id。
extract_grpc_idempotency_key
从 gRPC Request<T> metadata 提取 trade-write idempotency key。
extract_grpc_session_id
从 gRPC Request<T> metadata 提 optional grpc-session-id header。
extract_grpc_token
从 gRPC Request<T> metadata 提 Bearer token (case-insensitive scheme parse). 返 owned Option<String> 让 caller 决定 lifetime (避免 borrow vs move 冲突, gRPC Request 主体后续要 into_inner() 拿 body).
grpc_status_for
gRPC surface 的 rejection 状态码翻译入口.
scope_for_proto
按 proto_id 推断所需 scope.