ics/ssi-bundle

安全扩展包

安装: 179

依赖项: 2

建议者: 0

安全: 0

星星: 3

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

0.2.7 2022-04-08 09:12 UTC

README

用于扩展安全和日志的 Symfony 扩展包

安装

确保全局已安装 Composer,如 Composer 文档中的安装章节所述。

使用 Symfony Flex 的应用程序

打开命令行,进入您的项目目录并执行

composer require ics/ssi-bundle

未使用 Symfony Flex 的应用程序

步骤 1:下载扩展包

打开命令行,进入您的项目目录并执行以下命令以下载此扩展包的最新稳定版本

$ composer require ics/ssi-bundle

步骤 2:启用扩展包

然后,通过将其添加到项目 config/bundles.php 文件中注册的扩展包列表中来启用扩展包

// config/bundles.php

return [
    // ...
    ICS\SsiBundle\SsiBundle::class => ['all' => true],
];

步骤 3:添加扩展包路由

在应用程序的 config/routes.yaml 中添加路由

# config/routes.yaml

# ...
ssi_bundle:
    resource: '@SsiBundle/config/routes.yaml'
    prefix: /ssi
# ...

步骤 4:安装数据库

安装数据库

# Installer la base de données

php bin/console doctrine:schema:create

更新数据库

# Mise a jour la base de données

php bin/console doctrine:schema:update -f

将扩展包添加到 EasyAdmin

步骤 1:将实体添加到仪表板

在您的仪表板 Controller/Admin/DashboardController.php 中添加此菜单项

    // Controller/Admin/DashboardController.php
    use ICS\SsiBundle\Entity\Account;
    use ICS\SsiBundle\Entity\Log;

    class DashboardController extends AbstractDashboardController
    {
        public function configureMenuItems(): iterable
        {
            // ...
            yield MenuItem::section('Security', 'fa fa-shield');
            yield MenuItem::linkToCrud('Accounts', 'fa fa-user-circle', Account::class);
            yield MenuItem::linkToCrud('Logs', 'fa fa-newspaper', Log::class);
            // ...
        }
    }

步骤 2:将 Twig 小部件添加到仪表板

    {# templates/admin/dashboard.html.twig #}

    {% extends "@EasyAdmin/page/content.html.twig" %}

    {% block page_content %}

        {% include "@Ssi/admin/logs.html.twig" %}

    {% endblock %}

安装扩展包 fixtures

# Every data in database will destruct

php bin/console doctrine:fixture:load

创建用户的密码是

  • admin : adminPassword
  • user[1~10] : userPassword

日志实体

要记录实体,只需在实体声明上添加 @Log 注解即可。您必须定义 actionsproperty 属性

actions 的值可以是

  • "add" 在数据库中添加实体时
  • "update" 在数据库中更新实体时
  • "delete" 在数据库中删除实体时
  • "all" 在数据库中实体所有操作时

property 应创建一个返回您想要的日志消息的属性

    use Doctrine\ORM\Mapping as ORM;
    use ICS\SsiBundle\Annotation\Log;
    /**
     * @ORM\Entity()
     * @ORM\Table()
     * @Log(actions={"all"},property="logMessage")
     */
    class Account implements UserInterface
    {
        /**
         * @ORM\Column(type="string", length=180, unique=true)
         */
        private $username;

        public function getLogMessage()
        {
            return $this->username.' (#'.$this->getId().')';
        }

    }

配置 keycloak 认证

要启用 keycloak 认证,请在 .env 文件中添加以下行

    #Keycloak configuration

    KEYCLOAK_URL="<url of keycloak server>"
    KEYCLOAK_REALM="<realm for keycloak>"
    KEYCLOAK_CLIENT_ID="<client_id of keycloak server>"
    KEYCLOAK_CLIENT_SECRET="<secret of client_id"

您可以通过默认情况下忽略未知用户来启用 keycloak 用户自动创建

# config/packages/ssi.yaml

ssi:
  keycloak:
    auto_create_user: true

配置 Active Directory 认证

要启用 Active Directory 认证,请在 .env 文件中添加以下行

    #Keycloak configuration

    ACTIVE_DIRECTORY_HOST="<Active Directory domain controller IP or DNS name>"
    ACTIVE_DIRECTORY_BASEDN="<User base DN (dc=example,dc=com)>"
    ACTIVE_DIRECTORY_DOMAIN="<Active Directory short domain name>"

您可以通过默认情况下忽略未知用户来启用 Active Directory 用户自动创建

# config/packages/ssi.yaml

ssi:
  active_directory:
    auto_create_user: true