1. 程式人生 > >web權限管理總結

web權限管理總結

範圍 刪除 本地 登陸驗證 session存儲 安全性 使用 div 規範

(一)HTTP基本認證 對象:客戶端與服務器 流程:
  1. 客戶端請求頭中Authorization域包含用戶名與密碼信息,供服務端認證
缺點: 1. 每次通信都傳輸用戶名密碼,不安全 (二)傳統session-cookie模式 對象:瀏覽器與服務器,單一應用 流程: 1. 用戶登陸時服務器將用戶信息存儲在session中 2. 服務器將sessionID發給客戶端 3. 客戶端將sessionID存儲在cookie中 4. 每次通信客戶端都需要將cookie一並發送 5. 服務器獲取客戶端發送的cookie來查詢session,實現用戶信息的獲取 缺點:
session存儲在服務器中,但在分布式系統中其他服務無法獲取,只能通過復制session來共享,大量的復制操作會占用大量網絡資源 (三) 分布式session模式 對象:客戶端與多個服務 流程: 1.用戶登陸成功將信息存儲在session中 2.session存儲在redis或mysql中 3.客戶端訪問微服務時,服務器從存儲中心提權用戶信息 (四)基於token(JWT) 對象:可用於手機應用與服務器,瀏覽器與服務器,服務與服務 流程: 1. 用戶登陸驗證通過時服務器生成token,並進行簽名,發送給客戶端 2. 客戶端存儲token,每次通信傳輸token 3. 服務器拿到token進行簽名驗證,通過則返回資源 JWT:一種token的寫法規範,好處是很好的適應鑒權與授權且安全性較高 與session比較: 1.session存儲在服務器上,token存儲在客戶端上 2. token能進行授權操作 3. session只能用於B/S模式 (五)oauth2模式 oatuh2協議用於第三方授權,最終也是通過token進行權限認證 對象:第三方服務 流程: 1. 客戶端向用戶申請第三方服務權限 2. 得到用戶允許後客戶單向認證服務器申請token 3. 認證服務器確認後發放token 4. 客戶端使用token獲取第三方服務的資源 5. 第三方服務確認token無誤後發放資源 (六) 個人思考

1.為什麽要進行統一授權與鑒權?

答:1.按照傳統的模式每個服務都會有自己的一套用戶權限認證體系,將其提取出來易於管理與維護,而每個服務就能專註與自己要做的事情不必在權限管理花費精力   2.不只是用戶與服務之間需要權限認證,服務與服務之間也需要進行權限校驗,還有第三方客戶的接入需要做的權限認證,因此有一個統一的權限管理中心就能更好的管理與實現

2.傳統的認證方式的弊端

答:1. 首先HTTP頭每次都需要傳輸用戶名與密碼是很不安全   2. 單體應用中sessioin只能存儲在它的服務器上,當使用其他服務器時就丟失了session,因此需要盡心session的復制粘貼   3. 分布式session存儲,每次進行權限認證都需要提取session會導致多次網絡io,解決方法是本地服務進行session緩存,但這就要做好session同步更新,同時需要做好session共享空間的安全問題 3.單點登陸sso與oauth2區別 答:1.單點登陸是用於一個系統進行登陸後,用戶在系統的其他子系統中就變成了登陸狀態而無須重復登陸   2.oauth2用於第三方登陸,而且往往這種登陸得到的權限都會被限制在一個小範圍   3.oauth2登陸後也是在原來的第三方服務中活動,而sso登陸後是在整個系統活動,例如oauth2微信登陸虎牙直播後用戶主要在虎牙進行活動,可以刷禮物,可以發彈幕,但是不會去微信刪除好友

web權限管理總結