我正在做一个网络项目,后台是Java & Mysql,客户端包括web(html5)和app(IOS/Android),我对系统的设计有一些疑问。
有三种不同类型的帐户:
我的基本身份验证思想:
肯定会有account / role / permission表,因为管理员和客户都会有相当复杂的用户权限问题,客户也有不同的权限,因为他们的历史行为。
由于Apache Shiro的简单性和分布式会话,我决定使用它。
我的问题是:
(1)应该创建一个单帐户表或3个单独的帐户表。
(2)对3张表的设计有何建议:account / role / permission?
发布于 2015-04-07 16:41:25
要简短:,您不需要角色/权限表 :)
我会先决定你真的需要RBAC安全模型吗?您的应用程序看起来像一个完美的六角架构用例,它有三个独立的前端部分:消费者、商店、管理。然后,我建议为每个前端建立单独的身份验证/授权机制。在这种情况下,您可以灵活地选择最佳工具(OAuth2、OpenID、LDAP什么的),并遵循最不常见机构安全原则。您的应用程序看起来不像在方法级别上需要授权的应用程序,因此您不需要RBAC。
发布于 2015-03-26 15:11:36
我建议您考虑将您的所有用户管理需求委托给风暴路径。使用Stormpaht,您不需要担心这种低级别的问题,您的所有数据都是安全管理和存储的。“风暴路径”规定:
使用风暴路径,您只需要创建群组,它将表示您的roles。在您的组和帐户中,还可以使用灵活的permissions概念创建更细粒度的概念,如自定义数据。
如前所述,我们还支持Shiro集成,您可以在使用Stormpath作为身份验证和授权数据提供程序的同时,使用Shiro来建模您的所有安全需求。请看一下我们的风暴路径Shiro插件和示例Shiro Web应用程序。
免责声明,我是一个积极的风暴路径贡献者。
发布于 2015-03-26 21:49:14
如果您在第一个问题中询问如何为三个非常不同的实体(管理用户、客户用户和店主)设计数据库模式,我建议您不要将它们合并到一个表中,因为它们是不同的概念,可能具有不同的特性。
您回答了自己的问题,因为“易于编程”很少胜过业务规则/逻辑。
您决定使用现有的安全框架,或者使用您自己的安全框架,应该独立于核心业务实体的数据模型。
如果您不想使用像Stormpath这样的托管解决方案,并且还没有解决Shiro问题,请查看OACC,这是一种开放源代码的基于权限的Java安全框架,支持分级安全域、超级用户、权限继承和模拟。
它可能适合您的项目,因为:
[免责声明:我是http://www.oaccframework.org/的维护人员和联合开发人员]
https://stackoverflow.com/questions/29251357
复制相似问题