跳转到内容

Token Broker

对应示例:examples/token-broker

Terminal window
# 在环境变量中配置上游 Provider Key
bun run examples/token-broker/server.ts

请求:

POST /api/voice/token
Content-Type: application/json
Authorization: Bearer <application-session-token>
{
"provider": "azure_speech",
"purpose": "asr",
"sessionId": "required"
}

响应:

{
"token": "short-lived-token",
"url": "wss://optional-signed-endpoint",
"expiresAt": 1784000000000
}

客户端 Provider:

const applicationSessionToken = await getApplicationSessionToken();
createAzureTTS({
tokenBrokerUrl: 'https://your.app/api/voice/token',
tokenBrokerHeaders: { authorization: `Bearer ${applicationSessionToken}` },
tokenBrokerSessionId: voiceSessionId,
region: 'eastasia',
voice: 'zh-CN-XiaoxiaoNeural',
});

Token Broker 只适合供应商能够签发短期且最小权限凭证的场景。Token 必须限制用途/route,最好同时限制模型、会话和预算;仅缩短有效期但仍允许 任意模型与额度的通用 bearer token 不能下发客户端。

示例中的 Azure STS token 只是缩短凭证暴露时间,不能锁定 voice、route 或 预算,因此属于显式选择的 Provider 直连模式,不是标准生产边界。标准模式应 让浏览器调用应用 API,由服务端持有 Azure Provider 与 voice 配置。

OpenRouter 这类请求/响应 API 的标准接入应使用 createOpenRouterGateway():服务端重建请求并锁定 prompt、model、voice、 temperature、token 上限与 reasoning。网关还应做用户鉴权、会话归属、配额、 速率限制、体积与超时、审计 ID。默认不要记原始音频、完整 transcript、 上游凭证。更多见 安全指南