|
@@ -5,6 +5,7 @@ namespace AuthBundle\Security\Firewall;
|
|
|
use AuthBundle\Services\AccessTokenService;
|
|
|
use Base\OAuthClientBundle\Security\Core\User\CustomOAuthUser;
|
|
|
use HWI\Bundle\OAuthBundle\Security\Core\Authentication\Token\OAuthToken;
|
|
|
+use Monolog\Logger;
|
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
|
|
|
use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
|
|
@@ -33,7 +34,10 @@ class OAuthProxyListener implements ListenerInterface
|
|
|
* @var AccessTokenService
|
|
|
*/
|
|
|
protected $accessTokenService;
|
|
|
-
|
|
|
+ /**
|
|
|
+ * @var Logger
|
|
|
+ */
|
|
|
+ private $logger;
|
|
|
|
|
|
/**
|
|
|
* @param TokenStorageInterface $tokenStorage
|
|
@@ -47,6 +51,15 @@ class OAuthProxyListener implements ListenerInterface
|
|
|
$this->accessTokenService = $accessTokenService;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param Logger $logger
|
|
|
+ */
|
|
|
+ public function setLogger(Logger $logger)
|
|
|
+ {
|
|
|
+ $this->logger = $logger;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* Se crea el User y Token mediante alguno de los métodos
|
|
|
*
|
|
@@ -60,27 +73,37 @@ class OAuthProxyListener implements ListenerInterface
|
|
|
public function handle(GetResponseEvent $event)
|
|
|
{
|
|
|
$request = $event->getRequest();
|
|
|
+ $messageLog = "";
|
|
|
// verifico si la ip esta bloqueada. Se utiliza la variable API_CIDR_DENY para almacenar las ip o rangos de ip
|
|
|
if (\AuthBundle\Utils\IpUtils::checkIpDeny($request->getClientIp())) {
|
|
|
+ $messageLog = "Deny IP: " . $request->getClientIp();
|
|
|
$error = true;
|
|
|
} else if (($this->tokenStorage != null &&
|
|
|
$this->tokenStorage->getToken() != null &&
|
|
|
$this->tokenStorage->getToken() instanceof OAuthToken)) {
|
|
|
// como los firewalls comparten info a traves del context no tengo que hacer nada, ya esta logueado.
|
|
|
+ $messageLog = "Firewalls (IP: " . $request->getClientIp() . ")";
|
|
|
$error = false;
|
|
|
} else if ($request->headers->has("php-auth-user") && $request->headers->has("php-auth-pw")) {
|
|
|
+ $messageLog = "PHP-AUTH (IP: " . $request->getClientIp() . ")";
|
|
|
// el header contiene php-auth-user && php-auth-pw
|
|
|
$error = !$this->PHPAuth($request);
|
|
|
} elseif ($request->headers->has("authorization")) {
|
|
|
+ $messageLog = "AUTHORIZATION (IP: " . $request->getClientIp() . ")";
|
|
|
// el header contiene authorization
|
|
|
$error = !$this->PHPAuthorization($request);
|
|
|
} elseif ($request->getClientIp()) {
|
|
|
+ $messageLog = "AUTHORIZATION (IP: " . $request->getClientIp() . ")";
|
|
|
$error = !$this->clientIp($request);
|
|
|
} else {
|
|
|
+ $messageLog = "NO REFERENCE. DENY ALL.";
|
|
|
$error = true;
|
|
|
}
|
|
|
if ($error) {
|
|
|
+ $this->logger->info("ERROR - " . $messageLog);
|
|
|
$this->deny($event);
|
|
|
+ } else {
|
|
|
+ $this->logger->info("OK - " . $messageLog);
|
|
|
}
|
|
|
}
|
|
|
|