summaryrefslogtreecommitdiffstats
path: root/Http/Firewall
diff options
context:
space:
mode:
authorFabien Potencier <fabien.potencier@gmail.com>2014-04-22 10:11:23 +0200
committerFabien Potencier <fabien.potencier@gmail.com>2014-04-22 10:11:23 +0200
commit3653a49d805f848c154faa8bbbd663670a5297ec (patch)
treed78e0609597e35cd50b3afac69f120d78453c9cb /Http/Firewall
parentdf77b8aebb4e69fbf9cd862c279d29319713690a (diff)
parent013e84fe863ea6de2f314ae5b813e9fc51aabe55 (diff)
downloadsymfony-security-3653a49d805f848c154faa8bbbd663670a5297ec.zip
symfony-security-3653a49d805f848c154faa8bbbd663670a5297ec.tar.gz
symfony-security-3653a49d805f848c154faa8bbbd663670a5297ec.tar.bz2
Merge branch '2.4'
* 2.4: fix docblock Fixed incompatibility of x509 auth with nginx [Process] Setting STDIN while running should not be possible [Validator] slovenian translation updated [FrameworkBundle] improve English in RouterMatchCommand [Validator] Updated Hungarian translations [Doctrine Bridge] simplify session handler by using main connection [Validator] Fixed typos in German translation [Validator] Completed French translations [Validator] Completed German translations [Validator] Completed Luxembourgish translations
Diffstat (limited to 'Http/Firewall')
-rw-r--r--Http/Firewall/X509AuthenticationListener.php13
1 files changed, 10 insertions, 3 deletions
diff --git a/Http/Firewall/X509AuthenticationListener.php b/Http/Firewall/X509AuthenticationListener.php
index 5aabf75..9c07be1 100644
--- a/Http/Firewall/X509AuthenticationListener.php
+++ b/Http/Firewall/X509AuthenticationListener.php
@@ -41,10 +41,17 @@ class X509AuthenticationListener extends AbstractPreAuthenticatedListener
*/
protected function getPreAuthenticatedData(Request $request)
{
- if (!$request->server->has($this->userKey)) {
- throw new BadCredentialsException(sprintf('SSL key was not found: %s', $this->userKey));
+ $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];
}
- return array($request->server->get($this->userKey), $request->server->get($this->credentialKey, ''));
+ 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, ''));
}
}