galmi / xacmlbundle
XACML Bundle
Requires
- php: >=5.5.0
- galmi/xacml: dev-master
Requires (Dev)
- codeclimate/php-test-reporter: ^0.2.0
- doctrine/doctrine-bundle: ~1.4
- doctrine/doctrine-fixtures-bundle: ^2.3
- phpunit/phpunit: 4.8.*
This package is not auto-updated.
Last update: 2024-09-18 18:48:58 UTC
README
GalmiXacmlBundle
该 GalmiXacmlBundle 基于可扩展访问控制标记语言(XACML)3.0 OASIS 标准,增加了对基于属性访问控制(ABAC)的支持。
功能包括
- 策略可以通过 Doctrine ORM 存储
- 单元测试
安装
步骤 1: 下载 Bundle
打开命令行,进入您的项目目录并执行以下命令以下载此 Bundle 的最新稳定版本
$ composer require galmi/xacmlbundle "dev-master"
此命令要求您全局安装 Composer,如 Composer 文档中的安装章节所述。
步骤 2: 启用 Bundle
然后,通过将其添加到项目 app/AppKernel.php 文件中注册的 Bundle 列表中来启用该 Bundle
<?php // app/AppKernel.php // ... class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Galmi\XacmlBundle\GalmiXacmlBundle(), ); // ... } // ... }
使用默认配置
默认配置下,如果没有拒绝,则允许所有资源和操作。
您必须为每个操作确定资源。您可以为您的操作添加注解。
<?php namespace AppBundle\Controller; // ... use Galmi\XacmlBundle\Annotations\XacmlResource; class CustomerController extends Controller { /** * @XacmlResource(entity="AppBundle\Entity\Customer", id="id") */ public function editAction(Request $request) { // ... } }
此注解确定资源类 "AppBundle\Entity\Customer" 中的标识符键 "id",在请求 (_GET, _POST) 中。
自定义
配置默认决策
默认决策是确定规则未匹配时的请求结果。默认值是 "允许"。这意味着如果所有规则都不匹配请求,用户将限制所有请求的访问。默认决策值允许 "允许" 或 "拒绝"。
# config/parameters.yml parameters: galmi_xacml.default_decision: Permit
如果您使用 xml 配置,可以使用类 Galmi\Xacml\Decision 中的常量 PERMIT 或 DENY。
<!-- config/services.xml --> <container xmlns="https://symfony.com.cn/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://symfony.com.cn/schema/dic/services https://symfony.com.cn/schema/dic/services/services-1.0.xsd"> <parameters> <parameter key="galmi_xacml.default_decision" type="constant">Galmi\Xacml\Decision::PERMIT</parameter> </parameters> </container
配置默认组合算法
如果您有多个顶级策略集或策略,策略决策点必须确定一个决策 "允许" 或 "拒绝"。在这种情况下,您可以使用组合算法。默认值是 "\Galmi\Xacml\CombiningAlgorithmRegistry::FIRST_APPLICABLE",这意味着第一个评估的策略集或策略是 PDP 的结果。
# config/parameters.yml parameters: galmi_xacml.default_combining_algorithm: "first-applicable"
如果您使用 xml 配置,可以使用类 Galmi\Xacml\CombiningAlgorithmRegistry 的常量。
<!-- config/services.xml --> <container xmlns="https://symfony.com.cn/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://symfony.com.cn/schema/dic/services https://symfony.com.cn/schema/dic/services/services-1.0.xsd"> <parameters> <parameter key="galmi_xacml.default_combining_algorithm" type="constant">\Galmi\Xacml\CombiningAlgorithmRegistry::FIRST_APPLICABLE</parameter> </parameters> </container