RTC为您提供两种生成Token的方式。通过阅读本文,您可以了解控制台和服务端生成Token的方法。
背景信息
Token是阿里云设计的一种安全保护签名,目的是为了阻止恶意攻击者盗用您的云服务使用权。您需要在相应SDK的登录函数中提供AppID、UserID、ChannelId、Nonce、TimeStamp、GSLB和Token信息。其中AppID用于标识您的应用,UserID用于标识您的用户,而Token则是基于两者通过SHA256加密算法计算得出。因此,攻击者很难通过伪造Token盗用您的云服务流量。
注意事项
通过控制台生成的Token为临时Token,一般用于测试使用。如果需要正式使用,请使用服务端生成Token。
控制台生成Token
- 登录音视频通信RTC控制台。
- 在左侧导航栏选择接入工具,进入接入工具界面。
- 可选:生成Token。
- 可选:校验Token。
服务端生成Token
相对于控制台生成Token,服务端生成Token可以最大限度地保障计算Token的密钥不被泄露,具体的流程如下所示:
- 您的App在调用SDK的初始化函数之前,首先要向您的服务器请求Token。
- 您的服务器根据如下参数计算Token。
token = sha256(appId + appKey + channelId + userId + nonce + timestamp)
- 服务器将计算好的鉴权信息返回给您的App。
- 您的App将获得的鉴权信息通过您的业务API传递给SDK。
- SDK将鉴权信息提交给阿里云服务器进行校验。
- 阿里云校验鉴权信息,确认合法性。
- 校验通过后,即可开始提供实时音视频服务。
参数 | 说明 |
---|---|
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。