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