天天看點

LiveGBS 如何實作跨域鑒權

LiveGBS 實作了 GB28181 協定,能夠接入各個廠家的監控裝置和監控平台,實作統一管理,和 web 端無插件播放,同時支援手機、微信播放。
LiveGBS 如何實作跨域鑒權

LiveGBS 提供簡單的登入鑒權,用戶端通過使用者名密碼登入成功後,服務端傳回認證token的cookie, 後續的接口通路, 服務端從cookie讀取token進行校驗. 但是, 在與客戶系統內建時, 往往需要在客戶系統完成鑒權過程. 這時就涉及到跨域的問題. 那麼,這一套鑒權過程如何應用到跨域場景中呢?

服務端處理

服務端需要做以下處理:

  1. 登入成功, 服務端主動寫 token 到 cookie

    按照之前的接口設計, 登入成功, 服務端在 HTTP Response Body 中傳回 token,由用戶端自己負責将 token 寫入 cookie. 在跨域場景中, 這樣就行不通了,由于浏覽器的限制, 用戶端無法将 token 寫到非子域名 cookie. 改為服務端主動寫 token 到 cookie 就沒有這個問題了. 服務端在 HTTP Response Header 中添加

    Set-Cookie

    字段, 寫入

    token=xxx

  2. 服務端統一做充許跨域通路設定

    服務端配置充許跨域并且攜帶cookie, 需要在 HTTP Response Header 中添加以下兩項:

    Access-Control-Allow-Credentials: true
    Access-Control-Allow-Origin: $http_origin
               
    Access-Control-Allow-Origin 不可以配置成

    *

    , 而是目前HTTP請求用戶端的 Origin
  3. 登出登入時, 服務端主動将 token 從 cookie 清理
    Set-Cookie: token=; expires=Thu, 01 Jan 1970 00:00:00 GMT;
               

用戶端處理

用戶端不必顯示儲存 token 到 cookie. 所有和 LiveGBS 的互動接口需要添加跨域配置,

xhrFields: { withCredentials: true }

crossDomain: true

例如跨域登入接口調用示例如下:

$.ajax({
    type: "GET",
    url: "http://other-domain/api/v1/login",
    xhrFields: { 
        withCredentials: true
    },
    crossDomain: true, 
    data: {
        username: 'admin',
        password: '21232f297a57a5a743894a0e4a801fc3'//admin
    },
    success: function(data) {
        console.log(data);
    }
});
           

擷取更多資訊

郵件:[email protected]

技術交流QQ群:947137753

咨詢電話:15156896292

試用下載下傳: https://www.liveqing.com/docs/download/LiveGBS.html

LiveQing視訊流媒體無插件直播方案:www.liveqing.com

Copyright © LiveQing Team 2016-2019

繼續閱讀