直播 SDK 用户鉴权

这篇档主要介绍腾讯云实时音视频(TRTC)服务的两种鉴权方式,目前,腾讯云实时音视频(TRTC)、即时通信(IM)等服务都采用了 UserSig 的鉴权方式。UserSig 是腾讯云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用你的云服务使用权。如果你要使用这些基础云服务,就需要在 SDK 初始化或登录函数中提供 SDKAppID,UserID 和 UserSig 三个关键信息,具体含义如下。

相关产品
直播 SDK 产品页,含版本规格、价格与购买入口。

一、概览

·SDKAppID 用于标识你的应用。

·UserID 用于标识你的用户。

·UserSig 则是基于前两者计算出的安全签名,它由 HMAC SHA256 加密算法计算得出。只要攻击者不能伪造 UserSig,就无法盗用你的云服务流量。

二、在调试阶段如何计算 UserSig?

如果你希望快速跑通 Demo,了解 TRTC SDK 相关能力,你可以通过 客户端示例代码 和 控制台 两种方法计算获取 UserSig,具体请参见以下介绍。

注意:不安全:

注意,如下两种 UserSig 获取计算方案仅适用于调试,如果产品要正式上线,不推荐采用这种方案,因为客户端代码(尤其是 Web 端)中的 SECRETKEY 很容易被反编译逆向破解。一旦你的密钥泄露,攻击者就可以盗用你的腾讯云流量。

三、1. 获取 SDKAPPID 和密钥:

·登录实时音视频控制台 > 应用管理。

·单击你需查看的 SDKAppID 对应的应用信息,单击进入应用概览。

·点击 SDK 密钥查看密钥,即可获取用于计算 UserSig 的加密密钥。

·单击复制密钥,可将密钥拷贝到剪贴板中。

四、2. 计算 UserSig:

为了方便客户端使用,我们提供各平台计算 UserSig 的源码文件,你可直接下载使用:

Android iOS Web 微信小程序 Windows(C++) Flutter Mac
GitHub GitHub GitHub GitHub GitHub GitHub GitHub

示例代码如下(当然你也可以参考我们各产品的 Demo 工程,详见各产品的开发文档):

AndroidiOSWeb微信小程序Window(C++)Window(C#)FlutterMac// Step1: 导入源码文件import com.xxx.xxx.GenerateTestUserSig;// Step2:填写上一步骤中获取到的 SDKAppID,SDK 密钥GenerateTestUserSig.SDKAPPID = xxxxxx;
GenerateTestUserSig.SECRETKEY = "xxxxxx";// Step3:根据 userID,生成 userSig
String userSig = GenerateTestUserSig.genTestUserSig("userID");// Step1: 导入头文件#import "GenerateTestUserSig.h"// Step2: 填写上一步骤中获取到的 SDKAppID,SDK 密钥[GenerateTestUserSig setSDKAPPID:xxxxxx];[GenerateTestUserSig setSECRETKEY:@"xxxxxx"];// Step3:根据 userID,生成 userSigNSString *userSig = [GenerateTestUserSig genTestUserSig:@"userID"];// Step1: 导入模块<script src='js/libs/lib-generate-test-usersig.min.js'></script><script src='js/libs/generateTestUserSig.js'></script>// Step2:填写上一步骤中获取到的 SDKAppID,SDK 密钥、输入自定义的userID,生成 userSigconst {sdkAppId, userSig } = genTestUserSig({ sdkAppId: xxxxxx, userId: 'xxxxxx', sdkSecretKey: 'xxxxxx',}// Step1: 导入模块import { genTestUserSig } from 'GenerateTestUserSig';// Step2:填写上一步骤中获取到的 SDKAppID,SDK 密钥、输入自定义的userID,生成 userSigconst {userSig } = genTestUserSig({ sdkAppId: xx, userId: 'xxxxxx', sdkSecretKey: 'xxxxxx' })// Step1: 导入头文件#include "GenerateTestUserSig.h"// Step2:填写上一步骤中获取到的 SDKAppID,SDK 密钥const int SDKAPPID = xxxxxx;const char* SECRETKEY = "xxxxxx";// Step3:根据 userID,生成 userSigconst char* userSig = GenerateTestUserSig::genTestUserSig("userID", SDKAPPID, SECRETKEY);// Step1: 导入头文件using GenerateTestUserSig;// Step2: 填写上一步骤中获取到的 SDKAppID 和 SDK 密钥GenerateTestUserSig.SDKAPPID = xxxxxx; GenerateTestUserSig.SECRETKEY = "xxxxxx";// Step3:根据 userID,生成 userSigstring userSig = GenerateTestUserSig.GetInstance().GenTestUserSig("userID");// Step1: 导入源码文件import 'package:xxx/GenerateTestUserSig.dart';// Step2: 填写上一步骤中获取到的 SDKAppID,SDK 密钥GenerateTestUserSig.SDKAPPID = xxxxxx;GenerateTestUserSig.SECRETKEY = "xxxxxx";// Step3:根据 userID,生成 userSigString userSig = GenerateTestUserSig.genTestUserSig("userID");// Step1: 导入头文件#import "GenerateTestUserSig.h"// Step2: 填写上一步骤中获取到的 SDKAppID,SDK 密钥[GenerateTestUserSig setSDKAPPID:xxxxxx];[GenerateTestUserSig setSECRETKEY:@"xxxxxx"];// Step3:根据 userID,生成 userSigNSString *userSig = [GenerateTestUserSig genTestUserSig:@"userID"];

五、控制台获取 UserSig

·登录实时音视频控制台,进入开发辅助 > UserSig 生成&校验。

·在签名(UserSig)生成工具下,选择对应的 SDKAppID 和 UserID。

·单击生成签名(UserSig),即可计算得到对应的 UserSig。

六、在正式运行阶段如何计算 UserSig?

业务正式运行阶段,TRTC 提供安全等级更高的服务端计算 UserSig 的方案,可以最大限度地保障计算 UserSig 用的密钥不被泄露,因为攻破一台服务器的难度要高于逆向一款 App。具体的实现流程如下:

1. 你的 App 在调用 SDK 的初始化函数之前,首先要向你的服务器请求 UserSig。

2. 你的服务器根据 SDKAppID 和 UserID 计算 UserSig,计算源码见文档前半部分。

3. 服务器将计算好的 UserSig 返回给你的 App。

4. 你的 App 将获得的 UserSig 通过特定 API 传递给 SDK。

5. SDK 将 SDKAppID + UserID + UserSig 提交给腾讯云服务器进行校验。

6. 腾讯云校验 UserSig,确认合法性。

7. 校验通过后,会向 TRTC SDK 提供实时音视频服务。

为了简化你的实现过程,我们提供了多个语言版本的 UserSig 计算源代码及其示例:

语言版本 签名算法 源代码 使用示例
Java HMAC-SHA256 genSig GitHub
GO HMAC-SHA256 GenSig GitHub
PHP HMAC-SHA256 genSig GitHub
Node.js HMAC-SHA256 genSig GitHub
Python HMAC-SHA256 genSig GitHub
C# HMAC-SHA256 GenSig GitHub

七、SDK 密钥如何切换为非对称密钥?

若查看密钥时只能获取公钥和私钥信息,可点击下图所示位置切换为最新的非对称密钥,请注意:切换密钥前请确保线上业务已停用。

赞 (0)
上一篇 4天前
下一篇 4天前