Skip to content

Commit

Permalink
[SecurityBundle] made the anonymous key parameter configurable and ra…
Browse files Browse the repository at this point in the history
…ndom by default
  • Loading branch information
fabpot committed Mar 16, 2011
1 parent e0df94c commit 2cf0601
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 8 deletions.
Expand Up @@ -156,7 +156,9 @@ private function addFirewallsSection($rootNode, array $factories)
->prototype('scalar')->end()
->end()
->end()
->booleanNode('anonymous')->defaultFalse()->end()
->arrayNode('anonymous')
->scalarNode('key')->defaultValue(function () { return uniqid(); })->end()

This comment has been minimized.

Copy link
@fabpot

fabpot Mar 16, 2011

Author Member

hehe, sometimes things can be much easier that they seem to be. I will update the code.

->end()
->arrayNode('switch_user')
->scalarNode('provider')->end()
->scalarNode('parameter')->defaultValue('_switch_user')->end()
Expand Down
Expand Up @@ -345,9 +345,22 @@ private function createAuthenticationListeners($container, $id, $firewall, &$aut
}

// Anonymous
if ($firewall['anonymous']) {
$listeners[] = new Reference('security.authentication.listener.anonymous');
$authenticationProviders[] = 'security.authentication.provider.anonymous';
if (isset($firewall['anonymous'])) {
$listenerId = 'security.authentication.listener.anonymous.'.$id;
$container
->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.anonymous'))
->setArgument(1, $firewall['anonymous']['key'])
;

$listeners[] = new Reference($listenerId);

$providerId = 'security.authentication.provider.anonymous.'.$id;
$container
->setDefinition($providerId, new DefinitionDecorator('security.authentication.provider.anonymous'))
->setArgument(0, $firewall['anonymous']['key'])
;

$authenticationProviders[] = $providerId;
$hasListeners = true;
}

Expand Down
Expand Up @@ -37,18 +37,17 @@
<parameter key="security.authentication.provider.pre_authenticated.class">Symfony\Component\Security\Core\Authentication\Provider\PreAuthenticatedAuthenticationProvider</parameter>

<parameter key="security.authentication.provider.anonymous.class">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 /> <!-- Key -->
<argument type="service" id="logger" on-invalid="null" />
</service>

<service id="security.authentication.provider.anonymous" class="%security.authentication.provider.anonymous.class%" public="false">
<argument>%security.anonymous.key%</argument>
<argument /> <!-- Key -->
</service>

<service id="security.authentication.retry_entry_point" class="%security.authentication.retry_entry_point.class%" public="false" />
Expand Down
Expand Up @@ -83,7 +83,7 @@ public function testFirewalls()
'security.authentication.listener.form.secure',
'security.authentication.listener.basic.secure',
'security.authentication.listener.digest.secure',
'security.authentication.listener.anonymous',
'security.authentication.listener.anonymous.secure',
'security.access_listener',
'security.authentication.switchuser_listener.secure',
),
Expand Down

0 comments on commit 2cf0601

Please sign in to comment.