RTC为您提供两种生成Token的方式。通过阅读本文,您可以了解控制台和服务端生成Token的方法。

前提条件

  • 您已经开通RTC服务。具体操作,请参见开通服务
  • 您已经创建好应用。具体操作,请参见创建应用
  • 您已经获取AppKey。具体操作,请参见查询AppKey

背景信息

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

注意事项

通过控制台生成的Token为临时Token,一般用于测试使用。如果需要正式使用,请使用服务端生成Token。

控制台生成Token

  1. 登录音视频通信RTC控制台
  2. 在左侧导航栏选择接入工具,进入接入工具界面。
  3. 可选:生成Token。
    1. 单击Token生成器页签,输入生成Token所需要的参数。
      参数 描述
      AppID 应用ID,在控制台应用管理页面中创建和查看。具体操作,请参见应用管理
      AppKey 应用AppKey,在控制台应用管理页面查询。具体操作,请参见查询AppKey
      ChannelId 频道ID。由1~64位大小写字母、数字、下划线(_)、中划线(-)组成。
      UserId 用户ID。由1~64位大小写字母、数字、下划线(_)、中划线(-)组成。
      Nonce 随机码。以前缀AK-开头,由大小写字母、数字组成,最大64字节。例如:AK-2b9be4b25c2d38c409c376ffd2372be1。
      TimeStamp 过期时间戳。可以选择12小时、24小时、3天和7天,代表令牌有效时间。
    2. 单击生成,查看生成的Token。
      生成Token
  4. 可选:校验Token。
    1. 单击Token校验器页签,输入校验Token所需要的参数。
      参数 描述
      AppID 应用ID,在控制台应用管理页面中创建和查看。具体操作,请参见应用管理
      AppKey 应用AppKey,在控制台应用管理页面查询。具体操作,请参见查询AppKey
      ChannelId 频道ID。由1~64位大小写字母、数字、下划线(_)、中划线(-)组成。
      UserId 用户ID。由1~64位大小写字母、数字、下划线(_)、中划线(-)组成。
      Nonce 随机码,由AppServer下发。以前缀AK-开头,由大小写字母、数字组成,最大64字节。例如:AK-2b9be4b25c2d38c409c376ffd2372be1。
      TimeStamp 过期时间戳,例如:1560588594代表过期时间为2019-06-15 16:49:54。
      Token 加入频道的Token,由AppServer生成。
    2. 单击校验
      • 校验成功,您可以正常加入频道进行通话。
      • 校验失败,请重新检查各项参数和服务端下发的Token信息。

服务端生成Token

相对于控制台生成Token,服务端生成Token可以最大限度地保障计算Token的密钥不被泄露,具体的流程如下所示:

  1. 您的App在调用SDK的初始化函数之前,首先要向您的服务器请求Token
  2. 您的服务器根据如下参数计算Token
    token = sha256(appId + appKey + channelId + userId + nonce + timestamp)
  3. 服务器将计算好的鉴权信息返回给您的App。
  4. 您的App将获得的鉴权信息通过您的业务API传递给SDK。
  5. SDK将鉴权信息提交给阿里云服务器进行校验。
  6. 阿里云校验鉴权信息,确认合法性。
  7. 校验通过后,即可开始提供实时音视频服务。
服务端获取流程图
参数 说明
AppID 应用ID,通过控制台创建。
UserID 您的唯一标识,由AppServer生成。同一个UserId的用户在其他端登录,先入会的端会被后入会的端踢出房间。 由大小写字母、数字组成,最大64字节。例如:2b9be4b25c2d38c409c376ffd2372be1。
ChannelID 频道ID,AppServer生成。不支持设置ChannelID为0,并且ChannelID不可以重复,需要保持ChannelID的唯一。由大小写字母、数字、短划线(-)组成,最大64字节。例如:181-218-3406。
Nonce 令牌随机码,由AppServer生成。以前缀AK-开头,由大小写字母、数字组成,最大64字节。例如:AK-2b9be4b25c2d38c409c376ffd2372be1。
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