使用 Kit Token 鉴权
概述
Kit Token 是 ZEGO UIKit 用于验证用户身份和权限的凭证。它将用于以下几个地方:
- 用户即将加入的房间;
- 房间中用户的唯一标识符(userID);
- 默认用户名。
虽然 ZEGO UIKit 提供了在客户端应用程序上生成 Kit Token的方法,但这种方法可能会导致 APP 正式上线后面临安全风险。因此,ZEGO 建议开发者参考本文档在服务器上生成 Kit Token。
前提条件
在生成 Kit Token 之前,请确保:
- 已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目信息。
- 联系 ZEGO 技术支持,开通 UIKit 相关服务。
实现流程
1 生成 Token
在获取 AppID 和 ServerSecret 之后,您可以根据业务需求在您的 APP 服务器或客户端 上定义验证规则。
出于业务安全考虑,ZEGO 建议您在 APP 服务器上生成 Token;否则,ServerSecret 可能遭受窃取。
ZEGO 在 GitHub/Gitee 提供了一个开源的 zego_server_assistant 插件,支持使用 Go、C++、Java、Objective-C、Python、PHP、.NET、Node.js 等语言,在开发者的服务端部署生成 Token。
zego_server_assistant 插件中用于服务端生成 Token 的各语言参考信息如下:
语言 | 支持版本 | 关键函数 | 代码库地址 | 基础鉴权 Token |
---|---|---|---|---|
Go | Go 1.14.15 或以上版本 | GenerateToken04 | ||
C++ | C++ 11 或以上版本 | GenerateToken04 | ||
Java | Java 1.8 或以上版本 | generateToken04 | ||
Python | Python 3.6.8 或以上版本 | generate_token04 | ||
PHP | PHP 5.6 或以上版本 | generateToken04 | ||
.NET | .NET Framework 3.5 或以上版本 | GenerateToken04 | ||
Node.js | Node.js 8 或以上版本 | generateToken04 |
生成示例
以下以 PHP 为例介绍如何生成 Token。推荐使用 Composer 自动加载,即 Composer 的PSR-4自动加载。
-
将下载的包复制到项目的根目录中。以
/my_project/zego
目录为例,其中/my_project/
是根目录。 -
在
vim /my_project/composer.json
文件中包含psr-4
自动加载配置。Untitled{ ... "autoload": { "psr-4": { "ZEGO\\": "zego/src/ZEGO" } } ... }
1 -
运行
composer dump-autoload
命令,或者composer dump-autoload -o
(用于生产环境),或者composer update
命令生成一个自动加载文件。 -
在
/my_project/xxx.php
文件中使用以下代码,并将payload
字段留空(因 Token 仅用于服务端 API 的简单权限验证)。Untitledrequire 'vendor/autoload.php'; use ZEGO\ZegoServerAssistant; use ZEGO\ZegoErrorCodes; $appId = ; // 您的 AppID $userId = ''; // 用户 ID $secret = ''; // 您的ServerSecret $payload = ''; $token = ZegoServerAssistant::generateToken04($appId,$userId,$secret,3600,$payload); if( $token->code == ZegoErrorCodes::success ){ print_r(json_encode($token)); }
1
2 生成 Kit Token
在以下代码的 token
字段中填入生成的 Token,并填入其他业务参数并运行以下代码。
//... 您的逻辑代码
fetch(
`${youServerUrl}?userID=${userID}&expired_ts=86400`,
{
method: "GET",
}
)
.then((res) => res.json())
.then(({token})=>{
const kitToken = ZegoUIKitPrebuilt.generateKitTokenForProduction(
appID,
token,
roomID,
userID,
userName
);
const zp = ZegoUIKitPrebuilt.create(kitToken);
//... 加入房间
})