Динамический брандмауэр Symfony
На большом веб-приложении я хочу, чтобы наши клиенты могли включать/настраивать собственный поставщик удостоверения личности sigle sign-on (SAML). Каждый клиент имеет собственный субдомен, позволяющий нашему приложению определять, какой брандмауэр должен быть активным.
Однако я не хочу вручную настраивать каждый новый брандмауэр и очищать кеш до того, как изменения вступят в силу. Теперь я читал об инъекциях зависимостей, расширениях, компиляторах и обо всем этом, но я просто не могу найти способ загрузки динамических настроек брандмауэра из базы данных и их применения. Любая идея, как я это сделаю?
FYI, я использую SamlSPBundle для SSO.
Спасибо!
Ответы
Ответ 1
Возможно, я понял это через несколько мгновений после установления щедрости!;)
Безопасность Symfony2 позволяет специфицировать request_matcher для каждого брандмауэра:
http://php-and-symfony.matthiasnoback.nl/2012/07/symfony2-security-using-advanced-request-matchers-to-activate-firewalls/
Пользовательские RequestMatchers должны реализовать единственный метод, который возвращает true или false на основе объекта Request. Я думаю, что это можно использовать для активации брандмауэра динамически. Пока у вас есть конечное количество брандмауэров (я делаю), тогда пользовательский RequestMatcher может решить вашу проблему.