概览
本文档主要介绍在线会话服务采用的 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 计算源码,您可以直接下载并集成到您的服务端。
UserSig 计算函数中主要包括 SDKAppID、UserID 以及 UserSig 有效期等关键参数,关键参数的详细介绍如下表所示:
说明:
下表中的字段名以 Java 语言的源码为例,其他语言略有差异,请以实际字段名为准。