RTC為您提供兩種生成Token的方式。通過閱讀本文,您可以了解控制臺和服務(wù)端生成Token的方法。
前提條件
- 您已經(jīng)開通RTC服務(wù)。具體操作,請參見開通服務(wù)。
- 您已經(jīng)創(chuàng)建好應(yīng)用。具體操作,請參見創(chuàng)建應(yīng)用。
- 您已經(jīng)獲取AppKey。具體操作,請參見查詢AppKey
背景信息
Token是阿里云設(shè)計的一種安全保護簽名,目的是為了阻止惡意攻擊者盜用您的云服務(wù)使用權(quán)。您需要在相應(yīng)SDK的登錄函數(shù)中提供AppID、UserID、ChannelId、Nonce、TimeStamp、GSLB和Token信息。其中AppID用于標(biāo)識您的應(yīng)用,UserID用于標(biāo)識您的用戶,而Token則是基于兩者通過SHA256加密算法計算得出。因此,攻擊者很難通過偽造Token盜用您的云服務(wù)流量。
注意事項
通過控制臺生成的Token為臨時Token,一般用于測試使用。如果需要正式使用,請使用服務(wù)端生成Token。
控制臺生成Token
- 登錄音視頻通信RTC控制臺。
- 在左側(cè)導(dǎo)航欄選擇接入工具,進入接入工具界面。
- 可選:生成Token。
- 可選:校驗Token。
服務(wù)端生成Token
相對于控制臺生成Token,服務(wù)端生成Token可以最大限度地保障計算Token的密鑰不被泄露,具體的流程如下所示:
- 您的App在調(diào)用SDK的初始化函數(shù)之前,首先要向您的服務(wù)器請求Token。
- 您的服務(wù)器根據(jù)如下參數(shù)計算Token。
token = sha256(appId + appKey + channelId + userId + nonce + timestamp)
- 服務(wù)器將計算好的鑒權(quán)信息返回給您的App。
- 您的App將獲得的鑒權(quán)信息通過您的業(yè)務(wù)API傳遞給SDK。
- SDK將鑒權(quán)信息提交給阿里云服務(wù)器進行校驗。
- 阿里云校驗鑒權(quán)信息,確認合法性。
- 校驗通過后,即可開始提供實時音視頻服務(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。