Error 401 Unauthorized

GET https://oalc-staging.officealacarte.training/api/formations

Security

Token

There is no security token.

Firewall

api Name
Security enabled
Stateless

Configuration

Key Value
provider security.user.provider.concrete.entreprise_provider
context (none)
entry_point (none)
user_checker security.user_checker
access_denied_handler (none)
access_denied_url (none)
authenticators
[
  "App\Security\ApiKeyAuthenticator"
]

Listeners

Listener Duration Response
Symfony\Component\Security\Http\Firewall\ChannelListener {#723
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
  -logger: Monolog\Logger {#729 …}
  -httpPort: 80
  -httpsPort: 443
}
(none) (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#762
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#751 …}
}
1.92 ms
Symfony\Component\HttpFoundation\JsonResponse {#774
  +headers: Symfony\Component\HttpFoundation\ResponseHeaderBag {#630 …}
  #content: "{"error":"An authentication exception occurred."}"
  #version: "1.1"
  #statusCode: 401
  #statusText: "Unauthorized"
  #charset: "UTF-8"
  -sentHeaders: ? array
  #data: "{"error":"An authentication exception occurred."}"
  #callback: null
  #encodingOptions: 15
}
Symfony\Component\Security\Http\Firewall\AccessListener {#764
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#260 …}
  -accessDecisionManager: Symfony\Component\Security\Core\Authorization\TraceableAccessDecisionManager {#244 …}
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
}
(none) (none)

Authenticators

Status Authenticator
failure
"App\Security\ApiKeyAuthenticator"
Lazy no
Duration 0.64 ms
Badges
Exception
Symfony\Component\Security\Core\Exception\AuthenticationException {#735
  #message: "No API Key provided"
  #code: 0
  #file: "/home/officealacarte/www/oalc/staging/releases/39/src/Security/ApiKeyAuthenticator.php"
  #line: 33
  -token: null
  trace: {
    /home/officealacarte/www/oalc/staging/releases/39/src/Security/ApiKeyAuthenticator.php:33 {
      App\Security\ApiKeyAuthenticator->authenticate(Request $request): Passport …
      › if (!$apiKey) {    throw new AuthenticationException('No API Key provided');}
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-http/Authenticator/Debug/TraceableAuthenticator.php:74 {
      Symfony\Component\Security\Http\Authenticator\Debug\TraceableAuthenticator->authenticate(Request $request): Passport …
      › try {    $this->passport = $this->authenticator->authenticate($request);} finally {
      arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#2 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-http/Authentication/AuthenticatorManager.php:174 {
      Symfony\Component\Security\Http\Authentication\AuthenticatorManager->executeAuthenticator(AuthenticatorInterface $authenticator, Request $request): Response …
      › // get the passport from the Authenticator$passport = $authenticator->authenticate($request);arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#2 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-http/Authentication/AuthenticatorManager.php:156 {
      Symfony\Component\Security\Http\Authentication\AuthenticatorManager->executeAuthenticators(array $authenticators, Request $request): Response …
      › 
      › $response = $this->executeAuthenticator($authenticator, $request);if (null !== $response) {
      arguments: {
        $authenticator: Symfony\Component\Security\Http\Authenticator\Debug\TraceableAuthenticator {#749 …}
        $request: Symfony\Component\HttpFoundation\Request {#2 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-http/Authentication/AuthenticatorManager.php:138 {
      Symfony\Component\Security\Http\Authentication\AuthenticatorManager->authenticateRequest(Request $request): Response …
      › 
      ›     return $this->executeAuthenticators($authenticators, $request);}
      arguments: {
        $authenticators: [ …1]
        $request: Symfony\Component\HttpFoundation\Request {#2 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-http/Firewall/AuthenticatorManagerListener.php:38 {
      Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener->authenticate(RequestEvent $event): void …
      › $request = $event->getRequest();$response = $this->authenticatorManager->authenticateRequest($request);if (null === $response) {
      arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#2 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-http/Authenticator/Debug/TraceableAuthenticatorManagerListener.php:58 {
      Symfony\Component\Security\Http\Authenticator\Debug\TraceableAuthenticatorManagerListener->authenticate(RequestEvent $event): void …
      › {    $this->authenticationManagerListener->authenticate($event);}
      arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-bundle/Debug/WrappedLazyListener.php:46 {
      Symfony\Bundle\SecurityBundle\Debug\WrappedLazyListener->authenticate(RequestEvent $event): void …
      › try {    $this->listener->authenticate($event);} catch (LazyResponseException $e) {
      arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-http/Firewall/AbstractListener.php:26 {
      Symfony\Component\Security\Http\Firewall\AbstractListener->__invoke(RequestEvent $event): void …
      › if (false !== $this->supports($event->getRequest())) {    $this->authenticate($event);}
      arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-bundle/Debug/TraceableFirewallListener.php:91 {
      Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener->callListeners(RequestEvent $event, iterable $listeners): void …
      › foreach ($requestListeners as $listener) {    $listener($event);arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/security-http/Firewall.php:92 {
      Symfony\Component\Security\Http\Firewall->onKernelRequest(RequestEvent $event) …
      › 
      ›     $this->callListeners($event, $authenticationListeners());}
      arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
        $listeners: Generator {#734 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/event-dispatcher/Debug/WrappedListener.php:115 {
      Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object $event, string $eventName, EventDispatcherInterface $dispatcher): void …
      › try {    ($this->optimizedListener ?? $this->listener)($event, $eventName, $dispatcher);} finally {
      arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
        ...: {
          "kernel.request"
          Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher {#431 …}
        }
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/event-dispatcher/EventDispatcher.php:206 {
      Symfony\Component\EventDispatcher\EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event): void …
      ›     }    $listener($event, $eventName, $this);}
      arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
        $eventName: "kernel.request"
        $dispatcher: Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher {#431 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/event-dispatcher/EventDispatcher.php:56 {
      Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object $event, ?string $eventName = null): object …
      › if ($listeners) {    $this->callListeners($listeners, $eventName, $event);}
      arguments: {
        $listeners: [ …18]
        $eventName: "kernel.request"
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:122 {
      Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch(object $event, ?string $eventName = null): object …
      › try {    $this->dispatcher->dispatch($event, $eventName);} finally {
      arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
        $eventName: "kernel.request"
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/http-kernel/HttpKernel.php:159 {
      Symfony\Component\HttpKernel\HttpKernel->handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response …
      › $event = new RequestEvent($this, $request, $type);$this->dispatcher->dispatch($event, KernelEvents::REQUEST);arguments: {
        $event: Symfony\Component\HttpKernel\Event\RequestEvent {#284 …}
        $eventName: "kernel.request"
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/http-kernel/HttpKernel.php:76 {
      Symfony\Component\HttpKernel\HttpKernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
      › try {    return $response = $this->handleRaw($request, $type);} catch (\Throwable $e) {
      arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#2 …}
        $type: 1
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/http-kernel/Kernel.php:182 {
      Symfony\Component\HttpKernel\Kernel->handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response …
      › try {    return $this->getHttpKernel()->handle($request, $type, $catch);} finally {
      arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#2 …}
        $type: 1
        $catch: true
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35 {
      Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run(): int …
      › {    $response = $this->kernel->handle($this->request);arguments: {
        $request: Symfony\Component\HttpFoundation\Request {#2 …}
      }
    }
    /home/officealacarte/www/oalc/staging/releases/39/vendor/autoload_runtime.php:29 {
      require_once …
      ›         ->getRunner($app)        ->run());
    }
    /home/officealacarte/www/oalc/staging/releases/39/public/index.php:7 {
      › 
      › require_once \dirname(__DIR__) . '/vendor/autoload_runtime.php';arguments: {
        "/home/officealacarte/www/oalc/staging/releases/39/vendor/autoload_runtime.php"
      }
    }
  }
}

Access Decision

affirmative Strategy
# Voter class
1
"Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter"
2
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
3
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
4
"Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter"
5
"App\Security\Voter\CalendarVoter"
6
"App\Security\Voter\CourseVoter"
7
"App\Security\Voter\ExtraVoter"
8
"App\Security\Voter\JourneyVoter"
9
"EasyCorp\Bundle\EasyAdminBundle\Security\SecurityVoter"