07 访问令牌与 SDK

数据面(拉取配置)一律要求项目访问令牌:每项目独立、可吊销、轮换零中断。令牌在 Admin UI 管理(仅全局管理员)。

7.1 创建令牌

项目内「访问令牌」页签:

访问令牌

  1. 点「创建令牌」→ 输入名称(如 build-svc
  2. 响应弹窗明文仅展示这一次,立即复制保存(服务端只存 SHA-256,无法再次查看)
  3. 列表显示:名称 / ID / 创建人 / 时间 / 状态,可随时「吊销」

令牌永不过期,管理靠主动吊销;泄露即吊销重建。 同一项目可建多个令牌:轮换 = 新令牌先分发到客户端,旧令牌下次发版后吊销,零中断。

同一页签顶部提供构建脚本 curl 命令(格式可切 YAML / JSON / TOML / ENV),详见 08 构建脚本取值

7.2 三语言 SDK

令牌通过 SDK 的 token 参数携带,传输为 Authorization: Bearer <token>(gRPC metadata 同构)。

TypeScript

import { ConfigClient } from './sdk/ts/src/index.ts';

const c = new ConfigClient([{ grpc: '127.0.0.1:8383', http: 'http://127.0.0.1:8384' }], {
  token: '<项目访问令牌>',
});

const snap = await c.get('my-app', 'dev');        // 读 dev 分支活动版本
const item = await c.getItem('my-app', 'dev', 'redis', 'host');
c.watch('my-app', 'dev', (e) => console.log(e));  // 订阅发布事件(断线 after_version 续传)
const members = await c.listMembers();            // 集群成员(端点池刷新)

Go

c := configclient.NewGrpc("127.0.0.1:8383", "<项目访问令牌>") // gRPC 数据面
// 或 HTTP 降级:
c2 := configclient.New([]string{"http://127.0.0.1:8384"}, "<项目访问令牌>")
snap, _ := c.Get(ctx, "my-app", "dev", 0)

Python

from config_client import ConfigClient

c = ConfigClient([{'grpc': '127.0.0.1:8383', 'http': 'http://127.0.0.1:8384'}],
                token='<项目访问令牌>')
snap = c.get('my-app', 'dev')

7.3 SDK 行为要点

能力 说明
端点池 failover 多端点,连接失败指数退避切换
gRPC 优先 / HTTP 降级 端点含 grpc 地址走 gRPC(:8383),否则 HTTP/SSE
watch 断线续传 重连携带 after_version,不丢事件
secret 脱敏 数据面恒返回 ***(服务端不解密)
灰度身份 instance / labels 参与灰度解析(见 05 灰度发布

下一步

Defing 配置中心 · 使用教程(截图来自测试实例 http://172.16.48.71:18384)