galmi/xacmlbundle

XACML Bundle

安装: 8

依赖: 0

建议者: 0

安全性: 0

星星: 0

关注者: 1

分支: 1

开放问题: 1

类型:symfony-bundle

dev-master 2016-03-13 18:32 UTC

This package is not auto-updated.

Last update: 2024-09-18 18:48:58 UTC


README

Code Climate Test Coverage Build Status

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