音视频通信 RTC(Real-Time Communication)是阿里云覆盖全球的实时音视频开发平台,依托核心音视频编解码、信道传输、网络调度技术,提供高可用、高品质、超低延时的音视频通信服务,让用户快速搭建多端实时应用,适用于在线教育、视频会议、互动娱乐、音视频社交等场景。
产品链接:https://www.aliyun.com/product/rtc
阿里云 RTC 为您提供两种生成 Token 方式,您可以根据业务需求选择在控制台生成或服务端生成。
前提条件
在生成 Token 前,您需要完成以下操作:
背景信息
Token 是阿里云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。您需要在相应 SDK 的登录函数中提供 AppID、UserID、ChannelId、Nonce、TimeStamp、GSLB 和 Token 信息。其中 AppID 用于标识您的应用,UserID 用于标识您的用户,而 Token 则是基于前两者计算出的安全签名,它由 SHA256 加密算法计算得出。只要攻击者不能伪造 Token,就无法盗用您的云服务流量。
控制台
- 登录音视频通信 RTC 控制台。
- 在左侧导航栏,单击接入工具。
- 在 Token 生成器页签下,输入生成 Token 所需要的参数。
参数 | 描述 |
AppID | 应用 ID,在控制台应用管理页面创建和查看。 |
AppKey | 应用 AppKey,在控制台应用管理页面查询。 |
ChannelId | 频道 ID。1~64 位,支持大小写字母、数字、下划线(_)、中划线(-)。 |
UserId | 用户 ID。1~64 位,支持大小写字母、数字、下划线(_)、中划线(-)。 |
Nonce | 随机码。需要加上前缀 AK-,由字母 [a-zA-Z] 和数字 [0-9] 组成,不包含特殊字符,最大 64 字节。例如:AK-2b9be4b25c2d38c409c376ffd2372be1。 |
TimeStamp | 过期时间戳。可以选择 12 小时、24 小时、3 天和 7 天,代表令牌有效时间为当前时间 + 所选择小时数。 |
- 单击生成。
服务端
采用服务端计算 Token 的方案,可以最大限度地保障计算 Token 的密钥不被泄露,具体的流程如下所示。
- 您的 App 在调用 SDK 的初始化函数之前,首先要向您的服务器请求 Token。
- 您的服务器根据如下参数计算 Token。
token = sha256(appId + appKey + channelId + userId + nonce + timestamp)
- 服务器将计算好的鉴权信息返回给您的 App。
- 您的 App 将获得的鉴权信息通过特定 API 传递给 SDK。
- SDK 将鉴权信息提交给阿里云服务器进行校验。
- 阿里云校验鉴权信息,确认合法性。
- 校验通过后,即可开始提供实时音视频服务。
参数 | 说明 |
AppID | 应用 ID,通过控制台创建。 |
UserID | 您的唯一标识,AppServer 生成。同一个 UserId 的用户在其他端登录,先入会的端会被后入会的端踢出房间。 由字母 [a-zA-Z] 和数字 [0-9] 组成,不包含特殊字符,最大 64 字节。例如:2b9be4b25c2d38c409c376ffd2372be1。 |
ChannelID | 频道 ID,AppServer 生成。 由字母 [a-zA-Z] 和数字 [0-9] 组成,不包含特殊字符,可以用连接号(-)分隔,最大 64 字节。例如:181-218-3406。不支持设置 ChannelID 为 0。ChannelID 不可以重复,需要保持 ChannelID 的唯一性。 |
Nonce | 令牌随机码,由 AppServe 生成。 需要加上前缀 AK-,以标识采用应用鉴权私钥(AppKey)方案。格式推荐您用 UUID,由字母 [a-zA-Z] 和数字 [0-9] 组成,不包含特殊字符,最大 64 字节。例如:AK-2b9be4b25c2d38c409c376ffd2372be1。 |
Timestamp | 令牌过期时间戳,由您生成指定令牌过期时间。为 Unix 时间格式,AppServer 所运行的服务器需保持时间同步。例如:当前时间戳为 1560415794(2019-06-13 16:49:54)令牌 2 天后过期,Timestamp 设置为 1560588594(2019-06-15 16:49:54)。 |
Token | 加入频道 Token,可以通过 AppServer 生成。实际算法为 sha256(appId + appKey + channelId + userId + nonce + timestamp) 。 |
GSLB | 服务地址,该参数是数组类型,当前请使用:["https://rgslb.rtc.aliyuncs.com"],请您通过业务服务器下发到客户端 SDK,不建议您将该地址固化在客户端代码。 |
服务端生成 Token 的签名算法为 SHA256,您可以参见如下版本的生成 Token 函数:
- Golang 程序实例请查看
CreateToken
函数,详情请参见 Golang Demo。
- Java 程序实例请查看
createToken
函数,详情请参见 Java Demo。
- Python 程序实例请查看
create_token
函数,详情请参见 Python Demo。
- C# 程序实例请查看
CreateToken
函数,详情请参见 C# Demo。
- Nodejs 程序实例请查看
CreateToken
函数,详情请参见 Node.js Demo。
- PHP 程序实例请参查看
CreateToken
函数,详情请参见 PHP Demo。
「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。