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

前提条件
SDKAppID:您的应用的唯一标识SDKSecretKey:应用的密钥生成 userSig
您可以通过下列三种方式生成 UserSig:
控制台生成:通过
SDKAppID 和 UserID 快速生成,仅适用于本地 Demo 测试和功能调试。客户端生成:通过 TRTC 提供的
GenerateTestUserSig 仅开源模块在客户端生成 UserSig,可以自定义 UserID,对接您自己的账号体系,仅适用于本地 Demo 测试和功能调试。服务端生成:将生成 UserSig 的代码部署在您的业务服务器,在需要 UserSig 时由您的 App 向您的业务服务器发起请求,获取动态 UserSig,适用于正式生产环境。
控制台生成
如果你需要快速体验产品 Demo,在控制台生成 UserSig 是最便捷的方式,可参考下列步骤来生成:
1. 登录 TRTC 控制台,在概览面板页面的左侧目录选择开发工具 > UserSig 工具。
2. 选择您需要体验的应用的
SDKAppID,并输入用于测试的 UserID。3. 单击 Generate,即可生成对应的 UserSig。

客户端生成
TRTC 在 GitHub 上提供了下列编程语言的开源代码供您参考来生成 UserSig。您可以下载并将源码集成到您的客户端,传入
SDKAppID、SDKSecretKey 并设置 UserSig 的有效期(EXPIRETIME)即可快速生成。警告:
该方法中
SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的 TRTC 流量,因此该方法仅适合本地跑通 Demo 和功能调试。在正式生产环境中,您需要将生成 UserSig 代码集成到您的业务服务器上,并提供面向 App 的接口。当 App 需要 UserSig 时,向服务器发起请求,获取动态生成的 UserSig,详见服务端生成。
服务端生成
服务端
生成 UserSig,可以最大限度地保障生成 UserSig 所用的密钥信息不被泄露。TRTC 提供下列语言的生成代码,您可以直接下载并集成到您的服务端。以下列出的语言均基于 HMAC-SHA256 算法生成 UserSig。
以 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。
具体步骤
1. 新建一个
usersig-test 文件夹,在该文件夹下创建一个 main.go 文件。2. 将以下示例代码贴入
main.go 文件,并将 sdkAppID 和 key 替换为您的应用的实际值:package mainimport ("fmt""github.com/tencentyun/tls-sig-api-v2-golang/tencentyun")const (sdkAppID = 1400000000 // 替换为您的 SDKAppIDkey = "YOUR_SDKSECRETKEY" // 替换为您的 SDKSecretKeyuserID = "testuser" // 用户 IDexpire = 86400 * 180 // UserSig 有效期(秒),示例为 180 天)func main() {// 生成 UserSigsig, err := tencentyun.GenUserSig(sdkAppID, key, userID, expire)if err != nil {fmt.Println("生成 UserSig 失败:", err)return}fmt.Printf("UserID: %s\n", userID)fmt.Printf("UserSig: %s\n", sig)}
3. 打开终端,进入到
usersig-test 文件路径下,运行以下命令创建 go.mod 文件:$ go mod init usersig-test
4. 运行以下命令安装依赖:
$ go get github.com/tencentyun/tls-sig-api-v2-golang/tencentyun
5. 运行以下命令启动 UserSig 生成器:
$ go run main.go
程序运行成功后,终端会输出根据您填入的
SDKAppID 和 SDKSecretKey 生成的 UserSig,您可以用这个 UserSig 进行功能测试。老版本算法
为了简化签名计算难度,TRTC 自 2019.07.19 开始启用新的签名算法,从之前的 ECDSA-SHA256 升级为 HMAC-SHA256。 2019.07.19以后创建的 SDKAppID 均会采用新的 HMAC-SHA256 算法。