WebRTC 连接

TURN 临时凭据的完整生命周期:签发、使用、过期与撤销

设计基于 HMAC 的短期 TURN 用户名与密码,处理时钟偏差、会话绑定、续期、退出撤销、密钥轮换和泄露后的影响范围。

把它做成生产功能之前,需要先拆开协议事实、产品承诺和运行成本,三者混在一起很容易得到错误结论。 把固定 TURN 密码写进前端等于公开带宽账户。临时凭据通过服务端密钥为带过期时间的用户名签名,TURN 无需查询每个用户也能验证,但应用仍要控制谁可以领取、能领多少和何时续期。

WebRTC 的判断依据必须来自两端状态、信令版本和实际选中的候选对。只看某个浏览器回调会遗漏 glare、ICE 切路与对端刷新造成的分叉。

落地方案的关键部件

这项能力横跨客户端、网络与服务端,局部最优很容易制造全局故障。工程决策需要同时约束两端行为、持久化事实和运维预算。

  • 用户名包含明确的 UTC 到期时间与不可猜测会话标识,密码只在服务端计算。
  • 凭据寿命覆盖一次连接与合理重试,但明显短于用户登录或设备信任周期。
  • 轮换共享密钥时保留短暂双密钥验证窗口,并监控旧版本领取与使用。

短期凭据不是单独的安全开关,它要与领取权限、用户配额、并发限制和密钥轮换共同构成可回收的 TURN 访问能力。

别让错误假设进入生产

失败路径需要与成功路径共享同一套状态模型。只弹一个错误提示却不释放资源、不传播终态,下一次恢复就会继承脏状态。

  • 客户端时钟参与计算到期时间,时钟漂移导致刚领取的凭据立即失效。
  • 退出只删除页面状态,仍有效的凭据可在数小时内被复制继续消耗流量。
  • 凭据接口没有用户或 IP 速率限制,攻击者可批量领取再分发。

发布闸门应该检查什么

测试不能以“最后成功了”结束。还要测量经历了多少次副作用、等待多久、是否泄露内容,以及失败后再次执行能否从干净基线开始。

  1. 把服务端与 TURN 时钟故意错开边界值,验证容差不会扩大成过长有效期。
  2. 轮换密钥时保持现有连接、新连接和过期凭据三组用例同时运行。
  3. 复制凭据并发创建大量 allocation,确认配额、并发和审计能识别同一签发主体。

当实现能够安全降级、重复执行不产生额外副作用、故障指标早于投诉出现时,这项能力才算具备长期维护价值。

把方法变成一次真实连接

打开 uCopy,让两台设备在浏览器里安全连接并开始传输。

开始免费使用