一个企业有多个系统,每个员工在不同的系统中都有uid和密码(uid冗余了),并且每个uid在不同的系统中权限是不一样的。 现在要设计一个统一认证系统,弄一个DB或者LDAP来存所有员工的uid,然后各个系统通过统一认证系统进行认证。 每个uid的权限在不同的系统中是不一样的,现在问题是uid在各个系统的权限需要集中存储在 统一认证系统 中吗? 我的想法是像身份证一样,统一认证系统仅仅仅仅维护uid、密码、姓名、性别等这几个基本信息。其他的 组织结构、各个系统的权限等 ,由各个系统自己维护。 但是我看了一个比较的大公司的设计的权限系统,他们把各个系统的权限都统一存在统一认证系统仅仅中了。 我想他们这样设计,肯定还是有他们自己的道理的。 这让我很困惑。 大家来讨论一下各自的设计思路吧,请说说你的思路和理由。
两个凡是: 1: LDAP只用于 用户认证(authentication),除非业务系统中的业务关系,和人事关系完全一致.这种情况很少. -------以下是授权部分(Authorization) 2: 业务系统 Profile(简档)定义 ACL(Action control list), 也就是CRUD系统当中所谓"角色" 3: (Role)角色定义树状组织. 4: BOSR(business object sharing rules) 根据ACL,联合Role形成三个维度,进行精确的 可见性,访问性控制. 以上 3-4,是所有的 Open source软件都无法做到的. 而且用Mysql这种"非"数据库是不可能实现的. 增加一个流程控制,就可以实现任意的业务方面的权限控制.######回复 @jackstraw : mysql糟糕也就算了.那些搞mysql的人,更糟糕.哈哈######建议@宏哥有空发个帖子,标题叫:mysql做不了的哪些事儿 : )###### @mark35
select * from v_content where ( role_id in (select id from (select * from connectby('cms_role','id','pid','id','0',0,';') as t(id int, pid int, level int, branch text, pos int) where level >=1) utree) or owner_id='10000')
给你一个例子.
上面的SQL表示, 查询出v_content当中, 属于自己以及在自己管理的组织下的所有记录.
你也可以用括号把它变成一个结果集,再进行group sharing 的并操作,再对business rules 进行集成运算. ######@mark35 , FYI###### 数据一般分为 Public/Private 和 Read, Write, Authorization(数据上的再授权) 组成6个组合
通过 组织构架图, 实现 近似 无限种组合,
数据基准, 是以数据属主, 在 策略/组织数, 上进行递归运算, 自动向上级授权实现.
这是其中一个维度, 也是最复杂的维度,
另外 可以设定组, 在组内 互相 public/private/auth 进行交叉共享, 这个共享仍然在组织树上递归授权
第三维度, 在于业务维度, 通过比如审批价格产生的数据授权, 再进行 组,组织树的 再运算, 又产生数据访问控制. 这个就非常复杂了.
你仔细理解这几句话, 相信你对所有系统的数据访问授权都能找到答案. ######嗯 如果把操作 save/delete/update/get 包含在url中,你认为还是这么复杂吗?######统一认证我就不说了。 组织结构你要放在你们系统,因为你是人员信息权威源,第三方系统如果有需要可以同步组织结构数据。 授权信息可以不放。 一般简单意义上的统一授权都是基于角色。用户和角色的关系放在ldap中,由第三方系统配置到ldap。达到统一权限的目的。(一般软件都支持ldap人员数据) 授权信息不放你这里的主要原因的第三方系统你改不起。######有道理! 有一个疑惑的地方,你的意思是角色、角色与用户的关系也存在ldap吗? 但是不同的系统需要定义的角色是不一样的, 每个系统的角色都先定义到ldap也不现实啊...######看一个例子,不代表这个例子就是对的。包括IBM堆出来的。项目本身有非技术的原因,成功的实施项目不代表是合理的项目。特别是非定制开发的,只是产品化实施出来的东西。(话又回来,定制开发的东西,也未必是合理的东西,哈,受甲方猪头影响更大)。 权限系统和公司自身管理方式关联很大。没谁对谁错的。不能拿一个理论上完美的东西,去让甲方套。设计者也要着重关注甲方的业务特点,组织特点,和管理状态。这些是设计权限系统的重要参考信息,而不是理论本身。######
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。