anyRTC提供两种鉴权机制:APP ID 和 同时使用APP ID 和Token 鉴权,若您对安全性要求不高则建议使用App ID鉴权模式,若您对安全要求较高则建议开启 APP ID 和Token 鉴权模式。
鉴权方案 | 场景 |
---|---|
使用 App ID 鉴权 | 低安全需求场景 |
同时使用 App ID 和 Token 鉴权 | 高安全需求场景 |
为提高项目的安全性,建议你将所有项目升级至使用 App ID 和 Token 鉴权。
适用范围
适用于所有线上4.0版本SDK,以及所配套的服务。
App ID 鉴权
创建项目时默认为 APP ID 鉴权机制。
App ID 和 Token 鉴权
Token 是一种动态密钥,通过 App ID、权限密钥、用户名、频道名和 Token 有效时间戳等参数生成,安全性较高。在正式生产环境等对安全要求较高的场景中,我们推荐同时使用App ID + Token 鉴权。
生成 Token
Token 需要在你的服务端生成。参考如下步骤,在 anyRTC 控制台获取 App ID、启用 权限密钥,然后调用 API 生成 Token。
1. 获取 App ID
-
在弹出的对话框内输入项目名称,项目默认 APP ID 为鉴权机制,并点击提交。
-
项目创建成功后,你会在项目列表中看到刚刚创建的项目。点击 查看并复制该项目对应的 App ID。
-
在调用 anyRTC 的 API 接口实现功能,如 SDK 初始化时,anyRTC 会需要你填入 App ID。将你获取到的 App ID 直接填入即可。
-
如果你需要升级至 Token 鉴权方案,点击编辑进入编辑项目页面即可启用 权限密钥。
创建项目的时候默认为App ID 认证。
2. 启用权限密钥
权限密钥是 anyRTC 控制台为开发项目生成的字符串。
参考如下步骤启用权限密钥:
- 如果你在创建项目后,在编辑项目页面,你可以点击启用权限密钥。
3. 生成临时 Token
-
为方便在测试阶段中鉴权,anyRTC 控制台提供接入工具来生成临时 Token。生成步骤:
1.生成临时 Token 前,请确保你已开启权限密钥功能。
2.临时 Token 适用于对安全要求一般的测试场景。对于正式生产环境,我们推荐使用正式 Token。
3.临时 Token 不适用于 anyRTC RTM SDK。进入项目管理页面,在项目列表中,点击临时token按钮。
进入 Token 页面,输入待加入的频道名,并点击生成临时 Token 即可。
-
在正式生产环境中,anyRTC 建议你在服务端调用 buildTokenWithUserAccount 生成正式 Token。详见生成 Token。
anyRTC 支持使用 C++、Java、Python、PHP 等语言在你的服务端生成正式 Token。本节 API 注释以 C++ 示例代码为例。
Token 采用业界标准化的 HMAC/SHA1 加密方案,在 Node.js、Java、Python、C++ 等绝大多数通用的服务端开发平台上均可获得所需加密库。具体加密方案可参看 Authentication code。 示例代码
c++
static std::string buildTokenWithUserAccount(
const std::string& appId,
const std::string& appCertificate,
const std::string& channelName,
const std::string& userAccount,
UserRole role,
uint32_t privilegeExpiredTs = 0);
参数 | 描述 |
---|---|
appId | 你的项目 App ID。 |
appCertificate | 你的项目 权限密钥。 |
channelName | 该字符串不可超过 64 字节。不可设为空、null 或 "null"。以下为支持的字符集范围: |
userAccount | 用户 ID,64位字符串类型。如果不填或设置为nil,SDK 会自动分配一个。 规则同 channelName 。 |
role | 用户角色。暂时只支持一种角色,请使用默认值 Role_Publisher = 1 。 |
privilegeExpiredTs | Token 有效时间戳,为自 1970 年 1 月 1 日零时起经过的秒数。比如,如果你将 privilegeExpiredTs 设为当前时间戳再加 600 秒,那么 Token 会在生成 10 分钟后过期。Token 的最大有效期为 24 小时。如果你设为 0,或超过 24 小时,则 Token 有效期依然是 24 小时。 |
我们在 GitHub 上提供了一个开源的 anyRTC Dynamic Key 仓库,并覆盖了 C++、C#、Go、Java、Node.js、Perl、PHP、Python、Ruby 等语言。你可以根据实际开发环境,选择一种语言,查看 src
文件夹中的源代码或 sample
文件夹中的示例代码。
4. 关闭或者更换权限密钥
开启权限密钥功能后,用户如果存在APP 权限密钥泄露,可以联系客服进行更改APP权限密钥。
使用 Token
你可以参考如下步骤使用 Token:
- app 客户端调用 anyRTC 的 API 接口实现功能,如加入频道时,需要填入生成的 Token、以及生成 Token 时使用的用户名、频道名等。
- anyRTC 服务端接收到填入的 Token 等信息后,会验证用户是否有权限访问频道。如果验证通过,用户可以加入频道并使用相应的 anyRTC 服务。
- Token 具有有效期。在 Token 失效后,你需要在 app 服务端重新生成 Token,并使用新的 Token 加入频道或使用相应的 anyRTC 服务。