開源權限引擎:Anycmd
權限系統干了什么?
給出一套方法,將系統中的所有功能標識出來,組織起來,托管起來,將所有的數據組織起來標識出來托管起來, 然后提供一個簡單的唯一的接口,這個接口的一端是應用系統一端是權限引擎。權限引擎所回答的只是:誰是否對某資源具有實施 某個動作(運動、計算)的權限。返回的結果只有:有、沒有、權限引擎異常了。
文檔 http://anycmd.github.io/anycmd/
背景
介紹
訪問控制元素
訪問控制字段
EntityType和ResourceType和Ontology三者的區別與聯系
數據交換協議指南
模擬事務——為SQL和NO SQL統一事務工作
- 1,視頻介紹《anycmd筑基》 http://www.tudou.com/programs/view/4jXoarZKwCk/
演示站 http://www.anycmd.com:20150/
贊助
Anycmd簡介
Anycmd是一個.net平臺的完全開源的,完整支持Rbac的(包括核心Rbac、通用角色層次Rbac、靜態職責分離Rbac和動態責任分離Rbac),將會支持xacml的通用的權限框架、中間件、解決方案。完整的Rbac規范所定義的能力只是anycmd所提供的能力集的一個子集。 如果您感興趣的話現在可以先觀察Anycmd的源碼,期待您為Anycmd提供幫助確保她走在正確的道路上。
框架、中間件、解決方案是它的三種使用模式:
框架模式: 引用一兩個必要的dll或者相應的源碼,它跟您的應用系統運行在一起,您有能力完全控制anycmd,您需要自己提供UI層,但anycmd自帶的UI層也是可用的。通過面向anycmd遍布各處的擴展點編程使用者有機會有能力實現自己個性化的需求;
中間件模式: 引用一兩個必要的dll和一些資源文件,它可以跟您的應用系統運行在一起,它提供UI層但您也可以刪除并自主提供,它按照最佳實踐提供默認配置,您可以通過調整配置比如自定義插件來滿足或接近滿足您的需求。可以把anycmd中間件看作是一個獨立的系統,只不過它可以和你的應用系統運行在同一個進程、同一個或不同的AppDomain。
解決方案模式: 提供一整套AC最佳實踐、方法論,使用者有走向最佳實踐的意愿。
如何使用
anycmd不僅提供了來自Rbac國際規范文檔的IRbacService接口,還提供了一整套穩定的、功能完備的、風格一致的、流暢的api。框架使用起來非常簡單,限定在AC領域內,基本會做到在權限方面的每一個需求都剛好有一個流暢的風格一致的api。編程的時候只需要通過一套風格一致的流暢的api告訴框架我們希望做什么,然后框架就去做了。但是如果能夠明白訪問控制系統做事情的邏輯的話會更容易使用那些api。 事實上anycmd很容易地就完整實現了對IRbacService的支持,因為對IRbacService的實現不需要書寫專門的邏輯,因為anycmd的api是比Rbac所定義的能力集更大的,只需直接委托給anycmd的api就完整實現了IRbacService。
運行
找到Web.config的BootDbConnString應用設置項,將這個連接字符串的密碼修改成您的密碼。Web.config中只有這一個引導庫連接字符串, 其余數據庫的連接字符串在Anycmd引導庫的RDatabase表中,請使用SqlServer管理工具找到Anycmd數據庫的RDatabase表修改其密碼項。
測試賬戶
成功運行后轉到“用戶”模塊,所有現有賬戶密碼都是“111111”六個1。
路線圖
- 1,書寫單元測試;
- 2,書寫教程;
- 3,替換掉UI層,去除試用版的miniui框架;考慮使用extjs
- 4,內置數據交換系統,用以各業務系統與中心系統間的權限數據交換;
- 5,支持Javascript;
- 6,支持LDAP(輕量目錄訪問協議)。
- 7,優化;發布1.0版本;
- 8,支持SAML;
- 9,基于slickflow(原名wf5)支持工作流http://slickflow.codeplex.com/
- 10,支持Xacml;
感謝
學習資源
- javacript引擎:https://github.com/sebastienros/jint/
- actor框架:https://github.com/akkadotnet/akka.net/
- nosql文檔數據庫:https://github.com/mbdavid/LiteDB/
授權協議
The MIT license。