[Security] config refactoring

This commit is contained in:
Johannes M. Schmitt 2011-01-28 11:57:01 +01:00 committed by Fabien Potencier
parent 65eb70d3b6
commit e23f39c42f
11 changed files with 395 additions and 351 deletions

View File

@ -11,6 +11,7 @@
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory; namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Reference;
@ -25,15 +26,15 @@ class FormLoginFactory implements SecurityFactoryInterface
{ {
$provider = 'security.authentication.provider.dao.'.$id; $provider = 'security.authentication.provider.dao.'.$id;
$container $container
->register($provider, '%security.authentication.provider.dao.class%') ->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), $id, new Reference('security.encoder_factory'))) ->setArgument(0, new Reference($userProvider))
->setPublic(false) ->setArgument(2, $id)
->addTag('security.authentication_provider') ->addTag('security.authentication_provider')
; ;
// listener // listener
$listenerId = 'security.authentication.listener.form.'.$id; $listenerId = 'security.authentication.listener.form.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.form')); $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.form'));
$listener->setArgument(3, $id); $listener->setArgument(3, $id);
// add remember-me tag // add remember-me tag
@ -60,7 +61,7 @@ class FormLoginFactory implements SecurityFactoryInterface
'failure_forward' => false, 'failure_forward' => false,
); );
foreach (array_keys($options) as $key) { foreach (array_keys($options) as $key) {
if (isset($config[$key])) { if (array_key_exists($key, $config)) {
$options[$key] = $config[$key]; $options[$key] = $config[$key];
} }
} }
@ -83,8 +84,12 @@ class FormLoginFactory implements SecurityFactoryInterface
} }
// form entry point // form entry point
$entryPoint = $container->setDefinition($entryPointId = 'security.authentication.form_entry_point.'.$id, clone $container->getDefinition('security.authentication.form_entry_point')); $entryPointId = 'security.authentication.form_entry_point.'.$id;
$entryPoint->setArguments(array($options['login_path'], $options['use_forward'])); $container
->setDefinition($entryPointId, new DefinitionDecorator('security.authentication.form_entry_point'))
->addArgument($options['login_path'])
->addArgument($options['use_forward'])
;
return array($provider, $listenerId, $entryPointId); return array($provider, $listenerId, $entryPointId);
} }

View File

@ -11,6 +11,7 @@
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory; namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Reference;
@ -25,15 +26,15 @@ class HttpBasicFactory implements SecurityFactoryInterface
{ {
$provider = 'security.authentication.provider.dao.'.$id; $provider = 'security.authentication.provider.dao.'.$id;
$container $container
->register($provider, '%security.authentication.provider.dao.class%') ->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), $id, new Reference('security.encoder_factory'))) ->setArgument(0, new Reference($userProvider))
->setPublic(false) ->setArgument(2, $id)
->addTag('security.authentication_provider') ->addTag('security.authentication_provider')
; ;
// listener // listener
$listenerId = 'security.authentication.listener.basic.'.$id; $listenerId = 'security.authentication.listener.basic.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.basic')); $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.basic'));
$listener->setArgument(2, $id); $listener->setArgument(2, $id);
if (null === $defaultEntryPoint) { if (null === $defaultEntryPoint) {

View File

@ -11,6 +11,7 @@
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory; namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Reference;
@ -25,15 +26,15 @@ class HttpDigestFactory implements SecurityFactoryInterface
{ {
$provider = 'security.authentication.provider.dao.'.$id; $provider = 'security.authentication.provider.dao.'.$id;
$container $container
->register($provider, '%security.authentication.provider.dao.class%') ->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.dao'))
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), $id, new Reference('security.encoder_factory'))) ->setArgument(0, new Reference($userProvider))
->setPublic(false) ->setArgument(2, $id)
->addTag('security.authentication_provider') ->addTag('security.authentication_provider')
; ;
// listener // listener
$listenerId = 'security.authentication.listener.digest.'.$id; $listenerId = 'security.authentication.listener.digest.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.digest')); $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.digest'));
$listener->setArgument(2, $id); $listener->setArgument(2, $id);
if (null === $defaultEntryPoint) { if (null === $defaultEntryPoint) {

View File

@ -2,6 +2,8 @@
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory; namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\Parameter; use Symfony\Component\DependencyInjection\Parameter;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
@ -19,11 +21,11 @@ class RememberMeFactory implements SecurityFactoryInterface
} }
// authentication provider // authentication provider
$authenticationProviderId = 'security.authentication.provider.rememberme.'.$id; $authProviderId = 'security.authentication.provider.rememberme.'.$id;
$container $container
->register($authenticationProviderId, '%security.authentication.provider.rememberme.class%') ->setDefinition($authProviderId, new DefinitionDecorator('security.authentication.provider.rememberme'))
->setArguments(array(new Reference('security.account_checker'), $config['key'], $id)) ->addArgument(1, $config['key'])
->setPublic(false) ->addArgument(2, $id)
->addTag('security.authentication_provider') ->addTag('security.authentication_provider')
; ;
@ -46,10 +48,9 @@ class RememberMeFactory implements SecurityFactoryInterface
; ;
} }
$rememberMeServices = $container->setDefinition($rememberMeServicesId, clone $container->getDefinition($templateId)); $rememberMeServices = $container->setDefinition($rememberMeServicesId, new DefinitionDecorator($templateId));
$arguments = $rememberMeServices->getArguments(); $rememberMeServices->setArgument(1, $config['key']);
$arguments[1] = $config['key']; $rememberMeServices->setArgument(2, $id);
$arguments[2] = $id;
if (isset($config['token-provider'])) { if (isset($config['token-provider'])) {
// FIXME: make the naming assumption more flexible // FIXME: make the naming assumption more flexible
@ -59,12 +60,22 @@ class RememberMeFactory implements SecurityFactoryInterface
} }
// remember-me options // remember-me options
foreach ($arguments[3] as $name => $option) { $options = array(
'name' => 'REMEMBERME',
'lifetime' => 31536000,
'path' => '/',
'domain' => null,
'secure' => false,
'httponly' => true,
'always_remember_me' => false,
'remember_me_parameter' => '_remember_me',
);
foreach ($options as $name => $option) {
if (array_key_exists($name, $config)) { if (array_key_exists($name, $config)) {
$arguments[3][$name] = $config[$name]; $options[$name] = $config[$name];
} }
} }
$rememberMeServices->setArguments($arguments); $rememberMeServices->setArgument(3, $options);
// attach to remember-me aware listeners // attach to remember-me aware listeners
$userProviders = array(); $userProviders = array();
@ -92,10 +103,10 @@ class RememberMeFactory implements SecurityFactoryInterface
// remember-me listener // remember-me listener
$listenerId = 'security.authentication.listener.rememberme.'.$id; $listenerId = 'security.authentication.listener.rememberme.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.rememberme')); $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.rememberme'));
$listener->setArgument(1, new Reference($rememberMeServicesId)); $listener->setArgument(1, new Reference($rememberMeServicesId));
return array($authenticationProviderId, $listenerId, $defaultEntryPoint); return array($authProviderId, $listenerId, $defaultEntryPoint);
} }
public function getPosition() public function getPosition()

