概览
本文档主要介绍腾讯云即时通信(IM)服务的两种鉴权方式,目前,腾讯云即时通信(IM)和实时音视频(TRTC)等服务都采用了 UserSig 的鉴权方式。UserSig 是腾讯云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。如果您要使用这些基础云服务,就需要在 SDK 初始化或登录函数中提供 SDKAppID,UserID 和 UserSig 三个关键信息,具体含义如下:
SDKAppID 用于标识您的应用。
UserID 用于标识您的用户。
UserSig 则是基于前两者计算出的安全签名,它由 HMAC SHA256 加密算法计算得出。只要攻击者不能伪造 UserSig,就无法盗用您的云服务流量。
在调试阶段如何计算 UserSig?
不安全:
注意,如下两种 UserSig 获取计算方案仅适用于调试,如果产品要正式上线,不推荐采用这种方案,请采用正式运行技阶段计算UserSig方案,因为客户端代码(尤其是 Web 端)中的 SECRETKEY 很容易被反编译逆向破解。一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。
获取信息(SDKAppID和密钥)
1. 登录即时通信 IM 控制台。
2. 单击应用管理,进入应用管理列表。
3. 在目标应用的操作列,单击查看密钥。

4. 在对话框中单击显示密钥。

5. 单击复制图标即可复制并储存密钥信息。

注意:
请妥善保管密钥信息,谨防泄露。
客户端计算 UserSig
IM SDK 示例代码中提供的
GenerateTestUserSig
的开源模块可以帮忙您快速生成 UserSig。您只需设置 SDKAPPID(应用 SDKAppID)、EXPIRETIME(UserSig 过期时间)和 SECRETKEY(密钥信息)三个成员变量的取值,然后调用 genTestUserSig() 函数即可快速获取 UserSig。
为了简化实现过程,我们提供了下列语言或平台的 UserSig 计算源码,您可以直接下载并集成到您的客户端。编程语言 | 所属平台 | GenerateTestUserSig 源代码 |
Java | Android | |
Objective-C | iOS | |
Objective-C | Mac | |
C++ | Windows | |
Javascript | Web | |
Javascript | 小程序 | |
Dart | Flutter |
注意:
该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量,因此该方法仅适合本地跑通 Demo 和功能调试。
正确的 UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向 App 的接口,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig。更多详情请参见 服务端生成 UserSig。
控制台获取 UserSig
登录 实时音视频控制台,选择开发辅助 > UserSig生成&校验。
在签名(UserSig)生成工具下,选择对应的 SDKAppID 和 UserID。
单击生成签名(UserSig),即可计算得到对应的 UserSig。

正式运行阶段计算 UserSig
采用服务端计算 UserSig,可以最大限度地保障计算 UserSig 所用的密钥信息不被泄露。您只需将计算代码部署在您的服务器上,并提供面向 App 的服务端接口,在需要 UserSig 时由您的 App 向业务服务器发起请求获取动态 UserSig。

为了简化实现过程,我们提供了下列语言或平台的 UserSig 计算源码,您可以直接下载并集成到您的服务端。
UserSig 计算函数中主要包括 SDKAppID、UserID 以及 UserSig 有效期等关键参数,关键参数的详细介绍如下表所示:
说明:
下表中的字段名以 Java 语言的源码为例,其他语言略有差异,请以实际字段名为准。
字段名示例 | 参数说明 |
sdkappid | |
userId | 用户 ID,旧称为 Identifier。 |
expire | UserSig 的有效期,单位为秒。 建议 UserSig 有效期最短不小于24小时,最长不超过50年。为了您的账号安全,建议将 UserSig 有效期设置为两个月。 |
userbuf | 即时通信 IM 中均默认使用不带 UserBuf 的接口,即该参数默认填写为 null 。 |
key |
老版本算法
为了简化签名计算难度,方便客户更快速地使用腾讯云服务,即时通信 IM 服务自2019.07.19开始启用新的签名算法,从之前的 ECDSA-SHA256 升级为 HMAC-SHA256。 2019.07.19以后创建的 SDKAppID 均会采用新的 HMAC-SHA256 算法。
如果您的 SDKAppID 是2019.07.19之前创建的,建议升级为 HMAC-SHA256 算法,升级过程不会影响现网业务。您也可以继续使用老版本的签名算法,ECDSA-SHA256 算法的源码下载链接如下: