From e7376611736512211789663cb7ecb98f5a05edcb Mon Sep 17 00:00:00 2001 From: Xavier HAUSHERR Date: Thu, 22 Aug 2013 15:12:32 +0200 Subject: [PATCH 1/5] clearToken exception is thrown at wrong place. --- .../Http/Firewall/AbstractPreAuthenticatedListener.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php index e248c6de5e19c..4a6ac900e56cf 100644 --- a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php @@ -92,6 +92,10 @@ final public function handle(GetResponseEvent $event) } } catch (AuthenticationException $failed) { $this->clearToken(); + + if (null !== $this->logger) { + $this->logger->info(sprintf("Cleared security context due to exception: %s", $failed->getMessage())); + } } } @@ -103,10 +107,6 @@ protected function clearToken() $token = $this->securityContext->getToken(); if ($token instanceof PreAuthenticatedToken && $this->providerKey === $token->getProviderKey()) { $this->securityContext->setToken(null); - - if (null !== $this->logger) { - $this->logger->info(sprintf("Cleared security context due to exception: %s", $failed->getMessage())); - } } } From b52a5901c784fffd2d81dcbfc8eba713a2a4ffda Mon Sep 17 00:00:00 2001 From: Xavier HAUSHERR Date: Thu, 22 Aug 2013 16:33:04 +0200 Subject: [PATCH 2/5] Refactor clearToken to log correctly the Authentication Exception --- .../AbstractPreAuthenticatedListener.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php index 4a6ac900e56cf..03ebc390dbb36 100644 --- a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php @@ -63,7 +63,7 @@ final public function handle(GetResponseEvent $event) try { list($user, $credentials) = $this->getPreAuthenticatedData($request); } catch (BadCredentialsException $exception) { - $this->clearToken(); + $this->clearToken($exception); return; } @@ -91,23 +91,25 @@ final public function handle(GetResponseEvent $event) $this->dispatcher->dispatch(SecurityEvents::INTERACTIVE_LOGIN, $loginEvent); } } catch (AuthenticationException $failed) { - $this->clearToken(); - - if (null !== $this->logger) { - $this->logger->info(sprintf("Cleared security context due to exception: %s", $failed->getMessage())); - } + $this->clearToken($failed); } } /** * Clears a PreAuthenticatedToken for this provider (if present) + * + * @param AuthenticationException $exception */ - protected function clearToken() + protected function clearToken(AuthenticationException $exception) { $token = $this->securityContext->getToken(); if ($token instanceof PreAuthenticatedToken && $this->providerKey === $token->getProviderKey()) { $this->securityContext->setToken(null); } + + if (null !== $this->logger) { + $this->logger->info(sprintf("Cleared security context due to exception: %s", $exception->getMessage())); + } } /** From 932c892f16398a89b0a35c304a89bcd04fae086b Mon Sep 17 00:00:00 2001 From: Xavier HAUSHERR Date: Thu, 22 Aug 2013 16:34:05 +0200 Subject: [PATCH 3/5] Log only when needed --- .../Http/Firewall/AbstractPreAuthenticatedListener.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php index 03ebc390dbb36..e5d8dc59bfa7a 100644 --- a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php @@ -105,10 +105,10 @@ protected function clearToken(AuthenticationException $exception) $token = $this->securityContext->getToken(); if ($token instanceof PreAuthenticatedToken && $this->providerKey === $token->getProviderKey()) { $this->securityContext->setToken(null); - } - - if (null !== $this->logger) { - $this->logger->info(sprintf("Cleared security context due to exception: %s", $exception->getMessage())); + + if (null !== $this->logger) { + $this->logger->info(sprintf("Cleared security context due to exception: %s", $exception->getMessage())); + } } } From 01080c8b3af417529f6ad6928fb05a202f644639 Mon Sep 17 00:00:00 2001 From: Xavier HAUSHERR Date: Mon, 26 Aug 2013 16:19:19 +0200 Subject: [PATCH 4/5] clearToken is now private --- .../Security/Http/Firewall/AbstractPreAuthenticatedListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php index e5d8dc59bfa7a..b0bf858703e62 100644 --- a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php @@ -100,7 +100,7 @@ final public function handle(GetResponseEvent $event) * * @param AuthenticationException $exception */ - protected function clearToken(AuthenticationException $exception) + private function clearToken(AuthenticationException $exception) { $token = $this->securityContext->getToken(); if ($token instanceof PreAuthenticatedToken && $this->providerKey === $token->getProviderKey()) { From 2de5d7197bf8fa943bbd47b6e15935193d69e717 Mon Sep 17 00:00:00 2001 From: Xavier HAUSHERR Date: Mon, 26 Aug 2013 16:25:46 +0200 Subject: [PATCH 5/5] Remove blank spaces --- .../Security/Http/Firewall/AbstractPreAuthenticatedListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php index b0bf858703e62..fdc2e8c75ce7e 100644 --- a/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php +++ b/src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php @@ -105,7 +105,7 @@ private function clearToken(AuthenticationException $exception) $token = $this->securityContext->getToken(); if ($token instanceof PreAuthenticatedToken && $this->providerKey === $token->getProviderKey()) { $this->securityContext->setToken(null); - + if (null !== $this->logger) { $this->logger->info(sprintf("Cleared security context due to exception: %s", $exception->getMessage())); }