ics / ssi-bundle
安全扩展包
0.2.7
2022-04-08 09:12 UTC
Requires
- doctrine/doctrine-fixtures-bundle: ^3.4
- easycorp/easyadmin-bundle: ^3.2
- ics/dashboard-bundle: ^0
- ics/navigation-bundle: ^0
- knpuniversity/oauth2-client-bundle: ^2.8
- stevenmaguire/oauth2-keycloak: ^2.2
- symfony/config: ^5
- symfony/console: ^5
- symfony/dependency-injection: ^4.4|^5
- symfony/event-dispatcher: ^4.4|^5
- symfony/framework-bundle: ^5
- symfony/http-client: ^5
- symfony/intl: ^4.4|^5
- symfony/monolog-bundle: ^3.6
- symfony/orm-pack: ^2.1
- symfony/security-bundle: ^5
- symfony/string: ^5
- symfony/translation: ^4.4|^5
- symfony/twig-bundle: ^4.4|^5
Requires (Dev)
- symfony/maker-bundle: ^1.30
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 注解即可。您必须定义 actions 和 property 属性
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
。