天天看點

産品百科 |Ali RTC 生成 Token 的兩種方式

音視訊通信 RTC(Real-Time Communication)是阿裡雲覆寫全球的實時音視訊開發平台,依托核心音視訊編解碼、信道傳輸、網絡排程技術,提供高可用、高品質、超低延時的音視訊通信服務,讓使用者快速搭建多端實時應用,适用于線上教育、視訊會議、互動娛樂、音視訊社交等場景。

産品連結:

https://www.aliyun.com/product/rtc 阿裡雲 RTC 為您提供兩種生成 Token 方式,您可以根據業務需求選擇在控制台生成或服務端生成。

前提條件

在生成 Token 前,您需要完成以下操作:

背景資訊

Token 是阿裡雲設計的一種安全保護簽名,目的是為了阻止惡意攻擊者盜用您的雲服務使用權。您需要在相應 SDK 的登入函數中提供 AppID、UserID、ChannelId、Nonce、TimeStamp、GSLB 和 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. 單擊生成。
    産品百科 |Ali RTC 生成 Token 的兩種方式

服務端

采用服務端計算 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. 校驗通過後,即可開始提供實時音視訊服務。
産品百科 |Ali RTC 生成 Token 的兩種方式
說明
應用 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 的唯一性。

令牌随機碼,由 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
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。
産品百科 |Ali RTC 生成 Token 的兩種方式