gpt4 book ai didi

php - 高级访问控制库

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:53 25 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

9年前关闭。




Improve this question




我对为用户执行高级访问控制以访问软件系统内的资源感兴趣。我在医疗保健 IT 工作,年轻的我经常低估 role-based access control in healthcare 的复杂性。 .但是这个问题应该适用于任何有复杂 ACL 要求的人。

很长一段时间php gacl一直是我的首选库,用于处理 Health IT 系统中非常复杂的 ACL 控制问题。但我现在更多地使用 javascript,尤其是 Node 。我已经在 npm 中搜索库以通用方式进行访问控制。

我希望支持定义操作而不仅仅是用户和资源(3 层而不是 2 层),并且我希望拥有用户、操作和资源组,并且暗示我希望拥有 ACL 继承。

来自the Star Wars themed manual的经典例子该库的规则如下:

  • 机组人员的所有成员都可以(访问、配置和使用)访问
    枪,引擎,驾驶舱和休息室,期待咀嚼。
  • 所有机器人都可以(访问和使用)驾驶舱,但只有 R2D2 有
    配置对引擎的访问。
  • 汉拥有所有类型的访问权限
    资源类型。

  • 这里的基本概念包括您可以制定适用于用户组(即机组人员、乘客或机器人)或个人(Han 和 Chewie)的规则,您可以拥有不同类型的访问权限(访问、配置、使用) 或访问组(维护访问 = 配置 + 维修 + 使用)对不同资源(引擎和驾驶舱)也可以分组,(战斗站 = 驾驶舱 + 枪支)。

    这允许使用相对简单的基于组的管理来配置极其复杂的访问控制规则。

    到目前为止,除了 php-gacl 之外,我还没有看到任何类似的东西。我看过一些很棒的基于 javascript 的 ACL 项目,所有这些项目都宣传简单和易用,而不是全面。这也适用于其他典型的 php ACL 库(即 Zend ACL)

    有人在为 Node 开发“高级 ACL”项目吗?我应该在某个地方寻找更好的方法吗?

    php-gacl 包含三个部分,一个是基于 php 的管理 GUI(无可否认过于复杂),以及一个用于 CRUD 规则的 API(我认为可以轻松转换为 REST 接口(interface))和一个非常小的提供 ACL 检查功能的文件。

    从技术上讲,只有最后一种类型需要完全移植到 Node 才能使该软件模型正常工作?

    在更深层次上,我想了解已成功使用哪些方法来处理此问题。这个问题一般是怎么解决的?那些在 node/javascript 甚至特定数据库方法(关系与非关系)方面有效讨论这个问题的人的奖励积分。我知道这样做对/错有很多理论基础(即对 RBAC 与 ACL 有很多意见)。我想要的是理论上可靠的东西,或者从图书馆的 Angular 来看仍然“正常工作”的几乎可靠的东西。我专注于 Javascript,但了解其他语言如何实际解决这个问题会很好。

    最佳答案

    如果您可以避免使用任何类型的 ACL,通常情况会更好。它们管理起来很复杂。您最好对三个级别的安全检查进行建模:

  • URL/IP 地址/或其他接入点安全检查
  • 资源检查时的方法。无论您想修改或操纵什么实体,您都可以对其进行权限检查。 IE。业务规则类型的访问。
  • 实体资源检查。如果用户/API/OAuth token 完全可以访问实体

  • 这可以使用 RBAC 来完成。您的组织/站点的每个 Angular 色都分配有一组访问/修改/操作权限。用户被分配一个 Angular 色,但三个级别的检查检查权限,而不是 Angular 色。

    我会将 Spring Security 和 RBAC 视为谷歌搜索,并以此为模型。以下是我发现有用的一些链接:

    http://www.xaprb.com/blog/2006/08/16/how-to-build-role-based-access-control-in-sql/

    http://www.xaprb.com/blog/2006/08/18/role-based-access-control-in-sql-part-2/

    (因为 Spring Security 中的所有“原始”示例和疯狂命名的检查,建议您阅读提供替代名称使用和 Spring 权限“hasRole()”检查用途的文章。以下文章在RBAC 的设计)

    http://springinpractice.com/2010/10/27/quick-tip-spring-security-role-based-authorization-and-permissions/

    (关于灵活使用 Spring Security,包括 RBAC 的一个很好的介绍)

    http://www.infoq.com/presentations/Spring-Security-3

    (下面给出了 RBAC 问题和解决方案的 GOOD 描述,并且是为 PHP 设计的)

    http://www.tonymarston.net/php-mysql/role-based-access-control.html

    带有 RBAC 实现的 PHP 框架:

    http://trac.symfony-project.org/wiki/UserRbac

    最后是 Spring Security 的类图。您会注意到它允许将安全信息放在 PARALLEL 表中,以供 protected 实体使用。这是设计使然,以便稍后可以添加、删除或替换 Spring Security。但这也意味着更多的 table 。

    http://code.google.com/p/uclm-esi-alarcos/source/browse/trunk/documentation/memoria-pfc/Figuras/Cap5/spring-security-class-diagram.png?r=295

    关于php - 高级访问控制库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14107597/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com