本文档为您介绍了生成频道鉴权令牌的开发流程,包括查询应用AppKey、为客户端创建令牌及下发频道信息三个步骤。

开发流程简介

生成频道鉴权令牌的流程如下所示。

步骤一:查询应用AppKey

注意 AppKey是应用的唯一鉴权凭证,请您妥善保管。如果不慎泄露,为避免造成严重损失,请及时提交工单,申请更新AppKey。

具体操作请参见查询AppKey

步骤二:为客户端创建令牌

令牌(Token)是客户端的凭证,根据应用鉴权私钥(Appkey)和客户端信息生成的。加入频道时音视频通信服务会校验客户端的令牌,所以您需要为加入频道的每个客户端,生成唯一的鉴权令牌。

令牌的生成规则如下所示。

  • 生成ChannelID,说明如下:
    • 频道标识,由appserver生成,保证唯一性。推荐用UUID。
    • 由字母[a-zA-Z]和数字[0-9]组成,不包含特殊字符,可以用连接号(-)分隔,最大64字节。例如:181-218-3406。
  • 生成UserID,说明如下:
    • 终端用户唯一标识,由AppServer生成,为保证唯一性,推荐用UUID。
    • 由字母[a-zA-Z]和数字[0-9]组成,不包含特殊字符,最大64字节。例如:2b9be4b25c2d38c409c376ffd2372be1。
  • 生成Nonce,说明如下:
    • 令牌随机码,由用户生成,推荐用UUID。
    • 需要加上前缀AK-,以标识采用应用鉴权私钥(AppKey)方案。
    • 由字母[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的原始字符串的拼接顺序:
    • AppID:应用ID,使用控制台创建。
    • AppKey:应用秘钥,使用控制台查询。
    • ChannelID:频道ID,AppServer生成。
    • UserID:您的唯一标识,AppServer生成。
    • Nonce:令牌随机码,AppServer生成。
    • Timestamp:令牌过期时间戳,AppServer生成。
  • 使用SHA-256哈希加密算法生成字符串的摘要。

您可以参见以下不同版本的创建Token函数。

  • Golang程序实例请参见Demo中的CreateToken函数,详情请参见Usage

  • Java程序实例请参见Demo中的createToken函数,详情请参见Usage

  • Python程序实例请参见Demo中的create_token函数,详情请参见Usage

  • C#程序实例请参见Demo中的CreateToken函数,详情请参见Usage

  • Nodejs程序实例请参见Demo中的CreateToken函数,详情请参见Usage

  • PHP程序实例请参见Demo中的CreateToken函数,详情请参见Usage

步骤三:下发频道信息和令牌

将频道以及客户端令牌(Token)等信息,下发给客户端,作为参数传递给客户端RTC SDK。

参数 说明
AppID 应用ID,使用控制台创建。
UserID 您的唯一标识,AppServer生成。同一个UserId的用户在其他端登录,先入会的端会被后入会的端踢出房间。
ChannelID 频道ID,AppServer生成。
Nonce 频道随机码。AppServer生成。
Timestamp 频道时间戳。AppServer生成。
Token 加入频道Token,AppServer生成。
GSLB 服务地址,当前请使用:https://rgslb.rtc.aliyuncs.com,GSLB地址会不定期更新,请您通过业务服务器下发到客户端SDK,不建议您将该地址固化在客户端代码。