web业务系统权限控制
來源:http://blog.chinaunix.net/u1/52224/showart_410119.html
?
在以往的系統設計中,要么缺乏權限控制,要么就是權限控制很簡單,,要么權限控制功能雖然豐富,但是 跟業務緊密結合,下面提供一種權限控制模型,將權限控制按功能劃分為彼此獨立的最小依賴的功能模塊,通過合理的部署這些模塊,完成權限控制、單獨登陸等功 能。
系統劃分為業務邏輯、權限管理、權限驗證、登陸代理、登陸服務、用戶管理、業務邏輯數據庫、業務權限數據庫和用 戶數據庫。??? 業務邏輯是業務本身。 ??? 權限管理負責權限的增、刪、查、改,角色的增、刪、查、改,用戶權限分配,角色權限分配,用戶的角色分配。權限管理通過用戶管理的用戶查詢服務來查詢用戶 憑證。 ??? 權限驗證提供用戶權限查詢服務。 ??? 登陸代理轉發登陸請求,保存登陸用戶憑據。 ??? 登陸服務接收登陸請求,驗證用戶身份,返回登陸用戶憑據。 ??? 用戶管理負責用戶的增、刪、查、改,用戶組織結構的增、刪、查、改。 ??? 業務邏輯數據庫保存業務數據。 ??? 業務權限數據庫保存權限數據、角色數據、角色權限數據、用戶權限數據、用戶角色數據。 ??? 用戶數據庫保存用戶數據、用戶組織結構數據。
什么是用戶憑證?
??? 用戶憑證就是唯一識別用戶的標識,通常是用戶ID,用戶憑證要求任何相同的用戶有相同的用戶憑證,任何不同用戶有不同的用戶憑證,用戶憑證一旦生成不能重 用。使用UUID作為用戶憑證是一種可靠的方法,數據庫的Sequence也是不錯的選擇。 ??????權限管理如何獨立于業務邏輯?
??? 以往的設計中權限管理都是與業務邏輯密切聯系的,并且經常作為一個整體來設計,權限管理之所以能獨立于業務邏輯,得益與RBAC權限管理理論,參考 http://csrc.nist.gov/rbac/ ??? 在RBAC中,權限的四個主體是用戶、角色、資源、操作,他們之間的關系為: ??? 用戶隸屬某幾個角色,資源和操作成對組成權限,權限分配給角色實現權限控制。 ??? 業務系統的所有功能可以分解為操作-資源集合,也就是權限集合,權限管理只需要管理這個集合,而不再需要理解業務邏輯本身,所以權限管理可以獨立于業務邏 輯。 ??? 權限管理既然獨立于業務邏輯,所以可以靈活部署權限管理。 ??? 通常有集中式和分布式兩種。 集中式部署將權限管理部署在一個獨立的地方,所有業務邏輯共用一個權限管理,因為權限由資源和操作組成,所以通 過的不同業務附加資源和操作前綴,可以避免業務系統間權限混淆,集中部署能集中管理,提高管理效率,但是當存在大量的業務系統時,需要很好的分類設計才能 區分各個業務系統,增加設計難度。 ??? 分布式部署將權限管理同業務邏輯一起部署,這樣每個業務系統有單獨的權限管理系統,有業務系統增加時,通過增加一個入口連接可以方便轉向權限管理,當業務 系統分布在各個地域時,這種方式比較有效,但是權限管理本身程序有更新時,要同步到各個系統需要很大的開銷。 ??? 不管何種部署方式,因為權限管理程序都相同,唯一不同的是權限數據庫,所以更改部署方式只要改變數據庫指向,開銷很小。業務邏輯如何實現權限控制?
??? 業務邏輯可以分為受保護資源和不受保護資源兩種,不受保護資源不需要權限控制,用戶訪問受保護資源時,需要先確定用戶身份,然后驗證用戶權限,流程圖如 下: ????訪問保護資源時,業務邏輯先詢問登陸代理是否當前存在登陸憑證,如果不存在,則要求登陸代理定向到登陸 服務驗證用戶,獲取用戶憑證。業務邏輯得到用戶憑證后,要求權限驗證驗證該用戶是否具有訪問權限,如果有,則允許用戶訪問該保護資源。權限管理如何實現權限控制?
??? 權限管理本身也是一種特殊的業務邏輯,所以具有與業務邏輯相似的權限控制流程。用戶管理如何實現權限控制?
??? 用戶管理本身也是一個業務系統,所以具有一般業務系統的結構,不過業務邏輯數據庫和業務權限數據庫合并成了用戶數據庫,而權限管理直接引用用戶管理的業務 邏輯。 ??? 用戶管理的權限控制流程類似一般業務系統權限控制流程。如何實現SSO(單點登陸,Single Sign On)?
??? 單點登陸在用戶切換到其他業務邏輯的時候不需要重復登陸,改善用戶體驗感。 ??? 如果將登陸服務獨立部署成一個web應用程序,登陸代理隨業務邏輯一起部署,多個業務邏輯共用一個登陸服務,即可實現單點登陸。 ??? 因為登陸服務共用,所以多個業務邏輯共享一個用戶數據庫,在一個業務系統上能登陸的用戶,在其他業務系統上依然能登陸,并且任何用戶登陸過程最后都是在同 一個登陸服務器上驗證用戶信息,所以可以把已經登陸的用戶狀態通過COOKIE等方式保存起來,下次其他業務系統請求登陸時,可以首先檢查COOKIE, 如果已經登陸則不在要求用戶輸入驗證信息。 ??? 用戶先訪問業務邏輯1,通過登陸代理1登陸,登陸代理1轉發到登陸服務,登陸服務發現COOKIE沒有登陸信息,則提示用戶輸入驗證信息,核對成功后返回 用戶憑據到登陸代理1并且附帶COOKIE標志用戶已經登陸。 ??? 然后用戶訪問業務邏輯2,通過登陸代理2登陸,登陸代理2轉發到登陸服務,登陸服務發現COOKIE有登陸信息,表明用戶已經登陸,直接返回用戶憑證到登 陸代理2。 ??? 使用SSO方式以后,用戶管理同登陸服務一樣單獨部署,這樣另一個好處是管理方便。如何實現企業聯合認證?
??? 企業聯合是指用戶在企業合作伙伴的業務系統間切換時,不用重新登陸,并且各個合作伙伴保存自己的用戶,這些用戶能在其他合作伙伴的業務系統上登陸。 ??? 首先企業合作伙伴要能區別各自企業的用戶憑證,使用UUID或數據庫Sequence表示用戶憑證可能會導致不同企業的用戶憑證沖突,所以應該把企業標識 作為用戶憑證的一部分。 ??? 其次企業合作伙伴間要相互信賴對方的用戶憑證,需要使用企業證書對用戶憑證進行數字簽名。 ??? 最后是用戶登陸驗證的轉發,因為企業標識作為用戶憑證的一部分,所以如果用戶是首次登陸,登陸服務可以通過企業標識轉發登陸請求到對應的合作伙伴的登陸服 務器,如果用戶已經登陸,通過COOKIE等方式獲取經過簽名的用戶憑證后,使用企業標識的企業證書驗證該用戶憑證,驗證通過即可信賴該用戶的登陸狀態而 不用再轉發到合作伙伴的登錄服務器。| /*** |
總結
以上是生活随笔為你收集整理的web业务系统权限控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【HTML+CSS】日历备忘录(静态)
- 下一篇: 权限系统设计