tencent cloud

生成 UserSig
最后更新时间:2025-12-05 10:57:56
生成 UserSig
最后更新时间: 2025-12-05 10:57:56
UserSig(用户签名)是 TRTC 用于验证用户身份的安全凭证。当用户使用 TRTC 服务时,如初始化 SDK 或登录,需要传入 UserSig,TRTC 会据此校验用户身份的真实性,防止恶意攻击者盗用您的云服务流量。本文介绍如何在控制台、客户端、服务端生成 UserSig。
下图展示在生产环境中,在服务端生成 UserSig 的鉴权流程:


前提条件

开始前,请确保您已参考开通服务创建一个应用,并在控制台获取应用的下列信息:
SDKAppID:您的应用的唯一标识
SDKSecretKey:应用的密钥

生成 userSig

您可以通过下列三种方式生成 UserSig:
控制台生成:通过 SDKAppIDUserID 快速生成,仅适用于本地 Demo 测试和功能调试
客户端生成:通过 TRTC 提供的 GenerateTestUserSig 仅开源模块在客户端生成 UserSig,可以自定义 UserID,对接您自己的账号体系,仅适用于本地 Demo 测试和功能调试
服务端生成:将生成 UserSig 的代码部署在您的业务服务器,在需要 UserSig 时由您的 App 向您的业务服务器发起请求,获取动态 UserSig,适用于正式生产环境

控制台生成

如果你需要快速体验产品 Demo,在控制台生成 UserSig 是最便捷的方式,可参考下列步骤来生成:
1. 登录 TRTC 控制台,在概览面板页面的左侧目录选择开发工具 > UserSig 工具
2. 选择您需要体验的应用的 SDKAppID,并输入用于测试的 UserID
3. 单击 Generate,即可生成对应的 UserSig。


客户端生成

TRTC 在 GitHub 上提供了下列编程语言的开源代码供您参考来生成 UserSig。您可以下载并将源码集成到您的客户端,传入 SDKAppIDSDKSecretKey 并设置 UserSig 的有效期(EXPIRETIME)即可快速生成。
编程语言
所属平台
GenerateTestUserSig 源代码
Java
Android
Objective-C
iOS
Objective-C
Mac
C++
Windows
Dart
Flutter
警告:
该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的 TRTC 流量,因此该方法仅适合本地跑通 Demo 和功能调试
在正式生产环境中,您需要将生成 UserSig 代码集成到您的业务服务器上,并提供面向 App 的接口。当 App 需要 UserSig 时,向服务器发起请求,获取动态生成的 UserSig,详见服务端生成

服务端生成


服务端
生成 UserSig,可以最大限度地保障生成 UserSig 所用的密钥信息不被泄露。TRTC 提供下列语言的生成代码,您可以直接下载并集成到您的服务端。
以下列出的语言均基于 HMAC-SHA256 算法生成 UserSig。
语言版本
下载链接
Java
Go
PHP
Node.js
Python
C#
C++
以 Go 语言的代码为例,生成 UserSig 的函数中主要包含下列参数:
sdkappid:应用 ID,为您的应用的唯一标识。
userId:用户 ID,限制长度为32字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。
expire:UserSig 的有效时间,单位为秒(s)。
userbuf:该参数默认填 null。实时音视频的部分使用场景中可能需要使用带 userbuf 的接口,例如进房时,具体介绍请参见 进房权限保护
key:您的应用的密钥。

以 Go 语言为例,可参考以下步骤搭建一个 UserSig 生成器:
注意:
本节提供的示例代码仅用于本地测试和功能验证,不能直接用于生产环境。生产环境中应将 UserSig 生成逻辑集成到您的业务服务器中,由客户端通过接口(如 HTTP API)向服务器请求获取。
在开始前请确保您已经安装 Golang

老版本算法

为了简化签名计算难度,TRTC 自 2019.07.19 开始启用新的签名算法,从之前的 ECDSA-SHA256 升级为 HMAC-SHA256。 2019.07.19以后创建的 SDKAppID 均会采用新的 HMAC-SHA256 算法。
如果您的应用创建于 2019.07.19之前,建议升级为 HMAC-SHA256 算法,升级过程不会影响现网业务。您也可以继续使用老版本的签名算法,源码下载链接如下:
语言版本
下载链接
Java
Go
PHP
Node.js
Python
C#
C++

本页内容是否解决了您的问题?
您也可以 联系销售 提交工单 以寻求帮助。

文档反馈