View File

@ -11,6 +11,8 @@
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory; namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Reference;
@ -25,18 +27,16 @@ class X509Factory implements SecurityFactoryInterface
{ {
$provider = 'security.authentication.provider.pre_authenticated.'.$id; $provider = 'security.authentication.provider.pre_authenticated.'.$id;
$container $container
->register($provider, '%security.authentication.provider.pre_authenticated.class%') ->setDefinition($provider, new DefinitionDecorator('security.authentication.provider.pre_authenticated'))
->setArguments(array(new Reference($userProvider), new Reference('security.account_checker'), $id)) ->setArgument(0, new Reference($userProvider))
->setPublic(false) ->addArgument($id)
->addTag('security.authentication_provider') ->addTag('security.authentication_provider')
; ;
// listener // listener
$listenerId = 'security.authentication.listener.x509.'.$id; $listenerId = 'security.authentication.listener.x509.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.authentication.listener.x509')); $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.x509'));
$arguments = $listener->getArguments(); $listener->setArgument(2, $id);
$arguments[2] = $id;
$listener->setArguments($arguments);
return array($provider, $listenerId, $defaultEntryPoint); return array($provider, $listenerId, $defaultEntryPoint);
} }

View File

@ -11,6 +11,7 @@
namespace Symfony\Bundle\SecurityBundle\DependencyInjection; namespace Symfony\Bundle\SecurityBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\Alias;
use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
@ -32,6 +33,7 @@ class SecurityExtension extends Extension
{ {
protected $requestMatchers = array(); protected $requestMatchers = array();
protected $contextListeners = array(); protected $contextListeners = array();
protected $listenerPositions = array('pre_auth', 'form', 'http', 'remember_me');
public function configLoad(array $configs, ContainerBuilder $container) public function configLoad(array $configs, ContainerBuilder $container)
{ {
@ -58,6 +60,8 @@ class SecurityExtension extends Extension
if (!$container->hasDefinition('security.context')) { if (!$container->hasDefinition('security.context')) {
$loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config')); $loader = new XmlFileLoader($container, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
$loader->load('security.xml'); $loader->load('security.xml');
$loader->load('security_listeners.xml');
$loader->load('security_rememberme.xml');
$loader->load('templating_php.xml'); $loader->load('templating_php.xml');
$loader->load('templating_twig.xml'); $loader->load('templating_twig.xml');
$loader->load('collectors.xml'); $loader->load('collectors.xml');
@ -185,26 +189,18 @@ class SecurityExtension extends Extension
$arguments[1] = $userProviders; $arguments[1] = $userProviders;
$definition->setArguments($arguments); $definition->setArguments($arguments);
// load service templates // create security listener factories
$c = new ContainerBuilder($container->getParameterBag()); $factories = $this->createListenerFactories($container, $config);
$loader = new XmlFileLoader($c, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
$loader->load('security_templates.xml');
foreach ($this->normalizeConfig($config, 'template') as $template) {
$loader->load($c->getParameterBag()->resolveValue($template));
}
$container->merge($c);
// load firewall map // load firewall map
$mapDef = $container->getDefinition('security.firewall.map'); $mapDef = $container->getDefinition('security.firewall.map');
$map = array(); $map = array();
foreach ($firewalls as $firewall) { foreach ($firewalls as $firewall) {
list($matcher, $listeners, $exceptionListener) = $this->createFirewall($container, $firewall, $providerIds); list($matcher, $listeners, $exceptionListener) = $this->createFirewall($container, $firewall, $providerIds, $factories);
$contextId = 'security.firewall.map.context.'.count($map); $contextId = 'security.firewall.map.context.'.count($map);
$context = $container->setDefinition($contextId, clone $container->getDefinition('security.firewall.context')); $context = $container->setDefinition($contextId, new DefinitionDecorator('security.firewall.context'));
$context $context
->setPublic(true)
->setArgument(0, $listeners) ->setArgument(0, $listeners)
->setArgument(1, $exceptionListener) ->setArgument(1, $exceptionListener)
; ;
@ -213,7 +209,7 @@ class SecurityExtension extends Extension
$mapDef->setArgument(1, $map); $mapDef->setArgument(1, $map);
} }
protected function createFirewall(ContainerBuilder $container, $firewall, $providerIds) protected function createFirewall(ContainerBuilder $container, $firewall, $providerIds, array $factories)
{ {
// unique id for this firewall // unique id for this firewall
$id = md5(serialize($firewall)); $id = md5(serialize($firewall));
@ -266,7 +262,7 @@ class SecurityExtension extends Extension
// Logout listener // Logout listener
if (array_key_exists('logout', $firewall)) { if (array_key_exists('logout', $firewall)) {
$listenerId = 'security.logout_listener.'.$id; $listenerId = 'security.logout_listener.'.$id;
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.logout_listener')); $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.logout_listener'));
$listeners[] = new Reference($listenerId); $listeners[] = new Reference($listenerId);
@ -274,15 +270,13 @@ class SecurityExtension extends Extension
$firewall['logout'] = array(); $firewall['logout'] = array();
} }
$arguments = $listener->getArguments();
if (isset($firewall['logout']['path'])) { if (isset($firewall['logout']['path'])) {
$arguments[1] = $firewall['logout']['path']; $listener->setArgument(1, $firewall['logout']['path']);
} }
if (isset($firewall['logout']['target'])) { if (isset($firewall['logout']['target'])) {
$arguments[2] = $firewall['logout']['target']; $listener->setArgument(2, $firewall['logout']['target']);
} }
$listener->setArguments($arguments);
// add session logout handler // add session logout handler
$invalidateSession = true; $invalidateSession = true;
@ -299,15 +293,15 @@ class SecurityExtension extends Extension
// add cookie logout handler // add cookie logout handler
if (count($cookies = $this->normalizeConfig($firewall['logout'], 'cookie')) > 0) { if (count($cookies = $this->normalizeConfig($firewall['logout'], 'cookie')) > 0) {
$cookieHandlerId = 'security.logout.handler.cookie_clearing.'.$id; $cookieHandlerId = 'security.logout.handler.cookie_clearing.'.$id;
$cookieHandler = $container->setDefinition($cookieHandlerId, clone $container->getDefinition('security.logout.handler.cookie_clearing')); $cookieHandler = $container->setDefinition($cookieHandlerId, new DefinitionDecorator('security.logout.handler.cookie_clearing'));
$cookieHandler->setArguments(array($cookies)); $cookieHandler->addArgument($cookies);
$listener->addMethodCall('addHandler', array(new Reference($cookieHandlerId))); $listener->addMethodCall('addHandler', array(new Reference($cookieHandlerId)));
} }
} }
// Authentication listeners // Authentication listeners
list($authListeners, $providers, $defaultEntryPoint) = $this->createAuthenticationListeners($container, $id, $firewall, $defaultProvider); list($authListeners, $providers, $defaultEntryPoint) = $this->createAuthenticationListeners($container, $id, $firewall, $defaultProvider, $factories);
$listeners = array_merge($listeners, $authListeners); $listeners = array_merge($listeners, $authListeners);
@ -343,36 +337,20 @@ class SecurityExtension extends Extension
} }
$listenerId = 'security.context_listener.'.count($this->contextListeners); $listenerId = 'security.context_listener.'.count($this->contextListeners);
$listener = $container->setDefinition($listenerId, clone $container->getDefinition('security.context_listener')); $listener = $container->setDefinition($listenerId, new DefinitionDecorator('security.context_listener'));
$arguments = $listener->getArguments(); $listener->setArgument(2, $contextKey);
$arguments[2] = $contextKey;
$listener->setArguments($arguments);
return $this->contextListeners[$contextKey] = $listenerId; return $this->contextListeners[$contextKey] = $listenerId;
} }
protected function createAuthenticationListeners($container, $id, $firewall, $defaultProvider) protected function createAuthenticationListeners($container, $id, $firewall, $defaultProvider, array $factories)
{ {
$listeners = array(); $listeners = array();
$providers = array(); $providers = array();
$hasListeners = false; $hasListeners = false;
$defaultEntryPoint = null; $defaultEntryPoint = null;
$positions = array('pre_auth', 'form', 'http', 'remember_me'); foreach ($this->listenerPositions as $position) {
$tags = $container->findTaggedServiceIds('security.listener.factory');
$factories = array();
foreach ($positions as $position) {
$factories[$position] = array();
}
foreach (array_keys($tags) as $tag) {
$factory = $container->get($tag);
$factories[$factory->getPosition()][] = $factory;
}
foreach ($positions as $position) {
foreach ($factories[$position] as $factory) { foreach ($factories[$position] as $factory) {
$key = $factory->getKey(); $key = $factory->getKey();
$keybis = str_replace('-', '_', $key); $keybis = str_replace('-', '_', $key);
@ -427,6 +405,35 @@ class SecurityExtension extends Extension
return $providerIds; return $providerIds;
} }
protected function createListenerFactories(ContainerBuilder $container, $config)
{
// load service templates
$c = new ContainerBuilder();
$parameterBag = $container->getParameterBag();
$loader = new XmlFileLoader($c, array(__DIR__.'/../Resources/config', __DIR__.'/Resources/config'));
$loader->load('security_factories.xml');
// load user-created listener factories
foreach ($this->normalizeConfig($config, 'factory', 'factories') as $factory) {
$loader->load($parameterBag->resolveValue($factory));
}
$tags = $c->findTaggedServiceIds('security.listener.factory');
$factories = array();
foreach ($this->listenerPositions as $position) {
$factories[$position] = array();
}
foreach (array_keys($tags) as $tag) {
$factory = $c->get($tag);
$factories[$factory->getPosition()][] = $factory;
}
return $factories;
}
protected function createEncoders($config, ContainerBuilder $container) protected function createEncoders($config, ContainerBuilder $container)
{ {
$encoders = $this->normalizeConfig($config, 'encoder'); $encoders = $this->normalizeConfig($config, 'encoder');
@ -623,19 +630,16 @@ class SecurityExtension extends Extension
} }
$exceptionListenerId = 'security.exception_listener.'.$id; $exceptionListenerId = 'security.exception_listener.'.$id;
$listener = $container->setDefinition($exceptionListenerId, clone $container->getDefinition('security.exception_listener')); $listener = $container->setDefinition($exceptionListenerId, new DefinitionDecorator('security.exception_listener'));
$arguments = $listener->getArguments(); $listener->setArgument(2, null === $defaultEntryPoint ? null : new Reference($defaultEntryPoint));
$arguments[2] = null === $defaultEntryPoint ? null : new Reference($defaultEntryPoint);
// access denied handler setup // access denied handler setup
if (isset($config['access-denied-handler'])) { if (isset($config['access-denied-handler'])) {
$arguments[4] = new Reference($config['access-denied-handler']); $listener->setArgument(4, new Reference($config['access-denied-handler']));
} else if (isset($config['access-denied-url'])) { } else if (isset($config['access-denied-url'])) {
$arguments[3] = $config['access-denied-url']; $listener->setArgument(3, $config['access-denied-url']);
} }
$listener->setArguments($arguments);
return $exceptionListenerId; return $exceptionListenerId;
} }
@ -644,17 +648,15 @@ class SecurityExtension extends Extension
$userProvider = isset($config['provider']) ? $this->getUserProviderId($config['provider']) : $defaultProvider; $userProvider = isset($config['provider']) ? $this->getUserProviderId($config['provider']) : $defaultProvider;
$switchUserListenerId = 'security.authentication.switchuser_listener.'.$id; $switchUserListenerId = 'security.authentication.switchuser_listener.'.$id;
$listener = $container->setDefinition($switchUserListenerId, clone $container->getDefinition('security.authentication.switchuser_listener')); $listener = $container->setDefinition($switchUserListenerId, new DefinitionDecorator('security.authentication.switchuser_listener'));
$arguments = $listener->getArguments(); $listener->setArgument(1, new Reference($userProvider));
$arguments[1] = new Reference($userProvider);
$listener->setArguments($arguments);
if (isset($config['role'])) {
$container->setParameter('security.authentication.switchuser.role', $config['role']);
}
if (isset($config['parameter'])) { if (isset($config['parameter'])) {
$container->setParameter('security.authentication.switchuser.parameter', $config['parameter']); $listener->setArgument(5, $config['parameter']);
}
if (isset($config['role'])) {
$listener->setArgument(6, $config['role']);
} }
return $switchUserListenerId; return $switchUserListenerId;

View File

@ -22,65 +22,11 @@
<parameter key="security.authentication.trust_resolver.anonymous_class">Symfony\Component\Security\Core\Authentication\Token\AnonymousToken</parameter> <parameter key="security.authentication.trust_resolver.anonymous_class">Symfony\Component\Security\Core\Authentication\Token\AnonymousToken</parameter>
<parameter key="security.authentication.trust_resolver.rememberme_class">Symfony\Component\Security\Core\Authentication\Token\RememberMeToken</parameter> <parameter key="security.authentication.trust_resolver.rememberme_class">Symfony\Component\Security\Core\Authentication\Token\RememberMeToken</parameter>
<parameter key="security.authentication.provider.dao.class">Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider</parameter>
<parameter key="security.authentication.provider.pre_authenticated.class">Symfony\Component\Security\Core\Authentication\Provider\PreAuthenticatedAuthenticationProvider</parameter>
<parameter key="security.authentication.provider.rememberme.class">Symfony\Component\Security\Core\Authentication\Provider\RememberMeAuthenticationProvider</parameter>
<parameter key="security.authentication.manager.class">Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager</parameter> <parameter key="security.authentication.manager.class">Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager</parameter>
<parameter key="security.authentication.retry_entry_point.class">Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint</parameter>
<parameter key="security.authentication.session_strategy.class">Symfony\Component\Security\Http\Session\SessionAuthenticationStrategy</parameter> <parameter key="security.authentication.session_strategy.class">Symfony\Component\Security\Http\Session\SessionAuthenticationStrategy</parameter>
<parameter key="security.authentication.session_strategy.strategy">migrate</parameter> <parameter key="security.authentication.session_strategy.strategy">migrate</parameter>
<parameter key="security.authentication.form_entry_point.class">Symfony\Component\Security\Http\EntryPoint\FormAuthenticationEntryPoint</parameter>
<parameter key="security.authentication.listener.form.class">Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener</parameter>
<parameter key="security.authentication.form.options" type="collection" />
<parameter key="security.authentication.basic_entry_point.class">Symfony\Component\Security\Http\EntryPoint\BasicAuthenticationEntryPoint</parameter>
<parameter key="security.authentication.basic_entry_point.realm">Symfony2</parameter>
<parameter key="security.authentication.digest_entry_point.class">Symfony\Component\Security\Http\EntryPoint\DigestAuthenticationEntryPoint</parameter>
<parameter key="security.authentication.digest_entry_point.realm">Symfony2</parameter>
<parameter key="security.authentication.digest_entry_point.key">SomethingUnique</parameter>
<parameter key="security.authentication.listener.x509.class">Symfony\Component\Security\Http\Firewall\X509AuthenticationListener</parameter>
<parameter key="security.authentication.x509.user">SSL_CLIENT_S_DN_Email</parameter>
<parameter key="security.authentication.x509.credentials">SSL_CLIENT_S_DN</parameter>
<parameter key="security.authentication.listener.basic.class">Symfony\Component\Security\Http\Firewall\BasicAuthenticationListener</parameter>
<parameter key="security.authentication.listener.digest.class">Symfony\Component\Security\Http\Firewall\DigestAuthenticationListener</parameter>
<parameter key="security.authentication.listener.anonymous.class">Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener</parameter>
<parameter key="security.authentication.provider.anonymous">Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider</parameter>
<parameter key="security.anonymous.key">SomeRandomValue</parameter>
<parameter key="security.authentication.listener.rememberme.class">Symfony\Component\Security\Http\Firewall\RememberMeListener</parameter>
<parameter key="security.rembemerme.token.provider.in_memory.class">Symfony\Component\Security\Core\Authentication\RememberMe\InMemoryTokenProvider</parameter>
<parameter key="security.authentication.rememberme.services.persistent.class">Symfony\Component\Security\Http\RememberMe\PersistentTokenBasedRememberMeServices</parameter>
<parameter key="security.authentication.rememberme.services.simplehash.class">Symfony\Component\Security\Http\RememberMe\TokenBasedRememberMeServices</parameter>
<parameter key="security.authentication.rememberme.services.options.name">SYMFONY_REMEMBERME</parameter>
<parameter key="security.authentication.rememberme.services.options.lifetime">31536000</parameter>
<parameter key="security.authentication.rememberme.services.options.path">/</parameter>
<parameter key="security.authentication.rememberme.services.options.domain" />
<parameter key="security.authentication.rememberme.services.options.secure">false</parameter>
<parameter key="security.authentication.rememberme.services.options.httponly">true</parameter>
<parameter key="security.authentication.rememberme.services.options.always_remember_me">false</parameter>
<parameter key="security.authentication.rememberme.services.options.remember_me_parameter">_remember_me</parameter>
<parameter key="security.channel_listener.class">Symfony\Component\Security\Http\Firewall\ChannelListener</parameter>
<parameter key="security.logout_listener.class">Symfony\Component\Security\Http\Firewall\LogoutListener</parameter>
<parameter key="security.logout.path">/logout</parameter>
<parameter key="security.logout.target_path">/</parameter>
<parameter key="security.logout.handler.session.class">Symfony\Component\Security\Http\Logout\SessionLogoutHandler</parameter>
<parameter key="security.logout.handler.cookie_clearing.class">Symfony\Component\Security\Http\Logout\CookieClearingLogoutHandler</parameter>
<parameter key="security.authentication.switchuser_listener.class">Symfony\Component\Security\Http\Firewall\SwitchUserListener</parameter>
<parameter key="security.authentication.switchuser.role">ROLE_ALLOWED_TO_SWITCH</parameter>
<parameter key="security.authentication.switchuser.parameter">_switch_user</parameter>
<parameter key="security.access.decision_manager.class">Symfony\Component\Security\Core\Authorization\AccessDecisionManager</parameter> <parameter key="security.access.decision_manager.class">Symfony\Component\Security\Core\Authorization\AccessDecisionManager</parameter>
<parameter key="security.access.decision_manager.strategy">affirmative</parameter> <parameter key="security.access.decision_manager.strategy">affirmative</parameter>
<parameter key="security.access.decision_manager.allow_if_all_abstain">false</parameter> <parameter key="security.access.decision_manager.allow_if_all_abstain">false</parameter>
@ -92,10 +38,6 @@
<parameter key="security.access.authenticated_voter.class">Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter</parameter> <parameter key="security.access.authenticated_voter.class">Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter</parameter>
<parameter key="security.access.role_hierarchy_voter.class">Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter</parameter> <parameter key="security.access.role_hierarchy_voter.class">Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter</parameter>
<parameter key="security.access_listener.class">Symfony\Component\Security\Http\Firewall\AccessListener</parameter>
<parameter key="security.access_map.class">Symfony\Component\Security\Http\AccessMap</parameter>
<parameter key="security.exception_listener.class">Symfony\Component\Security\Http\Firewall\ExceptionListener</parameter>
<parameter key="security.context_listener.class">Symfony\Component\Security\Http\Firewall\ContextListener</parameter>
<parameter key="security.firewall.class">Symfony\Component\Security\Http\Firewall</parameter> <parameter key="security.firewall.class">Symfony\Component\Security\Http\Firewall</parameter>
<parameter key="security.firewall.map.class">Symfony\Bundle\SecurityBundle\Security\FirewallMap</parameter> <parameter key="security.firewall.map.class">Symfony\Bundle\SecurityBundle\Security\FirewallMap</parameter>
<parameter key="security.firewall.context.class">Symfony\Bundle\SecurityBundle\Security\FirewallContext</parameter> <parameter key="security.firewall.context.class">Symfony\Bundle\SecurityBundle\Security\FirewallContext</parameter>
@ -111,35 +53,11 @@
<argument>%security.context.always_authenticate%</argument> <argument>%security.context.always_authenticate%</argument>
</service> </service>
<service id="security.role_hierarchy" class="%security.role_hierarchy.class%" public="false"> <!-- Authentication related services -->
<argument>%security.role_hierarchy.roles%</argument>
</service>
<service id="security.account_checker" class="%security.account_checker.class%" public="false" />
<service id="security.encoder_factory.generic" class="%security.encoder_factory.generic.class%" public="false">
<argument type="collection"></argument>
</service>
<service id="security.encoder_factory" alias="security.encoder_factory.generic"></service>
<service id="security.logout.handler.session" class="%security.logout.handler.session.class%" public="false"></service>
<service id="security.authentication.listener.anonymous" class="%security.authentication.listener.anonymous.class%" public="false">
<argument type="service" id="security.context" />
<argument>%security.anonymous.key%</argument>
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.manager" class="%security.authentication.manager.class%" public="false"> <service id="security.authentication.manager" class="%security.authentication.manager.class%" public="false">
<argument type="collection" /> <argument type="collection" />
</service> </service>
<service id="security.authentication.provider.anonymous" class="%security.authentication.provider.anonymous%" public="false">
<argument>%security.anonymous.key%</argument>
<tag name="security.authentication_provider" />
</service>
<service id="security.authentication.trust_resolver" class="%security.authentication.trust_resolver.class%" public="false"> <service id="security.authentication.trust_resolver" class="%security.authentication.trust_resolver.class%" public="false">
<argument>%security.authentication.trust_resolver.anonymous_class%</argument> <argument>%security.authentication.trust_resolver.anonymous_class%</argument>
<argument>%security.authentication.trust_resolver.rememberme_class%</argument> <argument>%security.authentication.trust_resolver.rememberme_class%</argument>
@ -148,45 +66,45 @@
<service id="security.authentication.session_strategy" class="%security.authentication.session_strategy.class%" public="false"> <service id="security.authentication.session_strategy" class="%security.authentication.session_strategy.class%" public="false">
<argument>%security.authentication.session_strategy.strategy%</argument> <argument>%security.authentication.session_strategy.strategy%</argument>
</service> </service>
<service id="security.rememberme.token.provider.in_memory" class="%security.rembemerme.token.provider.in_memory.class%" public="false"></service>
<service id="security.authentication.retry_entry_point" class="%security.authentication.retry_entry_point.class%" public="false" /> <service id="security.encoder_factory.generic" class="%security.encoder_factory.generic.class%" public="false">
<argument type="collection"></argument>
<service id="security.authentication.basic_entry_point" class="%security.authentication.basic_entry_point.class%" public="false">
<argument>%security.authentication.basic_entry_point.realm%</argument>
</service> </service>
<service id="security.encoder_factory" alias="security.encoder_factory.generic"></service>
<service id="security.account_checker" class="%security.account_checker.class%" public="false" />
<service id="security.authentication.digest_entry_point" class="%security.authentication.digest_entry_point.class%" public="false">
<argument>%security.authentication.digest_entry_point.realm%</argument>
<argument>%security.authentication.digest_entry_point.key%</argument>
</service>
<service id="security.channel_listener" class="%security.channel_listener.class%" public="false">
<argument type="service" id="security.access_map" />
<argument type="service" id="security.authentication.retry_entry_point" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<!-- Authorization related services -->
<service id="security.access.decision_manager" class="%security.access.decision_manager.class%" public="false"> <service id="security.access.decision_manager" class="%security.access.decision_manager.class%" public="false">
<argument type="collection"></argument> <argument type="collection"></argument>
<argument>%security.access.decision_manager.strategy%</argument> <argument>%security.access.decision_manager.strategy%</argument>
<argument>%security.access.decision_manager.allow_if_all_abstain%</argument> <argument>%security.access.decision_manager.allow_if_all_abstain%</argument>
<argument>%security.access.decision_manager.allow_if_equal_granted_denied%</argument> <argument>%security.access.decision_manager.allow_if_equal_granted_denied%</argument>
</service> </service>
<service id="security.access_map" class="%security.access_map.class%" public="false" />
<service id="security.role_hierarchy" class="%security.role_hierarchy.class%" public="false">
<argument>%security.role_hierarchy.roles%</argument>
</service>
<!-- Security Voters -->
<service id="security.access.simple_role_voter" class="%security.access.simple_role_voter.class%" public="false"> <service id="security.access.simple_role_voter" class="%security.access.simple_role_voter.class%" public="false">
<tag name="security.voter" /> <tag name="security.voter" />
</service> </service>
<service id="security.access.authenticated_voter" class="%security.access.authenticated_voter.class%" public="false"> <service id="security.access.authenticated_voter" class="%security.access.authenticated_voter.class%" public="false">
<argument type="service" id="security.authentication.trust_resolver" /> <argument type="service" id="security.authentication.trust_resolver" />
<tag name="security.voter" /> <tag name="security.voter" />
</service> </service>
<service id="security.access.role_hierarchy_voter" class="%security.access.role_hierarchy_voter.class%" public="false"> <service id="security.access.role_hierarchy_voter" class="%security.access.role_hierarchy_voter.class%" public="false">
<argument type="service" id="security.role_hierarchy" /> <argument type="service" id="security.role_hierarchy" />
</service> </service>
<!-- Firewall related services -->
<service id="security.firewall" class="%security.firewall.class%"> <service id="security.firewall" class="%security.firewall.class%">
<tag name="kernel.listener" event="core.request" method="handle" priority="-128" /> <tag name="kernel.listener" event="core.request" method="handle" priority="-128" />
<argument type="service" id="security.firewall.map" /> <argument type="service" id="security.firewall.map" />
@ -198,11 +116,9 @@
<argument type="collection" /> <argument type="collection" />
</service> </service>
<service id="security.context_listener" class="%security.context_listener.class%" public="false"> <service id="security.firewall.context" class="%security.firewall.context.class%" abstract="true">
<argument type="service" id="security.context" /> <argument type="collection" />
<argument type="collection"></argument> <argument type="service" id="security.exception_listener" />
<argument /> </service>
<argument type="service" id="logger" on-invalid="null" />
</service>
</services> </services>
</container> </container>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" ?>
<container xmlns="http://www.symfony-project.org/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd">
<services>
<service id="security.authentication.factory.form" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\FormLoginFactory">
<tag name="security.listener.factory" />
</service>
<service id="security.authentication.factory.x509" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\X509Factory">
<tag name="security.listener.factory" />
</service>
<service id="security.authentication.factory.basic" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\HttpBasicFactory">
<tag name="security.listener.factory" />
</service>
<service id="security.authentication.factory.digest" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\HttpDigestFactory">
<tag name="security.listener.factory" />
</service>
<service id="security.authentication.factory.remember_me" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\RememberMeFactory">
<tag name="security.listener.factory" />
</service>
</services>
</container>

View File

@ -0,0 +1,181 @@
<?xml version="1.0" ?>
<container xmlns="http://www.symfony-project.org/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="security.authentication.retry_entry_point.class">Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint</parameter>
<parameter key="security.channel_listener.class">Symfony\Component\Security\Http\Firewall\ChannelListener</parameter>
<parameter key="security.authentication.form_entry_point.class">Symfony\Component\Security\Http\EntryPoint\FormAuthenticationEntryPoint</parameter>
<parameter key="security.authentication.listener.form.class">Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener</parameter>
<parameter key="security.authentication.listener.basic.class">Symfony\Component\Security\Http\Firewall\BasicAuthenticationListener</parameter>
<parameter key="security.authentication.basic_entry_point.class">Symfony\Component\Security\Http\EntryPoint\BasicAuthenticationEntryPoint</parameter>
<parameter key="security.authentication.basic_entry_point.realm">Symfony2</parameter>
<parameter key="security.authentication.listener.digest.class">Symfony\Component\Security\Http\Firewall\DigestAuthenticationListener</parameter>
<parameter key="security.authentication.digest_entry_point.class">Symfony\Component\Security\Http\EntryPoint\DigestAuthenticationEntryPoint</parameter>
<parameter key="security.authentication.digest_entry_point.realm">Symfony2</parameter>
<parameter key="security.authentication.digest_entry_point.key">SomethingUnique</parameter>
<parameter key="security.authentication.listener.x509.class">Symfony\Component\Security\Http\Firewall\X509AuthenticationListener</parameter>
<parameter key="security.authentication.x509.user">SSL_CLIENT_S_DN_Email</parameter>
<parameter key="security.authentication.x509.credentials">SSL_CLIENT_S_DN</parameter>
<parameter key="security.authentication.listener.anonymous.class">Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener</parameter>
<parameter key="security.authentication.switchuser_listener.class">Symfony\Component\Security\Http\Firewall\SwitchUserListener</parameter>
<parameter key="security.authentication.switchuser.role">ROLE_ALLOWED_TO_SWITCH</parameter>
<parameter key="security.authentication.switchuser.parameter">_switch_user</parameter>
<parameter key="security.logout_listener.class">Symfony\Component\Security\Http\Firewall\LogoutListener</parameter>
<parameter key="security.logout.path">/logout</parameter>
<parameter key="security.logout.target_path">/</parameter>
<parameter key="security.logout.handler.session.class">Symfony\Component\Security\Http\Logout\SessionLogoutHandler</parameter>
<parameter key="security.logout.handler.cookie_clearing.class">Symfony\Component\Security\Http\Logout\CookieClearingLogoutHandler</parameter>
<parameter key="security.access_listener.class">Symfony\Component\Security\Http\Firewall\AccessListener</parameter>
<parameter key="security.access_map.class">Symfony\Component\Security\Http\AccessMap</parameter>
<parameter key="security.exception_listener.class">Symfony\Component\Security\Http\Firewall\ExceptionListener</parameter>
<parameter key="security.context_listener.class">Symfony\Component\Security\Http\Firewall\ContextListener</parameter>
<parameter key="security.authentication.provider.dao.class">Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider</parameter>
<parameter key="security.authentication.provider.pre_authenticated.class">Symfony\Component\Security\Core\Authentication\Provider\PreAuthenticatedAuthenticationProvider</parameter>
<parameter key="security.authentication.provider.anonymous">Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider</parameter>
<parameter key="security.anonymous.key">SomeRandomValue</parameter>
</parameters>
<services>
<service id="security.authentication.listener.anonymous" class="%security.authentication.listener.anonymous.class%" public="false">
<argument type="service" id="security.context" />
<argument>%security.anonymous.key%</argument>
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.provider.anonymous" class="%security.authentication.provider.anonymous%" public="false">
<argument>%security.anonymous.key%</argument>
<tag name="security.authentication_provider" />
</service>
<service id="security.authentication.retry_entry_point" class="%security.authentication.retry_entry_point.class%" public="false" />
<service id="security.authentication.basic_entry_point" class="%security.authentication.basic_entry_point.class%" public="false">
<argument>%security.authentication.basic_entry_point.realm%</argument>
</service>
<service id="security.authentication.digest_entry_point" class="%security.authentication.digest_entry_point.class%" public="false">
<argument>%security.authentication.digest_entry_point.realm%</argument>
<argument>%security.authentication.digest_entry_point.key%</argument>
</service>
<service id="security.channel_listener" class="%security.channel_listener.class%" public="false">
<argument type="service" id="security.access_map" />
<argument type="service" id="security.authentication.retry_entry_point" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.access_map" class="%security.access_map.class%" public="false" />
<service id="security.context_listener" class="%security.context_listener.class%" public="false">
<argument type="service" id="security.context" />
<argument type="collection"></argument>
<argument />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.logout_listener" class="%security.logout_listener.class%" public="false" abstract="true">
<argument type="service" id="security.context" />
<argument>%security.logout.path%</argument>
<argument>%security.logout.target_path%</argument>
</service>
<service id="security.logout.handler.session" class="%security.logout.handler.session.class%" public="false" />
<service id="security.logout.handler.cookie_clearing" class="%security.logout.handler.cookie_clearing.class%" public="false" abstract="true" />
<service id="security.authentication.form_entry_point" class="%security.authentication.form_entry_point.class%" public="false" abstract="true" />
<service id="security.authentication.listener.abstract" abstract="true" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.manager" />
<argument type="service" id="security.authentication.session_strategy" />
<argument />
<argument type="collection"></argument>
<argument type="service" id="security.authentication.success_handler" on-invalid="null" />
<argument type="service" id="security.authentication.failure_handler" on-invalid="null" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.listener.form"
class="%security.authentication.listener.form.class%"
parent="security.authentication.listener.abstract"
abstract="true">
</service>
<service id="security.authentication.listener.x509" class="%security.authentication.listener.x509.class%" public="false" abstract="true">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.manager" />
<argument />
<argument>%security.authentication.x509.user%</argument>
<argument>%security.authentication.x509.credentials%</argument>
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.listener.basic" class="%security.authentication.listener.basic.class%" public="false" abstract="true">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.manager" />
<argument></argument>
<argument type="service" id="security.authentication.basic_entry_point" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.listener.digest" class="%security.authentication.listener.digest.class%" public="false" abstract="true">
<argument type="service" id="security.context" />
<argument type="service" id="security.user.provider.in_memory" />
<argument></argument>
<argument type="service" id="security.authentication.digest_entry_point" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.provider.dao" class="%security.authentication.provider.dao.class%" abstract="true" public="false">
<argument /> <!-- User Provider -->
<argument type="service" id="security.account_checker" />
<argument /> <!-- Provider-shared Key -->
<argument type="service" id="security.encoder_factory" />
</service>
<service id="security.authentication.provider.pre_authenticated" class="%security.authentication.provider.pre_authenticated.class%" abstract="true" public="false">
<argument /> <!-- User Provider -->
<argument type="service" id="security.account_checker" />
</service>
<service id="security.exception_listener" class="%security.exception_listener.class%" public="false" abstract="true">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.trust_resolver" />
<argument type="service" id="security.authentication.entry_point" on-invalid="null" />
<argument>%security.access.denied_url%</argument>
<argument type="service" id="security.access.denied_handler" on-invalid="null" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.switchuser_listener" class="%security.authentication.switchuser_listener.class%" public="false" abstract="true">
<argument type="service" id="security.context" />
<argument type="service" id="security.user.provider.in_memory" />
<argument type="service" id="security.account_checker" />
<argument type="service" id="security.access.decision_manager" />
<argument type="service" id="logger" on-invalid="null" />
<argument>%security.authentication.switchuser.parameter%</argument>
<argument>%security.authentication.switchuser.role%</argument>
</service>
<service id="security.access_listener" class="%security.access_listener.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.access.decision_manager" />
<argument type="service" id="security.access_map" />
<argument type="service" id="security.authentication.manager" />
<argument type="service" id="logger" on-invalid="null" />
</service>
</services>
</container>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" ?>
<container xmlns="http://www.symfony-project.org/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="security.authentication.provider.rememberme.class">Symfony\Component\Security\Core\Authentication\Provider\RememberMeAuthenticationProvider</parameter>
<parameter key="security.authentication.listener.rememberme.class">Symfony\Component\Security\Http\Firewall\RememberMeListener</parameter>
<parameter key="security.rembemerme.token.provider.in_memory.class">Symfony\Component\Security\Core\Authentication\RememberMe\InMemoryTokenProvider</parameter>
<parameter key="security.authentication.rememberme.services.persistent.class">Symfony\Component\Security\Http\RememberMe\PersistentTokenBasedRememberMeServices</parameter>
<parameter key="security.authentication.rememberme.services.simplehash.class">Symfony\Component\Security\Http\RememberMe\TokenBasedRememberMeServices</parameter>
</parameters>
<services>
<service id="security.authentication.listener.rememberme" class="%security.authentication.listener.rememberme.class%" public="false" abstract="true">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.rememberme" />
<argument type="service" id="security.authentication.manager" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.provider.rememberme" class="%security.authentication.provider.rememberme.class%" abstract="true" public="false">
<argument type="service" id="security.account_checker" />
</service>
<service id="security.rememberme.token.provider.in_memory" class="%security.rembemerme.token.provider.in_memory.class%" public="false"></service>
<service id="security.authentication.rememberme.services.abstract" abstract="true" public="false">
<argument type="collection" /> <!-- User Providers -->
<argument /> <!-- Shared Token Key -->
<argument /> <!-- Shared Provider Key -->
<argument type="collection" /> <!-- Options -->
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.rememberme.services.persistent"
class="%security.authentication.rememberme.services.persistent.class%"
parent="security.authentication.rememberme.services.abstract"
abstract="true">
</service>
<service id="security.authentication.rememberme.services.simplehash"
class="%security.authentication.rememberme.services.simplehash.class%"
parent="security.authentication.rememberme.services.abstract"
abstract="true">
</service>
</services>
</container>

View File

@ -1,153 +0,0 @@
<?xml version="1.0" ?>
<container xmlns="http://www.symfony-project.org/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd">
<services>
<service id="security.authentication.factory.form" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\FormLoginFactory" public="false">
<tag name="security.listener.factory" />
</service>
<service id="security.authentication.factory.x509" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\X509Factory" public="false">
<tag name="security.listener.factory" />
</service>
<service id="security.authentication.factory.basic" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\HttpBasicFactory" public="false">
<tag name="security.listener.factory" />
</service>
<service id="security.authentication.factory.digest" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\HttpDigestFactory" public="false">
<tag name="security.listener.factory" />
</service>
<service id="security.authentication.factory.remember_me" class="Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\RememberMeFactory" public="false">
<tag name="security.listener.factory" />
</service>
<service id="security.logout_listener" class="%security.logout_listener.class%" public="false">
<argument type="service" id="security.context" />
<argument>%security.logout.path%</argument>
<argument>%security.logout.target_path%</argument>
</service>
<service id="security.logout.handler.cookie_clearing" class="%security.logout.handler.cookie_clearing.class%" public="false">
<argument type="collection"></argument>
</service>
<service id="security.authentication.form_entry_point" class="%security.authentication.form_entry_point.class%" public="false">
<argument/>
<argument/>
</service>
<service id="security.authentication.listener.form" class="%security.authentication.listener.form.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.manager" />
<argument type="service" id="security.authentication.session_strategy" />
<argument />
<argument type="collection"></argument>
<argument type="service" id="security.authentication.success_handler" on-invalid="null" />
<argument type="service" id="security.authentication.failure_handler" on-invalid="null" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.listener.rememberme" class="%security.authentication.listener.rememberme.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.rememberme" />
<argument type="service" id="security.authentication.manager" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.listener.x509" class="%security.authentication.listener.x509.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.manager" />
<argument />
<argument>%security.authentication.x509.user%</argument>
<argument>%security.authentication.x509.credentials%</argument>
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.listener.basic" class="%security.authentication.listener.basic.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.manager" />
<argument></argument>
<argument type="service" id="security.authentication.basic_entry_point" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.listener.digest" class="%security.authentication.listener.digest.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.user.provider.in_memory" />
<argument></argument>
<argument type="service" id="security.authentication.digest_entry_point" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.rememberme.services.simplehash" class="%security.authentication.rememberme.services.simplehash.class%" public="false">
<argument type="collection" />
<argument />
<argument />
<argument type="collection">
<argument key="name">%security.authentication.rememberme.services.options.name%</argument>
<argument key="lifetime">%security.authentication.rememberme.services.options.lifetime%</argument>
<argument key="path">%security.authentication.rememberme.services.options.path%</argument>
<argument key="domain">%security.authentication.rememberme.services.options.domain%</argument>
<argument key="secure">%security.authentication.rememberme.services.options.secure%</argument>
<argument key="httponly">%security.authentication.rememberme.services.options.httponly%</argument>
<argument key="always_remember_me">%security.authentication.rememberme.services.options.always_remember_me%</argument>
<argument key="remember_me_parameter">%security.authentication.rememberme.services.options.remember_me_parameter%</argument>
</argument>
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.rememberme.services.persistent" class="%security.authentication.rememberme.services.persistent.class%" public="false">
<argument type="collection" />
<argument />
<argument />
<argument type="collection">
<argument key="name">%security.authentication.rememberme.services.options.name%</argument>
<argument key="lifetime">%security.authentication.rememberme.services.options.lifetime%</argument>
<argument key="path">%security.authentication.rememberme.services.options.path%</argument>
<argument key="domain">%security.authentication.rememberme.services.options.domain%</argument>
<argument key="secure">%security.authentication.rememberme.services.options.secure%</argument>
<argument key="httponly">%security.authentication.rememberme.services.options.httponly%</argument>
<argument key="always_remember_me">%security.authentication.rememberme.services.options.always_remember_me%</argument>
<argument key="remember_me_parameter">%security.authentication.rememberme.services.options.remember_me_parameter%</argument>
</argument>
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.exception_listener" class="%security.exception_listener.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.authentication.trust_resolver" />
<argument type="service" id="security.authentication.entry_point" on-invalid="null" />
<argument>%security.access.denied_url%</argument>
<argument type="service" id="security.access.denied_handler" on-invalid="null" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.authentication.switchuser_listener" class="%security.authentication.switchuser_listener.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.user.provider.in_memory" />
<argument type="service" id="security.account_checker" />
<argument type="service" id="security.access.decision_manager" />
<argument type="service" id="logger" on-invalid="null" />
<argument>%security.authentication.switchuser.parameter%</argument>
<argument>%security.authentication.switchuser.role%</argument>
</service>
<service id="security.access_listener" class="%security.access_listener.class%" public="false">
<argument type="service" id="security.context" />
<argument type="service" id="security.access.decision_manager" />
<argument type="service" id="security.access_map" />
<argument type="service" id="security.authentication.manager" />
<argument type="service" id="logger" on-invalid="null" />
</service>
<service id="security.firewall.context" class="%security.firewall.context.class%" public="false">
<argument type="collection" />
<argument type="service" id="security.exception_listener" />
</service>
</services>
</container>