* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory; use Symfony\Component\Config\Definition\Builder\NodeDefinition; use Symfony\Component\DependencyInjection\ChildDefinition; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; /** * X509Factory creates services for X509 certificate authentication. * * @author Fabien Potencier * * @internal */ class X509Factory implements AuthenticatorFactoryInterface { public const PRIORITY = -10; public function createAuthenticator(ContainerBuilder $container, string $firewallName, array $config, string $userProviderId): string { $authenticatorId = 'security.authenticator.x509.'.$firewallName; $container ->setDefinition($authenticatorId, new ChildDefinition('security.authenticator.x509')) ->replaceArgument(0, new Reference($userProviderId)) ->replaceArgument(2, $firewallName) ->replaceArgument(3, $config['user']) ->replaceArgument(4, $config['credentials']) ->replaceArgument(6, $config['user_identifier']) ; return $authenticatorId; } public function getPriority(): int { return self::PRIORITY; } public function getKey(): string { return 'x509'; } public function addConfiguration(NodeDefinition $node): void { $node ->children() ->scalarNode('provider')->end() ->scalarNode('user')->defaultValue('SSL_CLIENT_S_DN_Email')->end() ->scalarNode('credentials')->defaultValue('SSL_CLIENT_S_DN')->end() ->scalarNode('user_identifier')->defaultValue('emailAddress')->end() ->end() ; } }