Create your Gitee Account
Explore and code with more than 6 million developers,Free private repositories !:)
Sign up
Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

Anycmd

#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接口 http://git.oschina.net/xiaodingding/anycmd/blob/master/src/Anycmd/IRBACService.cs 还提供了一整套稳定的、功能完备的、风格一致的、流畅的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,优化;发布1.0版本;
  • 6,放入开放工厂http://www.iopenworks.com/
  • 7,支持SAML;
  • 8,基于wf5支持工作流http://wf5.codeplex.com/
  • 9,组建开源社区;
  • 10,支持Xacml;

##大方向

  • 时机成熟后anycmd采用社区开发模式,接受社区提交的代码,不必担心anycmd会有天没人维护。

  • anycmd是开明的,永远不做筑高门槛的事情,永远尽力降低门槛。只要你比原作者小5岁或5岁以上,所有开源协议在anycmd这里作废,你不应满足anycmd提供的既有事实,你可以随时另立炉灶。

##有意思的妄人语录

  • ####控制权限就是控制运动 所有的运动都应该是可以控制的。比如var age = 30;这么一条赋值语句,这个语句中有个动词“=”,它的意思是赋值,赋值是动词。赋值导致了系统状态的变更,可以导致系统的状态变更的就是Command,是Command就要有办法控制(head、get、read、query等操作是否是有副作用的,是否会导致你的系统状态的变更在于你的业务边界是什么。资源每被get一次访问计数加了1,如果在你的业务边界下访问次数加1有意义的话状态就变更了,没意义就不用变更不用加1)。 所有的命令都应该是可控的,怎么控制?只需要用个using语句一包裹就可以控制了: using(var acCotnext = new ACContext(subject, resource,action)){ var age = 30; }

  • ####什么是模型(Model) 我们可以在概念层次认为Model就是在大的领域边界中的,可以用基于离散的思想来限定出的,承载“数据”和“运动”的小边界。 模型 = 数据 + 运动

  • ####区分主客体 问题是客体,我们是主体。我们使用自己的能动性加入自己的意愿将数据组织起来,形成一个个单元,模拟出一个个有机的问题模型。问题不是静止不动的,宇宙是运动的,我们的模型也是运动的。模型在收到外来的信号后将发生运动。

  • ####面向过程 => 面向对象 => 面向物理 物理化到一定程度 骇客帝国就出现了。

  • ####时空观 设想一个状态:这个状态没有“物质”没有“空间”没有“能量”……总之什么也没有。让我用null来代表这个状态。 显然null不会突然间改变。因为一个空的世界怎么会‘突然’生出东西来呢?null若改变就得无缘无故地生出东西。null要保持 null的状态,null要连续,这里的“状态保持”需要时间,或者说状态保持就是时间,再或者说连续性就是时间。绝对的不变的状态不存在,时间是衡量状态改变快慢的物理量。状态不能突然改变的连续的性质使null具有了时间概念。

  • ####anycmd认为运动或者叫变化就是时空。 运动就是时空。我们的时空是运动,网络虚拟时空也是运动。 两个时空的运动一旦被完全打通则摆在我们面前的要么是天堂要么是地狱。牢牢的把控住权限就是天堂,丧失权限就是地狱。 网络虚拟空间正在物理化,物理化到一定程度骇客帝国就出现了。

  • ####anycmd为时空战争而生 anycmd为人机战争而生,目的是确保邪恶的事情不能在类似骇客帝国那样的时空中发生。anycmd始终站在人类一边。 anycmd试图为未来的骇客帝国世界定义一套规则,使用这套规则来确保骇客帝国是被我们完全控制的。anycmd试图给出控制骇客帝国中的任何虚拟主体在任何虚拟空间、虚拟时间对任何虚拟客体发引发何运动的权限,引发运动的输入、运动的结果,运动次数都是受控的。我们要确保邪恶的事情不能在骇客帝国世界中发生。 人类与机器的战争早已开始。战争中双方反复争夺的一个制高点将是“权限”。网络空间和人类生活的空间早晚被物理化打通,一旦打通则网络空间的主体将会有机会控制我们的空间。我们绝不能让此事发生!这是anycmd肩负的伟大使命。anycmd必须确保“权限”被牢牢的把握在人类手中。

##授权协议

声明:本程序使用GPL协议,使用者和开发者必须遵守:

1、确保软件自始至终都以开放源代码形式发布,保护开发成果不被窃取用作商业发售。任何一套软 件,只要其中使用了受 GPL 协议保护的第三方软件的源程序,并向非开发人员发布时,软件本身也就自动成为受 GPL 保护并且约束的实体。也就是说,此时它必须开放源代码。
2、你可以去掉所有原作的版权 信息,只要你保持开源,并且随源代码、二进制版附上 GPL 的许可证就行,让后人可以很明确地得知此软件的授权信息。
3、无论软件以何种形式发布,都必须同时附上源代码。例如在 Web 上提供下载,就必须在二进制版本(如果有的话)下载的同一个页面,清楚地提供源代码下载的链接。如果以光盘形式发布,就必须同时附上源文件的光盘。
4、开发或维护遵循 GPL 协议开发的软件的公司或个人,可以对使用者收取一定的服务费用。但还是一句老话——必须无偿提供软件的完整源代码,不得将源代码与服务做捆绑或任何变相捆绑销售。
5、请在软件下方保留原软件的授权信息。
>联系人:薛兴帅
>QQ:23934360
>联系人:丁伟祥
>QQ:1005526886
>Email:1005526886@qq.com

作者博客:http://www.cnblogs.com/kmust/

Comments ( 0 )

Sign in for post a comment

About

一个.net平台的完全开源的,完整支持RBAC的,将会支持xacml的通用的权限框架、中间件、解决方案。 spread retract
Cancel

Releases

No release

Contributors

All

Activities

load more
can not load any more