产品百科 |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


相关文章
|
JSON 安全 数据安全/隐私保护
Refresh Token的使用场景以及如何与JWT交互
在这篇文章中,我们将探索由OAuth2定义的Refresh Token的概念。我们将会明白为什么他们会这样做,以及他们如何与其他类型的Token进行比较。我们也将通过一个简单的例子来学习如何使用它们。
17316 0
EMQ
|
9月前
|
JSON 安全 算法
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
本文将深入了解基于 Token 的认证和 OAuth 2.0,阐述它们的原理并展示它们在 MQTT 中的应用。
EMQ
250 0
深入解析 MQTT 中基于 Token 的认证和 OAuth 2.0
|
安全 API 数据安全/隐私保护
详谈微信网页授权access_token与普通access_token区别
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
详谈微信网页授权access_token与普通access_token区别
|
算法 Linux 网络安全
设备端mqtt sign(签名)原理以及实践示例
设备端mqtt sign(签名)原理以及实践示例
设备端mqtt sign(签名)原理以及实践示例
|
前端开发 API
【Sa-Token】3、Sa-Token开启路由式鉴权
登录拦截,也就是说我们需要配置哪些 API 是用户不需要登录就可以访问的,哪些 API 必须要登录之后才能访问的
400 0
|
API
【Sa-Token】4、Sa-Token开启注解式鉴权
前面我们已经介绍了路由式的鉴权方式,即就是拦截需要鉴权的 API 路径,允许哪些能够匿名访问,哪些必须要登录后才能访问,本篇文章介绍,如何使用 “注解式” 鉴权方式
256 0
|
JSON 缓存 JavaScript
.NET微信网页开发之JS-SDK使用步骤和配置信息timestamp(时间戳),nonceStr(随机串),signature(签名),access_token(接口调用凭据)的生成获取详解
.NET微信网页开发之JS-SDK使用步骤和配置信息timestamp(时间戳),nonceStr(随机串),signature(签名),access_token(接口调用凭据)的生成获取详解
293 0
.NET微信网页开发之JS-SDK使用步骤和配置信息timestamp(时间戳),nonceStr(随机串),signature(签名),access_token(接口调用凭据)的生成获取详解
|
JSON 算法 前端开发
Koa 鉴权实战 - Token
Koa 鉴权实战 - Token
|
PHP
tp5.1接入微信公众号(验证token)
tp5.1接入微信公众号(验证token)
359 0
tp5.1接入微信公众号(验证token)
|
XML NoSQL 关系型数据库
微信公众平台开发(二)——access_token、日志
微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息。
微信公众平台开发(二)——access_token、日志