如何在 PHP 中实现基于属性的访问控制 (ABAC)

Kan*_*nko 5 php json xacml abac

我只是找到了 AT&T 的一个框架来构建 ABAC。

该框架使用遵循 XML 格式的 XACML 来创建规则。但这个框架只是针对Java实现的。

但是,我正在使用 PHP 并使用 JSON 来编写规则。

我的解决方案正确吗?您能推荐一些支持 PHP 的框架或解决方案吗?

Dav*_*ard 2

AT&T框架是AT&T几年前设计的研发框架,然后发布到Apache。根据github说法,它仍然处于活动状态。我不知道该产品有任何商业用途(尽管我怀疑 AT&T 自己也使用它)。

使用的三个主要框架是:

  • WSO2巴拉那. 这是一个开源 Java PDP。它还捆绑为 WSO2 Identity Server 的一部分。大多数开源用户使用 Balana。
  • SunXACML:这是原始的 XACML 3.0 实现。它相当古老但很坚固(已经存在了 10 年左右)。它也是开源的和 Java 的。
  • 公理化策略服务器。这是一个商业解决方案(免责声明:我为 Axiomatics 工作)。它是目前最流行的商业解决方案。它也是用 Java 实现的,但也支持 PHP 集成。

您可以在XACML 的维基百科页面上找到此信息。还有另一个有趣的引擎,称为 AuthZForce,但我对此缺乏经验。

AFAIK,所有这些引擎都使用 XACML 的 XML 格式来存储策略。您声称您需要 JSON。JSON 中没有 XACML 的策略配置文件。有一个关于该主题的问题,您可以在此处阅读

鉴于 Axiomatics Policy Server 作为 JSON API 公开,您可以使用它与 PHP 集成。其他引擎可能也有类似的方法。如果您使用 Amazon AWS,则可以请求Axiomatics Policy Server AMI的副本

ABAC 是技术中立的,这意味着它不特定于 Java、Ruby、.NET、PHP 或任何其他语言。PDP 引擎的编写内容与您的应用程序的编写内容无关,只要您可以将两者集成在一起即可。

我希望这有帮助,大卫。