本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種視頻播放的權(quán)限校驗方法及裝置。
背景技術(shù):
隨著計算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,觀看視頻直播的用戶越來越多,網(wǎng)絡(luò)視頻直播得到了廣泛的普及。視頻直播是利用互聯(lián)網(wǎng)及流媒體技術(shù)進(jìn)行直播,直播網(wǎng)站通過從視頻內(nèi)容的提供服務(wù)器獲取視頻流地址,以根據(jù)視頻流地址獲取視頻內(nèi)容,實現(xiàn)視頻內(nèi)容的網(wǎng)絡(luò)直播。
實際應(yīng)用中,視頻流地址存在被第三方平臺獲取的風(fēng)險,進(jìn)而導(dǎo)致第三方平臺可以不通過直播網(wǎng)站直接觀看視頻內(nèi)容,即繞過了直播網(wǎng)站的視頻播放器提供的視頻播放。這種行為不僅直接侵犯了視頻直播提供方的權(quán)益,減少了視頻網(wǎng)站的用戶流量,而且還會給直播用戶帶來個人信息泄露的風(fēng)險,從而給個人財產(chǎn)帶來安全隱患。目前的大多數(shù)視頻網(wǎng)站都會對視頻流地址進(jìn)行加密保護(hù),以確保視頻播放過程的安全性。常用方式是通過對視頻流地址進(jìn)行一次校驗,校驗通過后則可以完整的獲取整個視頻流,使得第三方平臺不能輕易的獲取視頻流地址。但是,考慮到性能和用戶體驗,由于客戶端在請求時不能產(chǎn)生太大時延,所以加密算法不能夠太復(fù)雜,為此,大多數(shù)的視頻網(wǎng)站采取的是比較簡單的且常用的校驗方法,進(jìn)而導(dǎo)致加密算法比較容易被黑客或第三方平臺破解,從而盜取了視頻流地址,使得視頻播放過程依然存在安全風(fēng)險。
技術(shù)實現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的視頻播放的權(quán)限校驗方法及裝置,能夠有效地實現(xiàn)對視頻流地址的鑒權(quán)驗證,提高視頻直播過程的安全性,提升用戶體驗。
本發(fā)明的一個方面,提供了一種視頻播放的權(quán)限校驗方法,包括:
向客戶端發(fā)送預(yù)先配置的lua腳本文件,以供所述客戶端通過執(zhí)行所述lua腳本文件對客戶端的校驗信息進(jìn)行加密,以生成視頻流地址的客戶端請求校驗碼;
接收客戶端發(fā)送的視頻流地址請求消息,所述視頻流地址請求消息中攜帶有所述客戶端請求校驗碼以及所述校驗信息;
采用與所述lua腳本文件對應(yīng)的加密算法對所述校驗信息進(jìn)行加密,生成服務(wù)器校驗碼;
若所述服務(wù)器校驗碼與所述客戶端請求校驗碼一致,則確定權(quán)限校驗成功,向所述客戶端返回所請求的視頻流地址。
可選地,所述校驗信息包括客戶端隨機(jī)字符串和客戶端信息;
所述客戶端隨機(jī)字符串為所述客戶端生成的隨機(jī)字符串;
所述客戶端信息包括用戶信息和直播服務(wù)器返回的token值,所述用戶信息包括客戶端的設(shè)備標(biāo)識、客戶端的ip地址、直播間id和/或所述客戶端生成所述校驗信息的時間。
可選地,在所述向客戶端發(fā)送預(yù)先配置的lua腳本文件之前,所述方法還包括:
根據(jù)預(yù)設(shè)的多種加密算法分別生成相應(yīng)的多個lua腳本文件。
可選地,所述向客戶端發(fā)送預(yù)先配置的lua腳本文件,包括:
根據(jù)預(yù)設(shè)的文件選取規(guī)則從所述多個lua腳本文件中選取一個lua腳本文件,并將所述選取的lua腳本文件發(fā)送到所述客戶端。
可選地,所述方法還包括:
定時更新生成的所述多個lua腳本文件和/或所述文件選取規(guī)則。
可選地,所述向客戶端發(fā)送預(yù)先配置的lua腳本文件,包括:
對所述lua腳本文件進(jìn)行加密,向所述客戶端發(fā)送加密后的lua腳本文件,以供所述客戶端根據(jù)約定秘鑰進(jìn)行解密后執(zhí)行所述lua腳本文件。
本發(fā)明的另一個方面,提供了一種視頻播放的權(quán)限校驗裝置,包括:
發(fā)送模塊,用于向客戶端發(fā)送預(yù)先配置的lua腳本文件,以供所述客戶端通過執(zhí)行所述lua腳本文件對客戶端的校驗信息進(jìn)行加密,以生成視頻流地址的客戶端請求校驗碼;
接收模塊,用于接收客戶端發(fā)送的視頻流地址請求消息,所述視頻流地址請求消息中攜帶有所述客戶端請求校驗碼以及所述校驗信息;
第一生成模塊,用于采用與所述lua腳本文件對應(yīng)的加密算法對所述校驗信息進(jìn)行加密,生成服務(wù)器校驗碼;
校驗?zāi)K,用于當(dāng)所述服務(wù)器校驗碼與所述客戶端請求校驗碼一致時,確定權(quán)限校驗成功,并向所述客戶端返回所請求的視頻流地址。
可選地,所述裝置還包括:
第二生成模塊,用于在所述向客戶端發(fā)送預(yù)先配置的lua腳本文件之前,根據(jù)預(yù)設(shè)的多種加密算法分別生成相應(yīng)的多個lua腳本文件;
所述發(fā)送模塊,具體用于根據(jù)預(yù)設(shè)的文件選取規(guī)則從所述多個lua腳本文件中選取一個lua腳本文件,并將所述選取的lua腳本文件發(fā)送到所述客戶端。
可選地,所述裝置還包括:
更新模塊,用于定時更新所述第二生成模塊生成的所述多個lua腳本文件和/或所述文件選取規(guī)則。
可選地,所述發(fā)送模塊,具體用于對所述lua腳本文件進(jìn)行加密,向所述客戶端發(fā)送加密后的lua腳本文件,以供所述客戶端根據(jù)約定秘鑰進(jìn)行解密后執(zhí)行所述lua腳本文件。
本發(fā)明實施例提供的視頻播放的權(quán)限校驗方法及裝置,通過使用lua腳本文件實現(xiàn)對視頻流地址的鑒權(quán),由于lua是一種腳本語言,不需要編譯可以直接執(zhí)行,進(jìn)而可以通過頻繁的對lua腳本文件的更新,以實現(xiàn)對視頻流地址鑒權(quán)方式的更新,增加鑒權(quán)過程中加密算法的破解難度,從而能夠有效地實現(xiàn)對視頻流地址的鑒權(quán)驗證,提高視頻直播過程的安全性,提升用戶體驗。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1為本發(fā)明實施例的一種視頻播放的權(quán)限校驗方法的流程圖;
圖2為本發(fā)明實施例的一種視頻播放的權(quán)限校驗裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非被特定定義,否則不會用理想化或過于正式的含義來解釋。
為解決現(xiàn)有技術(shù)中在用戶剛開始請求視頻流地址時對視頻流地址的加密算法過于復(fù)雜,影響用戶體驗,或,加密算法過于簡單,不能夠有效地實現(xiàn)對視頻流地址的鑒權(quán)驗證的問題。本發(fā)明實施例通過使用lua腳本文件來實現(xiàn)對視頻流地址的鑒權(quán),當(dāng)客戶端登陸直播平臺服務(wù)器后,服務(wù)器將流地址的鑒權(quán)算法的lua腳本文件發(fā)送給客戶端,客戶端通過執(zhí)行l(wèi)ua腳本文件來生成視頻流地址的客戶端請求校驗碼key,通過將該key發(fā)送到服務(wù)器進(jìn)行權(quán)限校驗,來請求視頻流地址。本發(fā)明實施例通過使用lua腳本實現(xiàn)對視頻流地址的鑒權(quán)驗證,可以通過頻繁的對lua腳本文件的更新,實現(xiàn)對視頻流地址鑒權(quán)方式的更新,增加鑒權(quán)過程中加密算法的破解難度。
圖1示意性示出了本發(fā)明一個實施例的視頻播放的權(quán)限校驗方法的流程圖。參照圖1,本發(fā)明實施例的視頻播放的權(quán)限校驗方法具體包括以下步驟:
步驟s11、向客戶端發(fā)送預(yù)先配置的lua腳本文件,以供所述客戶端通過執(zhí)行所述lua腳本文件對客戶端的校驗信息進(jìn)行加密,以生成視頻流地址的客戶端請求校驗碼。
其中,lua是一個輕量級的腳本語言,lua只包括一個精簡的核心和最基本的庫。這使得lua體積小、啟動速度快,從而適合嵌入在客戶端播放器的程序中。而且,lua可配置性、可擴(kuò)展性,雖然其并不象其它許多"大而全"的語言那樣,包括很多功能,比如網(wǎng)絡(luò)通訊、圖形界面等。但是lua可以很容易地被擴(kuò)展:由宿主語言(通常是c或c++)提供這些功能,lua可以使用它們,就像是本來就內(nèi)置的功能一樣。此外,lua由標(biāo)準(zhǔn)c編寫而成,幾乎在所有操作系統(tǒng)和平臺上都可以編譯,運(yùn)行,具體良好的兼容性。
在實際應(yīng)用中,當(dāng)用戶打開一個直播間進(jìn)行視頻直播觀看時,首先客戶端會去向服務(wù)器發(fā)送視頻流地址請求消息,以獲取直播房間的視頻流地址。為了保護(hù)視頻流地址的安全有效,在請求的時候需要客戶端在請求消息中攜帶上客戶端的校驗信息。本實施例中的所述校驗信息包括客戶端隨機(jī)字符串和客戶端信息。其中,客戶端隨機(jī)字符串為所述客戶端生成的隨機(jī)字符串;客戶端信息包括用戶信息和直播服務(wù)器返回的token值,所述用戶信息包括客戶端的設(shè)備標(biāo)識、客戶端的ip地址、直播間id和/或所述客戶端生成所述校驗信息的時間。
步驟s12、接收客戶端發(fā)送的視頻流地址請求消息,所述視頻流地址請求消息中攜帶有所述客戶端請求校驗碼以及所述校驗信息;
步驟s13、采用與所述lua腳本文件對應(yīng)的加密算法對所述校驗信息進(jìn)行加密,生成服務(wù)器校驗碼;
步驟s14、若所述服務(wù)器校驗碼與所述客戶端請求校驗碼一致,則確定權(quán)限校驗成功,向所述客戶端返回所請求的視頻流地址,以供所述客戶端基于所述視頻流地址進(jìn)行視頻播放。
其中,視頻流地址的有效性為首次有效,即一次有效地址,該地址只能使用一次,下次再使用同樣的視頻流地址獲取視頻流,則被視為無效,進(jìn)而有效地避免黑客或惡意第三方獲取該地址后,任意的拉取視頻流。進(jìn)一步地,本發(fā)明實施例中的視頻流地址算法使用了用戶登錄時的tocken作為客戶端請求校驗碼key計算的一部分,同樣使得用戶必須登錄后才能拉取視頻流地址,使得盜取流地址的黑客或惡意第三方必須實現(xiàn)網(wǎng)站的登錄功能,從而增加了其實現(xiàn)門檻。同時為了進(jìn)一步的保護(hù)視頻流地址,本發(fā)明實施例中,還使用了客戶端的一些個人用戶信息作為技術(shù)key值的一部分,其中包括客戶端的ip地址、設(shè)備唯一id、服務(wù)器穿給客戶端的隨機(jī)key值,以及所述客戶端生成所述校驗信息的時間等,進(jìn)而可以極大的保護(hù)視頻流地址的安全性。
本發(fā)明實施例提供的視頻播放的權(quán)限校驗方法,通過使用lua腳本文件實現(xiàn)對視頻流地址的鑒權(quán),由于lua是一種腳本語言,不需要編譯可以直接執(zhí)行,進(jìn)而可以通過頻繁的對lua腳本文件的更新,實現(xiàn)對視頻流地址鑒權(quán)方式的更新,增加鑒權(quán)過程中加密算法的破解難度,從而能夠有效地實現(xiàn)對視頻流地址的鑒權(quán)驗證,提高視頻直播過程的安全性,提升用戶體驗。
在一個具體實施例中,服務(wù)器向客戶端發(fā)送預(yù)先配置的lua腳本文件之后,客戶端首先隨機(jī)的生成一個32位的客戶端隨機(jī)字符串randkey,并獲取本地的客戶端信息。具體的,獲取的信息包括,客戶端登錄直播網(wǎng)站時獲取到的直播服務(wù)器返回的token值,客戶端請求的視頻流的直播間id(roomid),客戶端的設(shè)備id,客戶端的ip地址,客戶端生成所述校驗信息的時間time。獲取到這些信息后,將這些信息拼接成一個字符串。然后使用lua腳本文件中的加密算法,如tea算法,來對拼接后的字符串進(jìn)行加密。
其中,使用tea算法來對拼接后的字符串進(jìn)行加密,其中tea加密算法會使用一個key值,本實施例中使用客戶端隨機(jī)字符串randkey作為算法的key值。具體實現(xiàn)如下:
video_key=tea.encrypt(randkey,token+roomid+id+ip+time);
其中video_key則是客戶端計算出來的客戶端請求校驗碼。
然后,客戶端向服務(wù)器請求視頻流地址,同時會將客戶端隨機(jī)字符串以及客戶端信息(客戶端登錄獲取的token、房間號roomid、設(shè)備id、電腦ip、所述客戶端生成所述校驗信息的時間time)和計算的video_key發(fā)送到服務(wù)器,服務(wù)器也會使用同樣的lua腳本來根據(jù)客戶端發(fā)送的校驗信息計算視頻流地址的服務(wù)器校驗碼key,從而校驗客戶端上報的客戶端請求校驗碼是否正確,如果正確,則確定權(quán)限校驗成功,并向所述客戶端返回所請求的視頻流地址,以供所述客戶端基于所述視頻流地址進(jìn)行視頻播放,否則,確定權(quán)限校驗失敗。
進(jìn)一步地,為了進(jìn)一步加強(qiáng)鑒權(quán)過程中加密算法的破解難度,還可以在將客戶端隨機(jī)字符串以及客戶端信息(客戶端登錄獲取的token、房間號roomid、設(shè)備id、電腦ip、所述客戶端生成所述校驗信息的時間time)和計算的video_key發(fā)送到服務(wù)器時,再使用另一套對稱的加密算法來進(jìn)行加密傳輸。
需要說明的是,客戶端隨機(jī)字符串randkey可以由客戶端生成,也可以由客戶端和服務(wù)器共同生成。
其中,客戶端隨機(jī)字符串randkey由客戶端和服務(wù)器共同生成的實現(xiàn)流程如下:服務(wù)器生成服務(wù)器隨機(jī)數(shù),將服務(wù)器隨機(jī)數(shù)作為觸發(fā)信號發(fā)送到客戶端,以供客戶端根據(jù)所述觸發(fā)信號生成客戶端隨機(jī)數(shù),客戶端返回客戶端隨機(jī)數(shù)到服務(wù)器,客戶端根據(jù)服務(wù)器隨機(jī)數(shù)和客戶端隨機(jī)數(shù)生成客戶端隨機(jī)字符串。同時,服務(wù)器接收客戶端返回的客戶端隨機(jī)數(shù),根據(jù)服務(wù)器隨機(jī)數(shù)和客戶端隨機(jī)數(shù)采用與客戶端相同算法生成服務(wù)端隨機(jī)字符串。此時,客戶端隨機(jī)字符串和服務(wù)端隨機(jī)字符串相同,因此,在后續(xù)處理過程中,無需客戶端將客戶端隨機(jī)字符串隨同視頻流地址請求消息一起發(fā)送到服務(wù)器,服務(wù)器也可以實現(xiàn)權(quán)限校驗。
本發(fā)明實施例中,在所述向客戶端發(fā)送預(yù)先配置的lua腳本文件之前,所述方法還包括:根據(jù)預(yù)設(shè)的多種加密算法分別生成相應(yīng)的多個lua腳本文件。相應(yīng)的,所述向客戶端發(fā)送預(yù)先配置的lua腳本文件,具體包括:
根據(jù)預(yù)設(shè)的文件選取規(guī)則從所述多個lua腳本文件中選取一個lua腳本文件,并將所述選取的lua腳本文件發(fā)送到所述客戶端。在具體實現(xiàn)在,可以從多個lua腳本文件中隨機(jī)選取一個lua腳本文件,并將所述選取的lua腳本文件發(fā)送到所述客戶端。
進(jìn)一步地,所述方法還包括:定時更新生成的所述多個lua腳本文件和/或所述文件選取規(guī)則。
在一個可選實施例中,使用lua腳本來編寫一個視頻流地址的key的加密算法,其中使用的加密算法和算法中使用的key值可以經(jīng)常的進(jìn)行更換,進(jìn)而可以通過更新加密算法和/或算法中使用的key值,實現(xiàn)更新lua腳本文件的目的。
在實際應(yīng)用中,服務(wù)器可以事先編寫好多種變換的視頻流地址的加密算法,并且可以隔一段時間后進(jìn)行更新,根據(jù)得到的多種加密算法分別生成相應(yīng)的多個lua腳本文件。當(dāng)客戶端登錄直播網(wǎng)站時,將lua腳本下發(fā)到客戶端,供客戶端生成待請求視頻流地址的客戶端請求校驗碼。同時服務(wù)器也會使用同樣的lua腳本來計視頻流地址的服務(wù)器校驗碼key,從而校驗客戶端上報的是否正確。由于lua是一種腳本語言,所以不需要進(jìn)行重新編譯,發(fā)到客戶端則可以直接運(yùn)行,從而比較好的可以做到動態(tài)更新。
在本發(fā)明的一個可選實施例中,所述向客戶端發(fā)送預(yù)先配置的lua腳本文件,包括:對所述lua腳本文件進(jìn)行加密,向所述客戶端發(fā)送加密后的lua腳本文件,以供所述客戶端根據(jù)約定秘鑰進(jìn)行解密后執(zhí)行所述lua腳本文件。
本實施例中,服務(wù)器預(yù)先與客戶端約定好解密lua腳本文件的秘鑰,當(dāng)服務(wù)器向客戶端發(fā)送lua腳本文件時,預(yù)先對下發(fā)給客戶端的lua腳本使用加密算法進(jìn)行加密,然后在發(fā)送到客戶端,進(jìn)一步加強(qiáng)鑒權(quán)過程中加密算法的破解難度,從而也可以從代碼層次進(jìn)行保護(hù)。
本發(fā)明實施例中,客戶端播放器中設(shè)置有用于執(zhí)行所述lua腳本文件的調(diào)用接口。具體步驟實現(xiàn)步驟如下:
通過動作腳本actionscript在客戶端播放器中創(chuàng)建用于加載所述lua腳本文件的loader類;
通過動作腳本actionscript在所述loader類中創(chuàng)建用于獲取所述lua腳本文件的地址請求接口;
在loader類中添加事件注冊接口,通過所述事件注冊接口注冊第一回調(diào)函數(shù),當(dāng)所述lua腳本文件加載完成后,通過調(diào)用所述回調(diào)函數(shù)執(zhí)行所述lua腳本文件,所述第一回調(diào)函數(shù)的關(guān)聯(lián)事件為lua腳本文件加載完成事件。
在實際應(yīng)用中,直播網(wǎng)站的客戶端觀看視頻基本都是采用flash作為播放器。下面以flash作為客戶端播放器對本發(fā)明技術(shù)方案進(jìn)行解釋說明。若采用flash作為播放器,則其視頻流地址的鑒權(quán)邏輯也在flash中。本發(fā)明實施例通過在flash中來調(diào)用lua腳本文件來實現(xiàn)對視頻播放的權(quán)限校驗。具體實現(xiàn)如下:
1、首先定義一個actionscript的loader實例。
在actionscript中提供了一個loader類用來加載swf文件,或者是圖片jpg,gif動畫,或者是lua文件等。
具體實現(xiàn)如下:
varswfloader:loader=newloader();
并且設(shè)置swfloader.dataformat=urlloaderdataformat.text;
為text格式的文件。
2、注冊swf加載完成的回調(diào)函數(shù)。
在actionscript中添加一個loader實例的接口,用來注冊事件,當(dāng)loader加載完成一個swf文件后,會回調(diào)這個注冊的回調(diào)函數(shù),以告訴他swf文件已經(jīng)加載完成。
在loader中提供了一個addeventlistener接口用來注冊事件。
接口具體原型如下:
其中,第一個參數(shù)type:string用來表示注冊的事件類型,對應(yīng)于本文則是event.complete,表示注冊swf加載完成事件;第二個參數(shù)listener:function用來表示注冊的完成事件完成后的回調(diào)函數(shù),用于觸發(fā)回調(diào)函數(shù)執(zhí)行;第三個參數(shù)priority:int用于標(biāo)示事件的優(yōu)先級,使用默認(rèn)值0;第四個參數(shù)useweakreference:boolean指定回調(diào)函數(shù)是弱應(yīng)用還是強(qiáng)引用,使用默認(rèn)值false。
3、創(chuàng)建請求swf的接口urlrequest。
actionscript在所述loader類中創(chuàng)建用于獲取所述lua腳本文件的地址請求接口,具體接口如下:
urlrequest(url:string=null)
其中,參數(shù)url:string標(biāo)示傳入的url地址或者本地路徑。對于本文則是lua文件的url地址。
4、調(diào)用loader實例的接口來loader請求的swf文件。
通過調(diào)用loader的接口來加載swf文件。具體接口如下:
load(request:urlrequest,context:loadercontext=null)
其中參數(shù)request:urlrequest就是加載的請求對象,就是步驟3創(chuàng)建的urlrequest對象。
其中參數(shù)context:loadercontext用來設(shè)置域信息,本文使用默認(rèn)值空null。
5、編寫回調(diào)函數(shù)swfloadcompletehandler。
編寫回調(diào)函數(shù)swfloadcompletehandle,此函數(shù)即是上面調(diào)用的注冊完成事件填入的回調(diào)函數(shù)。
當(dāng)文件加載完成后,會調(diào)用該回調(diào)函數(shù),通過回調(diào)函數(shù)調(diào)用lua腳本文件。具體如下:
首先定義一個varlua:luaalchemy=newluaalchemy();在flash中調(diào)用lua的組件。
然后設(shè)置lua的執(zhí)行上下文為當(dāng)前類的上下文。
lua.setglobal("this",this);
若對服務(wù)器對lua腳本文件進(jìn)行了加密,還所以在下載完成后可以使用對應(yīng)的解密算法解密lua腳本文件,
decode(swfloader.data);
最后調(diào)用組件的接口執(zhí)行所述lua腳本文件,lua.dostring(swfloader.data);實現(xiàn)從服務(wù)器下載lua文件來執(zhí)行對視頻流地址的鑒權(quán)。
對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明實施例,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施例所必須的。
圖2示意性示出了本發(fā)明一個實施例的視頻播放的權(quán)限校驗裝置的結(jié)構(gòu)示意圖。參照圖2,本發(fā)明實施例的視頻播放的權(quán)限校驗裝置具體包括發(fā)送模塊201、接收模塊202、第一生成模塊203以及校驗?zāi)K204,其中:
所述的發(fā)送模塊201,用于向客戶端發(fā)送預(yù)先配置的lua腳本文件,以供所述客戶端通過執(zhí)行所述lua腳本文件對客戶端的校驗信息進(jìn)行加密,以生成視頻流地址的客戶端請求校驗碼。本實施例中,所述校驗信息包括客戶端隨機(jī)字符串和客戶端信息。其中,客戶端隨機(jī)字符串為所述客戶端生成的隨機(jī)字符串;客戶端信息包括用戶信息和直播服務(wù)器返回的token值,所述用戶信息包括客戶端的設(shè)備標(biāo)識、客戶端的ip地址、直播間id和/或所述客戶端生成所述校驗信息的時間。
所述的接收模塊202,用于接收客戶端發(fā)送的視頻流地址請求消息,所述視頻流地址請求消息中攜帶有所述客戶端請求校驗碼以及所述校驗信息;
所述的第一生成模塊203,用于采用與所述lua腳本文件對應(yīng)的加密算法對所述校驗信息進(jìn)行加密,生成服務(wù)器校驗碼;
所述的校驗?zāi)K204,用于當(dāng)所述服務(wù)器校驗碼與所述客戶端請求校驗碼一致時,確定權(quán)限校驗成功,并向所述客戶端返回所請求的視頻流地址。
在本發(fā)明的一個可選實施例中,所述裝置還包括附圖中未示出的第二生成模塊,所述的第二生成模塊,用于在所述向客戶端發(fā)送預(yù)先配置的lua腳本文件之前,根據(jù)預(yù)設(shè)的多種加密算法分別生成相應(yīng)的多個lua腳本文件。
相應(yīng)的,所述發(fā)送模塊201,具體用于根據(jù)預(yù)設(shè)的文件選取規(guī)則從所述多個lua腳本文件中選取一個lua腳本文件,并將所述選取的lua腳本文件發(fā)送到所述客戶端。在具體實現(xiàn)在,所述發(fā)送模塊201,具體可以從多個lua腳本文件中隨機(jī)選取一個lua腳本文件,并將所述選取的lua腳本文件發(fā)送到所述客戶端。
本實施例中,所述裝置還包括:
更新模塊,用于定時更新所述第二生成模塊生成的所述多個lua腳本文件和/或所述文件選取規(guī)則。
在本發(fā)明的一個可選實施例中,所述發(fā)送模塊201,具體用于對所述lua腳本文件進(jìn)行加密,向所述客戶端發(fā)送加密后的lua腳本文件,以供所述客戶端根據(jù)約定秘鑰進(jìn)行解密后執(zhí)行所述lua腳本文件。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。
此外,本發(fā)明另一實施例還提供了一種電子設(shè)備,所述電子設(shè)備包括:殼體、處理器、存儲器、電路板和電源電路,其中,所述電路板安置在所述殼體圍成的空間內(nèi)部,所述處理器和所述存儲器設(shè)置在所述電路板上;所述電源電路,用于為所述電子設(shè)備的各個電路或器件供電;所述存儲器用于存儲可執(zhí)行程序代碼;所述處理器通過讀取所述存儲器中存儲的可執(zhí)行程序代碼來運(yùn)行與可執(zhí)行程序代碼對應(yīng)的程序,以用于執(zhí)行以下步驟:向客戶端發(fā)送預(yù)先配置的lua腳本文件,以供所述客戶端通過執(zhí)行所述lua腳本文件對客戶端的校驗信息進(jìn)行加密,以生成視頻流地址的客戶端請求校驗碼;接收客戶端發(fā)送的視頻流地址請求消息,所述視頻流地址請求消息中攜帶有所述客戶端請求校驗碼以及所述校驗信息;采用與所述lua腳本文件對應(yīng)的加密算法對所述校驗信息進(jìn)行加密,生成服務(wù)器校驗碼;若所述服務(wù)器校驗碼與所述客戶端請求校驗碼一致,則確定權(quán)限校驗成功,向所述客戶端返回所請求的視頻流地址,以供所述客戶端基于所述視頻流地址進(jìn)行視頻播放。
本發(fā)明實施例提供的視頻播放的權(quán)限校驗方法及裝置,通過使用lua腳本文件實現(xiàn)對視頻流地址的鑒權(quán),由于lua是一種腳本語言,不需要編譯可以直接執(zhí)行,進(jìn)而可以通過頻繁的對lua腳本文件的更新,實現(xiàn)對視頻流地址鑒權(quán)方式的更新,增加鑒權(quán)過程中加密算法的破解難度,從而能夠有效地實現(xiàn)對視頻流地址的鑒權(quán)驗證,提高視頻直播過程的安全性,提升用戶體驗。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品可以存儲在計算機(jī)可讀存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。
最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。