本文介绍如何校验用户权限。

Agora SDK 提供两种校验机制:App ID 和动态密钥。在调用 joinChannel 加入频道时,你需要选择一种机制进行鉴权。这两种鉴权机制的关系如下:

  • App ID:易于获取,适用于对安全要求不高的场景
  • 动态密钥:安全性高,适用于对安全要求较高的生产环境

适用范围

Agora 动态密钥分为 Channel Key 和 Token 两种。本文的动态密钥指的是 Token。

不同版本的 SDK 支持的动态密钥不同。因此,在选用校验方式前,请确认当前 SDK 的版本信息。

Agora SDK 支持 Token 的版本 支持 Channel Key 的版本 查看版本信息
Native SDK v2.1.0 及以上 v2.1.0 之前 getSdkVersion
Web SDK v2.4.0 及以上 v2.4.0 之前 AgoraRtc.VERSION
Gaming SDK v2.2.0 及以上 v2.2.0 之前 getSdkVersion

前提条件

请确保你在 Agora Dashboard 完成注册,并创建了项目。

App ID

每个 Agora 的项目都有一个 App ID,它是项目的唯一标识。

获取 App ID

  1. 点击 Dashboard 左侧的项目管理页,查看你所创建的项目详情。
  2. 在项目详情页,你可以查看你的 App ID

使用 App ID

在调用 Agora SDK 的 API 接口实现功能,如创建对象时,SDK 会需要你填入 App ID。将你获取到的 App ID 直接填入即可。

Token

Token 是相比 App ID 更为复杂,也更为安全的校验方式。你需要使用 App ID 和 App 证书来生成一个 Token。

启用 App 证书

如果你是首次创建的项目,参考如下步骤启用 App 证书:

  1. 项目管理页,找到刚创建的项目,点击编辑按钮,然后点击 App 证书后面的启用按钮。
  2. 根据屏幕提示,在注册邮箱中确认启用 App 证书。
  3. 回到项目管理页,会看到 App 证书显示已启用。

获取临时 Token

为方便体验,Agora 支持在 Dashboard 的项目详情页,生成一个试用的临时 Token。使用如下一种方式获取临时 Token:

  • 在项目详情处,点击生成临时 Token,输入任一频道名,你就会在 Token 页面获取一个临时 Token。
  • 在创建项目时,直接勾选 APP ID + APP 证书+ Token(推荐)。Dashboard 会自动开启 App 证书。点击生成临时 Token 获取即可。

临时 Token 适用于对安全要求一般的测试场景。对于正式生产环境,我们推荐使用正式 Token。

获取正式 Token

正式的 Token 需要在你的服务端部署并生成。具体的流程如下:

1. 部署 Token Generator

在使用 Token 之前,你需要先在你的服务端部署一个 Token Generator 用来生成 Token。

Agora 提供支持 C++、Go、Java、Node.js、Python 和 PHP 语言生成 Token 的示例代码供参考。

你可以直接使用相应的示例代码,也可以使用其他语言实现生成 Token 的功能。 Agora 欢迎开发者将自己实现的动态密钥生成方式在 GitHub 上提交 Pull request 贡献出来。

2. 生成正式 Token

服务端生成正式 Token 的流程如下:

  1. App 客户端向服务端发送获取 Token 的请求
  2. 服务端收到请求后 Token Generator 生成一个 Token,然后将生成的 Token 发送给 App 客户端

具体生成方法和参数设置,请参考在服务端生成 Token

使用 Token

在调用 Agora SDK 的 API 接口实现功能,如加入频道时,SDK 会需要你填入 Token 和频道名。填入你所获取到的 Token,和生成 Token 时用的频道名,就可以进入频道,实现音视频通话。

  • 请确保你在加入频道时填入的频道名与用户名和用于生成 Token 时填入的频道名、用户名一致。
  • 出于安全考虑,请在 Token 生成后 24 小时内加入频道。超过 24 小时需要重新生成 Token。
  • Token 在一段时间后会失效。当客户端收到回调提醒 Token 即将失效,或当获知 Token 已失效时,需在服务端重新生成 Token,然后调用 renewToken 方法进行更新。
  • Token 采用业界标准化的 HMAC/SHA1 加密方案,在 Node.js, Java, Python, C++ 等绝大多数通用的服务器端开发平台上均可获得所需库。具体加密方案可参看 Authentication code

参考

下表列出与 Token 相关的 SDK API 接口:

平台 加入频道 更新 Token
Android 加入频道 (joinChannel) 更新 Token (renewToken)
iOS/macOS 加入频道 (joinChannelByToken) 更新 Token (renewToken)
Windows 加入频道 (joinChannel) 更新 Token (renewtoken)
Web 加入频道 (join) 更新 Token (renewToken)