RTC为您提供两种生成Token的方式。通过阅读本文,您可以了解控制台和服务端生成Token的方法。
前提条件
您已经开通RTC服务。具体操作,请参见开通服务。
您已经创建好应用。具体操作,请参见创建应用。
您已经获取AppKey。具体操作,请参见查询指定应用AppKey。
背景信息
Token是阿里云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。您需要在相应SDK的登录函数中提供AppID、UserID、ChannelId和Token信息。其中AppID用于标识您的应用,UserID用于标识您的用户,而Token则是基于算法计算得出。因此,攻击者很难通过伪造Token盗用您的云服务流量。
注意事项
通过控制台生成的Token为临时Token,一般用于测试使用。如果需要正式使用,请使用服务端生成Token。
控制台生成Token
登录音视频通信RTC控制台。
在左侧导航栏选择接入工具,进入接入工具界面。
服务端生成Token
相对于控制台生成Token,服务端生成Token可以最大限度地保障计算Token的密钥不被泄露,具体的流程如下所示:
您的App在调用SDK的初始化函数之前,首先要向您的服务器请求Token。
您的服务器根据阿里云提供的AppToken工具计算Token。
您的服务器将计算好的鉴权信息返回给您的App。
您的App将获得的鉴权信息通过您的业务API传递给SDK。
SDK将鉴权信息提交给阿里云服务器进行校验。
阿里云校验鉴权信息,确认合法性。
校验通过后,即可开始提供实时音视频服务。
参数 | 说明 |
AppID | 应用ID,通过控制台创建。 |
UserID | 您的唯一标识,由AppServer生成。同一个UserId的用户在其他端登录,先入会的端会被后入会的端踢出房间。 由大小写字母、数字组成,最大64字节。例如:2b9be4b25c2d38c409c376ffd2372be1。 |
ChannelID | 频道ID,AppServer生成。不支持设置ChannelID为0,并且ChannelID不可以重复,需要保持ChannelID的唯一。由大小写字母、数字、短划线(-)组成,最大64字节。例如:181-218-3406。 |
Token | 加入频道的Token,由AppServer生成。
用户级别权限控制,请参考Token privilege。 频道级别参数控制,请参考Token options。 |
Token privilege
privilege 主要用于控制用户级别权限,主要支持以下权限控制:发送音频、发送视频、发送屏幕共享。
privilege的使用流程一般如下:
申请token时,针对不同的用户,给不同的privilege参数
SDK在生成token时增加权限属性
SDK使用token与RTC交互,RTC校验token权限
如果权限不足,则拒绝相关操作
在Token中有一个参数privilege
用于传入权限信息。
privilege参数的值是16bits的数字,每个bit代表一种权限:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| privilege |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
bit0 为低位,bit0 值为1 时,表示启用权限控制,否则不控制权限,所有功能都放开
bit1 表示是否可以发送音频
bit2 表示是否可以发送视频
bit3 表示是否可以发送屏幕共享
用法举例:
privilege=0,不启用权限控制,允许所有能力
privilege=3,二进制:0000 0000 0000 0011,表示可以发送音频,无其它权限
privilege=5,二进制:0000 0000 0000 0101,表示可以发送视频,无其它权限
privilege=7,二进制:0000 0000 0000 0111,表示可以发送音频和视频,无其它权限
具体用法示例,请见底部不同语言示例代码。
Token options
options定义了频道级别相关配置,用户可以自定义,具体用法可以参考文档底部不同语言示例代码。数值范围会受RTC服务校验,如有特殊需求请提交工单提高上限。
duration_per_channel
字段含义:频道最大时长,单位为秒。
取值区间:[300,86400]。
默认值:86400 。
其它补充:
token的过期时间不能超过当前时间加上频道时长之和。否则入会失败,请评估业务实际需要,按需设置。
由于系统实现机制,可能和配置值有最大10s的偏差。
delay_close_per_channel
字段含义:频道中没有人时,频道保留最大时长,单位为秒。
取值区间:[1,86400]。
默认值:60。
其它补充:
由于系统实现机制,可能和配置值有最大10s的偏差。
示例代码
服务端生成Token的方法,您可以参见如下示例: GitHub、Gitee。
Java程序实例请查看
AppToken
类。Go程序实例请查看
CreateAppToken
函数。C#程序实例请查看
Program
函数。Python3程序实例请查看
app_token
函数。Python2程序实例请查看
app_token
函数。PHP程序实例请查看
index
函数。Node.js程序实例请查看
index
函数。