产品百科 |Ali RTC 生成 Token 的两种方式-阿里云开发者社区

开发者社区> 阿里云视频云> 正文
登录阅读全文

产品百科 |Ali RTC 生成 Token 的两种方式

简介: 阿里云 RTC 为您提供两种生成 Token 方式,您可以根据业务需求选择在控制台生成或服务端生成。

音视频通信 RTC(Real-Time Communication)是阿里云覆盖全球的实时音视频开发平台,依托核心音视频编解码、信道传输、网络调度技术,提供高可用、高品质、超低延时的音视频通信服务,让用户快速搭建多端实时应用,适用于在线教育、视频会议、互动娱乐、音视频社交等场景。


产品链接:https://www.aliyun.com/product/rtc


阿里云 RTC 为您提供两种生成 Token 方式,您可以根据业务需求选择在控制台生成或服务端生成。

前提条件

在生成 Token 前,您需要完成以下操作:

背景信息

Token 是阿里云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。您需要在相应 SDK 的登录函数中提供 AppIDUserIDChannelIdNonceTimeStampGSLB Token 信息。其中 AppID 用于标识您的应用,UserID 用于标识您的用户,而 Token 则是基于前两者计算出的安全签名,它由 SHA256 加密算法计算得出。只要攻击者不能伪造 Token,就无法盗用您的云服务流量。

控制台

  1. 登录音视频通信 RTC 控制台
  2. 在左侧导航栏,单击接入工具
  3.  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 天,代表令牌有效时间为当前时间 + 所选择小时数。
  1. 单击生成image.png

服务端

采用服务端计算 Token 的方案,可以最大限度地保障计算 Token 的密钥不被泄露,具体的流程如下所示。

  1. 您的 App 在调用 SDK 的初始化函数之前,首先要向您的服务器请求 Token
  2. 您的服务器根据如下参数计算 Token
token = sha256(appId + appKey + channelId + userId + nonce + timestamp)
  1. 服务器将计算好的鉴权信息返回给您的 App。
  2. 您的 App 将获得的鉴权信息通过特定 API 传递给 SDK。
  3. SDK 将鉴权信息提交给阿里云服务器进行校验。
  4. 阿里云校验鉴权信息,确认合法性。
  5. 校验通过后,即可开始提供实时音视频服务。

image.png

参数说明
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


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

image.png


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

分享视频云行业和技术趋势,打造“新内容”、“新交互”。

官方博客
官网链接