UserSig 鉴权
本文档重点介绍 UserSig——腾讯云设计的保护签名,防止恶意攻击者窃取云服务使用权。使用基础云服务时,在 SDK 初始化或登录过程中需提供 SDKAppID、UserID 和 UserSig 三项关键信息。
SDKAppID 用于标识您的应用。
UserID 用于标识您的用户。
UserSig 则是基于前两者计算出的安全签名,它由 HMAC SHA256 加密算法计算得出。只要攻击者不能伪造 UserSig,就无法盗用您的云服务流量。
获取密钥
1. 登录即时通信 Chat 控制台。
2. 单击目标应用卡片,进入应用的基础配置页面。
3. 在基本信息区域,单击密钥右侧的显示密钥。

4. 单击复制即可复制并储存密钥信息。
客户端计算 UserSig
Chat SDK 示例代码中提供的
GenerateTestUserSig
的开源模块可以帮忙您快速生成 UserSig。您只需设置 SDKAPPID(应用 SDKAppID)、EXPIRETIME(UserSig 过期时间)和 SECRETKEY(密钥信息)三个成员变量的取值,然后调用 genTestUserSig() 函数即可快速获取 UserSig。为了简化实现过程,我们提供了下列语言或平台的 UserSig 计算源码,您可以直接下载并集成到您的客户端。
编程语言 | 所属平台 | GenerateTestUserSig 源代码 |
Java | Android | |
Objective-C | iOS | |
Objective-C | Mac | |
C++ | Windows | |
Javascript | Web | |
Dart | Flutter |
注意:
该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量,因此该方法仅适合本地跑通 Demo 和功能调试。
正确的 UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向 App 的接口,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig。更多详情请参见 服务端生成 UserSig。
服务端计算 UserSig
采用服务端计算 UserSig,可以最大限度地保障计算 UserSig 所用的密钥信息不被泄露。您只需将计算代码部署在您的服务器上,并提供面向 App 的服务端接口,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig。
为了简化实现过程,我们提供了下列语言或平台的 UserSig 计算源码,您可以直接下载并集成到您的服务端。
UserSig 计算函数中主要包括 SDKAppID、UserID 以及 UserSig 有效期等关键参数,关键参数的详细介绍如下表所示:
说明:
下表中的字段名以 Java 语言的源码为例,其他语言略有差异,请以实际字段名为准。
老版本算法
为了简化签名计算难度,方便客户更快速地使用腾讯云服务,即时通信 Chat 服务自2019.07.19开始启用新的签名算法,从之前的 ECDSA-SHA256 升级为 HMAC-SHA256。 2019.07.19以后创建的 SDKAppID 均会采用新的 HMAC-SHA256 算法。
如果您的 SDKAppID 是2019.07.19之前创建的,建议升级为 HMAC-SHA256 算法,升级过程不会影响现网业务。您也可以继续使用老版本的签名算法,ECDSA-SHA256 算法的源码下载链接如下:
控制台快速获取
控制台获取 UserSig,仅用于未上线前测试。
登录 Tencent-RTC 控制台,进入 Development Tools > UserSig Tools。
在签名(UserSig)生成工具下,选择对应的 SDKAppID 和 UserID。
单击 Generate,即可计算得到对应的 UserSig。
