RTC為您提供兩種生成Token的方式。通過閱讀本文,您可以了解控制臺和服務(wù)端生成Token的方法。

前提條件

背景信息

Token是阿里云設(shè)計的一種安全保護簽名,目的是為了阻止惡意攻擊者盜用您的云服務(wù)使用權(quán)。您需要在相應(yīng)SDK的登錄函數(shù)中提供AppIDUserIDChannelIdNonceTimeStampGSLBToken信息。其中AppID用于標(biāo)識您的應(yīng)用,UserID用于標(biāo)識您的用戶,而Token則是基于兩者通過SHA256加密算法計算得出。因此,攻擊者很難通過偽造Token盜用您的云服務(wù)流量。

注意事項

通過控制臺生成的Token為臨時Token,一般用于測試使用。如果需要正式使用,請使用服務(wù)端生成Token。

控制臺生成Token

  1. 登錄音視頻通信RTC控制臺
  2. 在左側(cè)導(dǎo)航欄選擇接入工具,進入接入工具界面。
  3. 可選:生成Token。
    1. 單擊Token生成器頁簽,輸入生成Token所需要的參數(shù)。
      參數(shù) 描述
      AppID 應(yīng)用ID,在控制臺應(yīng)用管理頁面中創(chuàng)建和查看。具體操作,請參見應(yīng)用管理
      AppKey 應(yīng)用AppKey,在控制臺應(yīng)用管理頁面查詢。具體操作,請參見查詢AppKey
      ChannelId 頻道ID。由1~64位大小寫字母、數(shù)字、下劃線(_)、中劃線(-)組成。
      UserId 用戶ID。由1~64位大小寫字母、數(shù)字、下劃線(_)、中劃線(-)組成。
      Nonce 隨機碼。以前綴AK-開頭,由大小寫字母、數(shù)字組成,最大64字節(jié)。例如:AK-2b9be4b25c2d38c409c376ffd2372be1。
      TimeStamp 過期時間戳。可以選擇12小時、24小時、3天和7天,代表令牌有效時間。
    2. 單擊生成,查看生成的Token。
      生成Token
  4. 可選:校驗Token。
    1. 單擊Token校驗器頁簽,輸入校驗Token所需要的參數(shù)。
      參數(shù) 描述
      AppID 應(yīng)用ID,在控制臺應(yīng)用管理頁面中創(chuàng)建和查看。具體操作,請參見應(yīng)用管理
      AppKey 應(yīng)用AppKey,在控制臺應(yīng)用管理頁面查詢。具體操作,請參見查詢AppKey
      ChannelId 頻道ID。由1~64位大小寫字母、數(shù)字、下劃線(_)、中劃線(-)組成。
      UserId 用戶ID。由1~64位大小寫字母、數(shù)字、下劃線(_)、中劃線(-)組成。
      Nonce 隨機碼,由AppServer下發(fā)。以前綴AK-開頭,由大小寫字母、數(shù)字組成,最大64字節(jié)。例如:AK-2b9be4b25c2d38c409c376ffd2372be1。
      TimeStamp 過期時間戳,例如:1560588594代表過期時間為2019-06-15 16:49:54。
      Token 加入頻道的Token,由AppServer生成。
    2. 單擊校驗
      • 校驗成功,您可以正常加入頻道進行通話。
      • 校驗失敗,請重新檢查各項參數(shù)和服務(wù)端下發(fā)的Token信息。

服務(wù)端生成Token

相對于控制臺生成Token,服務(wù)端生成Token可以最大限度地保障計算Token的密鑰不被泄露,具體的流程如下所示:

  1. 您的App在調(diào)用SDK的初始化函數(shù)之前,首先要向您的服務(wù)器請求Token
  2. 您的服務(wù)器根據(jù)如下參數(shù)計算Token
    token = sha256(appId + appKey + channelId + userId + nonce + timestamp)
  3. 服務(wù)器將計算好的鑒權(quán)信息返回給您的App。
  4. 您的App將獲得的鑒權(quán)信息通過您的業(yè)務(wù)API傳遞給SDK。
  5. SDK將鑒權(quán)信息提交給阿里云服務(wù)器進行校驗。
  6. 阿里云校驗鑒權(quán)信息,確認合法性。
  7. 校驗通過后,即可開始提供實時音視頻服務(wù)。
服務(wù)端獲取流程圖
參數(shù) 說明
AppID 應(yīng)用ID,通過控制臺創(chuàng)建。
UserID 您的唯一標(biāo)識,由AppServer生成。同一個UserId的用戶在其他端登錄,先入會的端會被后入會的端踢出房間。 由大小寫字母、數(shù)字組成,最大64字節(jié)。例如:2b9be4b25c2d38c409c376ffd2372be1。
ChannelID 頻道ID,AppServer生成。不支持設(shè)置ChannelID為0,并且ChannelID不可以重復(fù),需要保持ChannelID的唯一。由大小寫字母、數(shù)字、短劃線(-)組成,最大64字節(jié)。例如:181-218-3406。
Nonce 令牌隨機碼,由AppServer生成。以前綴AK-開頭,由大小寫字母、數(shù)字組成,最大64字節(jié)。例如:AK-2b9be4b25c2d38c409c376ffd2372be1。
Timestamp 令牌過期時間戳,例如:1560588594代表過期時間為2019-06-15 16:49:54。
Token 加入頻道的Token,由AppServer生成。實際算法為sha256(appId + appKey + channelId + userId + nonce + timestamp)
GSLB 服務(wù)地址,該參數(shù)是數(shù)組類型,當(dāng)前請使用:["https://rgslb.rtc.aliyuncs.com"],請您通過業(yè)務(wù)服務(wù)器下發(fā)到客戶端SDK,不建議您將該地址固化在客戶端代碼。

服務(wù)端生成Token的簽名算法為SHA256,您可以參見如下版本的生成Token函數(shù):

  • Golang程序?qū)嵗埐榭?code class="ph codeph" id="codeph-gpk-xqq-4rj">CreateToken函數(shù),更多信息,請參見Golang Demo
  • Java程序?qū)嵗埐榭?code class="ph codeph" id="codeph-ufi-6ch-ozj">createToken函數(shù),更多信息,請參見Java Demo
  • Python程序?qū)嵗埐榭?code class="ph codeph" id="codeph-w4r-zgj-h1e">create_token函數(shù),更多信息,請參見Python Demo
  • C#程序?qū)嵗埐榭?code class="ph codeph" id="codeph-g15-vqe-bvc">CreateToken函數(shù),更多信息,請參見C# Demo
  • Nodejs程序?qū)嵗埐榭?code class="ph codeph" id="codeph-y69-lrt-4kk">CreateToken函數(shù),更多信息,請參見Node.js Demo
  • PHP程序?qū)嵗垍⒉榭?code class="ph codeph" id="codeph-7pw-160-241">CreateToken函數(shù),更多信息,請參見PHP Demo