Bonjour,
J'essaie de mettre en place un bundle d'authentification correspondant à la politique de sécurité de ma boite.
Pour ce faire, j'ai mis en place ce qui est définit dans les Howto "create au custom user provider" et "create a custom authentication provider" et je dois dire que j'ai bien du mal à m'en sortir.
En particulier, lorsque je lance mon appli, je récupère un message :
RuntimeException: The parent definition "accessmaster.security.authentication.provider" defined for definition "security.authentication.provider.accessmaster.accessmaster_secured" does not exist.
Ce message d'erreur n'est pas très clair pour moi.

Apparemment, accessmaster_secured est le nom du firewall définit dans /app/config.security.yml

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
security:
# ...
 
    factories:
        - "%kernel.root_dir%/../src/Cnamts/SecurityBundle/Resources/config/security_factories.yml"
 
# ...
 
    firewalls:
        accessmaster_secured:
            pattern:    ^/
            accessmaster: true
Cette erreur à l'air de venir de ma SecurityFactory mais je n'ai pas trouvé dans les différents tutos que j'ai regardé d'informations claires à ce sujet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
// src/Acme/SecurityBundle/DependencyInjection/Security/Factory/AccessMasterFactory.php
namespace Acme\SecurityBundle\DependencyInjection\Security\Factory;
 
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\SecurityFactoryInterface;
 
class AccessMasterFactory implements SecurityFactoryInterface
{
 
    public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
    {
        $providerId = 'security.authentication.provider.accessmaster.'.$id;
        $container->setDefinition($providerId, new DefinitionDecorator('accessmaster.security.authentication.provider'))
                  ->replaceArgument(0, new Reference($userProvider));
        $listenerId = 'security.authentication.listener.accessmaster.'.$id;
        $listener = $container->setDefinition($listenerId, new
            DefinitionDecorator('accessmaster.security.authentication.listener'));
        return array($providerId, $listenerId, $defaultEntryPoint);
    }
// ...
    public function getKey()
    {
        return 'accessmaster';
    }
// ...
}
Merci pour votre aide.