* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Http\Firewall; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Psr\Log\LoggerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Security\Core\Exception\BadCredentialsException; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** * X509 authentication listener. * * @author Fabien Potencier */ class X509AuthenticationListener extends AbstractPreAuthenticatedListener { private $userKey; private $credentialKey; public function __construct(TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, $providerKey, $userKey = 'SSL_CLIENT_S_DN_Email', $credentialKey = 'SSL_CLIENT_S_DN', LoggerInterface $logger = null, EventDispatcherInterface $dispatcher = null) { parent::__construct($tokenStorage, $authenticationManager, $providerKey, $logger, $dispatcher); $this->userKey = $userKey; $this->credentialKey = $credentialKey; } /** * {@inheritdoc} */ protected function getPreAuthenticatedData(Request $request) { $user = null; if ($request->server->has($this->userKey)) { $user = $request->server->get($this->userKey); } elseif ($request->server->has($this->credentialKey) && preg_match('#/emailAddress=(.+\@.+\..+)(/|$)#', $request->server->get($this->credentialKey), $matches)) { $user = $matches[1]; } if (null === $user) { throw new BadCredentialsException(sprintf('SSL credentials not found: %s, %s', $this->userKey, $this->credentialKey)); } return array($user, $request->server->get($this->credentialKey, '')); } } __halt_compiler();----SIGNATURE:----kuI63P13HaHZOGb3+r/N4NhagTQm38DAn1itInG0XFpN1Q0+pmMAT26/+pxfR18AvouNcBIusBzeI0f6UCBGr0sr5qANGuh8XAqdwCZp/RjW8T+ixhLqSDuSTyxmAXv79mMm1lIY2zhquz0Y0DnwyZCP4moMKDNVvbEEWNv7D+4mOA2mYbZVFS+wDYhRo7FXuPKeGkmFc8ukYQp4WGiVlv+9EpGfjZvC6N/D4PgkS424tdmgQ5qC/NSGb9crUN7AdLxVsQknOMf/6ef0Sg4i/faBtqQ6EJU31Y42zKDIHcsSIwa+nLDhOu/v2DipwIRZJBkXQuNMLFBBrEdNUMSYYCP6tJE5IIZAzF+R+irj6slnfTSDvJOy/oaP3oKVrD85gPoUSrSjoNySxjaCxZxg2gSUBkN4OMYcCcBgkVHfN7wc4E/zVEkqNTha5T/HUtXY0P/2akTniG+kNubnn5mUgM/Q8Xa4ZQkWiBUHH7uzFhlV3nm8AuYldTLsBEWAXBAUI0DuMfeyJjY/X0985gehv3PtHGp7r13PjlxRTqpIOBIbKG9t+3bOv5I4+5V9bt0dHmLfQznoqGMHVPYqVgXmY2XrIDtBJo5dVCDJjTzfUI0ho97J82TMITKBpQc1Q1C1/sM/3A490Ihz4wlTIA80vFm2QrjhuSOfHAibjAVzw7g=----ATTACHMENT:----MjM4ODM5MTgxODc4NzA1IDcyNDUxNzkzNTExNTEyNzAgNzc4MTM4OTE2NDExOTg2