生成 UserSig

最近更新时间:2026-05-20 18:06:22

我的收藏

概览

本文档主要介绍在线会话服务采用的 UserSig 的鉴权方式。
UserSig 是腾讯云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。如果您要使用在线会话云服务,就需要在 SDK 初始化或登录函数中提供 SDKAppID,UserID 和 UserSig 三个关键信息,具体含义如下:
SDKAppID 用于标识您的应用。
UserID 用于标识您的用户。
UserSig 则是基于前两者计算出的安全签名,它由 HMAC SHA256 加密算法计算得出。只要攻击者不能伪造 UserSig,就无法盗用您的云服务流量。

在调试阶段如何计算 UserSig?

如果您希望快速跑通 Demo,了解相关能力,您可以通过下述两种方法计算获取 UserSig,具体请参见以下介绍。
不安全:
注意,如下两种 UserSig 获取计算方案仅适用于调试,如果产品要正式上线,不推荐采用这种方案,请采用 正式运行阶段计算 UserSig 方案,因为客户端代码(尤其是 Web 端)中的 SECRETKEY 很容易被反编译逆向破解。一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量。

获取信息(SDKAppID 和密钥)

1. 登录云联络中心在线会话控制台
说明:
如果您还没有应用,请先 新增应用接入在线会话,然后再执行下一步。
2. 接入在线会话后可以看到会关联一个 IM 应用 ID。



说明:
在线会话使用的是即时通信 IM 的会话能力,接入在线会话会关联一个对应的 IM 应用,使用的是即时通信 IM 的账号体系,在线会话相关 REST API 均使用该 IM 应用及对应管理员账号进行调用。
3. 获取该 IM 应用的密钥需要登录即时通信 IM 控制台
4. 单击应用管理,进入应用管理列表,可以看到刚刚云联络中心在线会话对应的 IM 应用 ID。
5. 在目标应用的操作列,单击应用详情


6. 在应用信息中可查看和复制密钥

注意:
请妥善保管密钥信息,谨防泄露。

客户端计算 UserSig

在线会话 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)生成工具下,选择对应的应用 和 UserID。
单击生成签名(UserSig),即可计算得到对应的 UserSig。


正式运行阶段计算 UserSig


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

为了简化实现过程,我们提供了下列语言或平台的 UserSig 计算源码,您可以直接下载并集成到您的服务端。
语言版本
关键函数
下载链接
Java
HMAC-SHA256
genSig
Go
HMAC-SHA256
GenSig
PHP
HMAC-SHA256
genSig
Node.js
HMAC-SHA256
genSig
Python
HMAC-SHA256
gen_sig
C#
HMAC-SHA256
GenSig
C++
HMAC-SHA256
gen_sig
UserSig 计算函数中主要包括 SDKAppID、UserID 以及 UserSig 有效期等关键参数,关键参数的详细介绍如下表所示:
说明:
下表中的字段名以 Java 语言的源码为例,其他语言略有差异,请以实际字段名为准。
字段名示例
参数说明
sdkappid
IM 应用 SDKAppID,可在云联络中心 控制台 的在线会话接入配置获取对应 IM SDKAppID。
userId
用户 ID,旧称为 Identifier。
expire
UserSig 的有效期,单位为秒。
建议 UserSig 有效期最短不小于24小时,最长不超过50年。为了您的账号安全,建议将 UserSig 有效期设置为两个月。
userbuf
即时通信 IM 中均默认使用不带 UserBuf 的接口,即该参数默认填写为 null
key
密钥信息,可在即时通信 IM 控制台 的应用详情页面中获取,具体操作请参见 获取密钥