1. 程式人生 > >基於EasyNVR攝像機無外掛直播流媒體伺服器實現類似於單點登入功能的免登入直播功能

基於EasyNVR攝像機無外掛直播流媒體伺服器實現類似於單點登入功能的免登入直播功能

提出問題

EasyNVR是一套攝像機無外掛直播的流媒體伺服器軟體,他可以接入各種各樣的攝像機,再經過轉化統一輸出無外掛化直播的RTMP、HLS、HTTP-FLV流,同時,EasyNVR為了資料安全,提供了鑑權功能,可以配置成只有登入後才能直播觀看:
EasyNVR鑑權

但這個時候問題又來了,很多企業使用者的需求是簡單觀看需要,資料安全也需要,簡易開發更需要,這個時候就需要一套類似於單點登入這種簡易登入鑑權模式,讓基本的安全和功能都得到保障,於是,我們有EasyNVR的企業使用者就提出了建議:

1、流媒體訪問規範
Html方式,支援Chrome,IE等主流瀏覽器。
2、提供單通道觀看
提供單通道無控制元件WEB視訊訪問頁面,傳遞引數為攝像頭ID

http://IP:33360/video/view.html?cameraid=xxx&token=xxx
3、提供全市所有視訊的訪問列表頁面
http://IP:33360/video/index.html?token=xxx
4、提供對省級管理平臺後臺單點登入
在省級平臺訪問時,不需要再次登入。通過token值判斷登入情況,token為EasyNVR"使用者名稱+密碼"進行加密完成,當token匹配直接通過系統許可權驗證。

分析問題

我們大概捋了一下上述的需求,基本主旨是基於EasyNVR輸出的能力介面進行二次開發,遮蔽點選登入這一步,那麼如何做到這一步呢,實際可以採用隱式登入的方式,舉例:

  • 第一步:比如EasyNVR的登入使用者名稱密碼分別是admin/admin,那麼我們將“admin:admin”進行base64 encode編碼成為:“YWRtaW46YWRtaW4”,那麼這個編碼後的字串即為這次我們需要用到的token;
  • 第二步:自定義view.html頁面(或者直接改造EasyNVR的play.html頁面),當用戶訪問http://IP:33360/video/view.html?cameraid=xxx&token=YWRtaW46YWRtaW4 時,我們將QueryString中的token首先進行base64 decode解碼成“使用者名稱:密碼”的組合"admin:admin";
  • 第三步:在自定義view.html頁面中開始呼叫EasyNVR能力介面,一旦EasyNVR返回401未鑑權的錯誤碼時,立即使用第二步base64解碼出來的使用者名稱:密碼呼叫login介面進行登入,成功後,再繼續根據cameraid進行直播、錄影回放、雲臺控制等其他能力的呼叫;
  • 第四步:同理,在列表頁面“http://IP:33360/video/index.html?token=xxx” 也採用同樣的流程方式;

按照以上的幾個步驟,實際就是在EasyNVR的外面,再包了一層殼,讓後續的開發者能用更加更簡單的方式就可以參考和集成了;

上述步驟我們採用對使用者名稱密碼以base64編碼的方式進行傳輸,可能安全性較低,使用者很簡單就可以獲取到密碼原文,我們也可以將“使用者名稱:密碼”的原始組合,換成“使用者名稱:md5(密碼)”的方式,這樣密碼原文就不會被抓取到了,view.html頁面在做鑑權的時候,就省去密碼md5這一步,直接呼叫login介面即可;

問題擴充套件

第三方登入:按照上述的token傳值方式,實際EasyNVR還可以做類似於微博登入、QQ登入這種authToken第三方登入的功能,當然這個就複雜了,後續EasyNVR也會推出的;

單點登入:當同一個企業需要管轄的EasyNVR裝置比較多的時候,如果每一個EasyNVR現場的密碼都要單獨再記錄一次,就會顯得比較麻煩,如果有一個superadmin超級管理員,超級管理員登入後,就不需要再一一登入各個EasyNVR了,這種方式後面會在我們的EasyNVS管理平臺帶上,遮蔽各種下級的密碼,直接超級許可權單點登入,即可呼叫全域性能力;

關於EasyNVR

EasyNVR能夠通過簡單的網路攝像機通道配置,將傳統監控行業裡面的高清網路攝像機IP Camera、NVR等具有RTSP協議輸出的裝置接入到EasyNVR,EasyNVR能夠將這些視訊源的音視訊資料進行拉取,轉換為RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),並且EasyNVR能夠將視訊源的直播資料對接到第三方CDN網路,實現網際網路級別的直播分發;

詳細說明:http://www.easynvr.com

點選連結加入群【EasyNVR解決方案】:383501345

Copyright © EasyDarwin Team 2012-2018
EasyNVR公眾號