问题标签 [rbac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
permissions - 分布式应用程序中基于角色的权限
我正在开发一个应用程序,该应用程序由在不同机器上运行的不同语言(其中包括 Java 和 C#)编写的模块组成(目前,在 LAN 内;所以它不是一个大的,但尽管如此,它是分布式的)。我们正在寻求一种合理的方法来实现功能的基于角色的权限(以配置谁有权调用功能的哪个部分)。
目前,这是通过一个自定义数据库表来解决的,该表将用户名映射到他们被允许使用的对话元素的 GUI ID(不是我的想法,以防万一你想知道......)并且我们的模块之一具有“管理”功能设置这些值。我有一种感觉,但不太确定,直接写入这个表不是一个好方法,特别是对于并发写入('admin'模块的)和读取(虽然数据库事务应该提供并发处理......但是在这种情况下这是否足够?)。
所以我的想法将是一个中央服务(最好用 C# 编写,但 Java 也可以,如果它的框架为此提供更好的支持),所有模块都可以访问,设置和读取权限。然后,该服务可以防止并发问题。当然,在它的背后,它仍然会使用一个数据库来存储权限。
您如何看待这种方法,服务不会成为瓶颈吗?但这对我来说“感觉”是对的。我觉得不对的是从头开始做这件事,就像重新发明轮子一样。该服务是否类似于 (ASP).NET 提供的身份验证和授权子框架?甚至活动目录?但它的关注点似乎更粗粒度(文件、目录、打印机,而不是应用程序内的函数……)。你能告诉我你在这个话题上的经历吗?
提前谢谢了!
以下是我在搜索过程中发现的一些提示:
http://en.wikipedia.org/wiki/Role-based_access_control
使用 ADFS 和 WIF 存储基于角色的权限
设计基于权限的安全模型
最佳基于角色的访问控制 (RBAC)数据库模型
rbac - Xacml in tinyOS
I have to implement an rbac in mica motes. I've read that Xacml helps in implementation of rbac. But I searched tutorials and google and I'm not able to find anything relevant.Can some one please explain how it should be done or any lead to references.
Thanks
mysql - Yii AuthManager 模式和类型
我对 Yii 的 AuthManager 和用于 DB 表的架构感到困惑。
- AuthItem表中的类型字段只能介于 0 和 2 之间(Role=2, Task=1, Operation=0)?
- 您能否使用本教程中使用的博客举例说明我可以找到存储在bizrule和数据字段中的内容?
- userid字段必须是 varchar 吗?
此模式(对于 MySQL)会产生任何冲突吗?
提前致谢!
mysql - mySQL 从一个表中选择,该表在另一个表中不存在,并且不是第三个表中的子表
我正在使用 Yii RBAC 来控制用户对我的应用程序的访问,它由三个 mySql 表组成;
authitem
(RBAC 角色项)
authitemchild
(属于其他角色的任何 RBAC 规则)
authitemassignment
(为用户分配角色)
例如,我们可能有这样的表:
授权:
authitemchild
auithitemassignment
在上述场景中,id 为 1 的用户在 areaA 中具有完整的 CRUD 访问权限。我需要的是用户无权访问的所有角色的列表,我还需要考虑他们也有权访问的任何角色的子级。
我可以轻松获取用户无权访问的所有角色:
但这会返回:
而且因为所有 areaA* 角色都是 areaASuperUser 的孩子,所以我不希望它们返回。
任何建议或推动正确方向将不胜感激!
*编辑:
谢谢@SuVeRa,你的回答:
非常适合上面的示例,但是我刚刚扩展了应用程序以包含多个儿童级别,即
授权:
authitemchild
auithitemassignment
原来的答案会回来;
因为它过滤掉了父母和孩子,而不是孩子的孩子。我追求的结果(在第二个例子中)是:
***编辑2:
专门针对 Yii:
我对 Yii 做了更多的阅读,CAuthManager有许多有用的方法,包括hasItemChild()、isAssigned()、getItemChildren()等,它们可以帮助抓取我需要的数据
php - 更简单的基于角色的访问控制 (RBAC) 方法?
我很难掌握基于角色的访问控制 (RBAC) 背后的代码。我正在尝试在 Laravel 框架中使用“捆绑包”,但它似乎只会让事情变得更加复杂。
我的特定应用程序需要三个角色。第一个也是最基本的角色只是让用户能够登录我的应用程序,管理他们的帐户,并保存“收藏夹”和“交易”。我需要的第二个角色是允许店主能够登录并创建帐户和交易。第三个角色基本上是管理员角色,因此我可以在需要时进入并删除不需要的内容。
只是简单地将一个 int 字段添加到名为“角色”之类的用户表中会不会有任何预期的问题?如果用户的角色为 0,则他们具有基本权限,无法访问站点的管理员和所有者区域;1 表示用户具有所有者角色等。每次发出请求时,我都会简单地检查用户的角色。
这会是一个合理、安全的解决方案,还是我可能会在使用这种方法时遇到问题?
permissions - 这是什么权限?(组+角色)
我开始需要对我的应用程序中的角色进行访问控制。
我对此了解不多,但我了解 vBulletin 的工作原理:
我认为我需要的是角色基础访问控制,但我不确定,因为我需要组来授予权限而不是单个用户(也许实现起来并不复杂)。
我在想的例子:
给定一个帖子:
所以基本上我不想确定 RBAC 是否是我需要的。
而且,将组成员身份存储在用户中会有什么好处,例如,最好有:ID NAME PASSWORD GROUPS (1, MyName, MyPassword, 1/2/3/4/5)
并通过 PHP 或一个注册表为名为 的表中的每个组成员身份展开它permissions
,例如:USERID, USERGROUP values (1, 1), (1, 2)
由于正式规范,也许应该是第二种方式,但我还没有在大学学习数据库 1。
非常感谢!
yii - Yii 中的 RBAC,访客未授权
我试图在 Yii 中实现 RBAC(使用权限模块)。
当尝试授权未经身份验证的用户(访客)时,CWebUser
调用CDbAuthManager
:
CDbAuthManager
然后尝试获取用户的 authassignments
问题是,因为用户是来宾,$userId
是null
,并且$assignments
是一个空数组。因此,我不能授权来宾用户执行任何操作(除非声明 allowedActions())
我究竟做错了什么?
roles - 如何在“基于角色的访问控制”模型上实现“用户可以删除自己的帖子”?
我已经阅读了一些关于基于角色的访问控制的文章,但是对于处理这种情况还不够清楚:如何实现“用户可以删除自己的帖子”?
对于普通的角色和权限,当用户做某事时,我可以检查用户是否拥有角色和权限,判断用户是否可以做。
但是对于“用户可以删除自己的帖子”,我必须检查帖子是否属于他。所以我必须硬编码一些东西,然后它就脱离了控制系统的控制。
我是否错过了什么以及如何正确地做到这一点?
c++ - 基于角色的访问控制 C++ 库或示例
我正在编写一个应用程序,我想根据用户角色限制对某些行为/操作的访问。
我在网上搜索了一个实现这一点的 C++ 库——或者至少是关于如何“自己动手”的指南——但无济于事。有人知道这样的图书馆吗?如果不是,我将不胜感激有关如何最好地实现这样的库/框架的一些想法。
php - Yii authManager 业务规则在哪里写?
我在我的项目中使用 Yii 的 authManager 来处理 RBAC。我对这个概念相当陌生。
我的问题是关于编写和存储业务规则。由于我使用的是 CDbAutManager,所有内容都存储在数据库中。这对于存储哪个用户具有哪个角色是有意义的,因为用户是动态增长的。但是,业务规则似乎也存储在那里。我不确定我是否理解。
我需要为“updateOwnPost”写一条规则。这不应该写在某个地方的 PHP 文件中,以便可以轻松移植项目吗?如果我用相同的代码启动一个新网站,我想保留规则而不是用户......
此外,这些规则有多复杂?我真的没有看到自己在数据库中编写 20 行规则......
我的问题有两个:
首先,一般来说,为什么要这样实现,正常的做事方式是什么?
其次,我可以开始了,我可以让我的业务规则成为对真实 PHP 文件的函数调用吗?如果是这样,怎么做?