Error 401 Unauthorized

GET https://pnx.dtctools.esolutionsfurniture.com/api/graphql

Security

Token

There is no security token.

Firewall

main Name
Security enabled
Stateless

Configuration

Key Value
provider security.user.provider.concrete.app_user_provider
context main
entry_point security.authenticator.form_login.main
user_checker security.user_checker
access_denied_handler (none)
access_denied_url (none)
authenticators
[
  "login_throttling"
  "form_login"
  "App\Security\ApiTokenAuthenticator"
]

Listeners

Listener Duration Response
Symfony\Component\Security\Http\Firewall\ChannelListener {#573
  -map: Symfony\Component\Security\Http\AccessMap {#731 …}
  -logger: Monolog\Logger {#619 …}
  -httpPort: 80
  -httpsPort: 443
}
(none) (none)
Symfony\Component\Security\Http\Firewall\ContextListener {#763
  -sessionKey: "_security_main"
  -registered: false
  -trustResolver: Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver {#652 …}
  -sessionTrackerEnabler: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage::enableUsageTracking(): void {#757 …}
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage {#689 …}
  -userProviders: Symfony\Component\DependencyInjection\Argument\RewindableGenerator {#762 …}
  -logger: Monolog\Logger {#619 …}
  -dispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#595 …}
}
0.79 ms (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#758
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#764 …}
}
2.40 ms
Symfony\Component\HttpFoundation\JsonResponse {#783
  +headers: Symfony\Component\HttpFoundation\ResponseHeaderBag {#864 …}
  #content: "{"message":"No API token has been provided"}"
  #version: "1.0"
  #statusCode: 401
  #statusText: "Unauthorized"
  #charset: "UTF-8"
  -sentHeaders: ? array
  #data: "{"message":"No API token has been provided"}"
  #callback: null
  #encodingOptions: 15
}
Symfony\Component\Security\Http\Firewall\LogoutListener {#596
  -options: [
    "csrf_parameter" => "_csrf_token"
    "csrf_token_id" => "logout"
    "logout_path" => "app_logout"
  ]
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#690 …}
  -httpUtils: Symfony\Component\Security\Http\HttpUtils {#609 …}
  -eventDispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#595 …}
  -csrfTokenManager: null
}
(none) (none)
Symfony\Component\Security\Http\Firewall\AccessListener {#784
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#690 …}
  -accessDecisionManager: Symfony\Component\Security\Core\Authorization\TraceableAccessDecisionManager {#85 …}
  -map: Symfony\Component\Security\Http\AccessMap {#731 …}
}
(none) (none)

Authenticators

Status Authenticator
skipped
"Symfony\Component\Security\Http\Authenticator\FormLoginAuthenticator"

This authenticator did not support the request.

failure
"App\Security\ApiTokenAuthenticator"
Lazy no
Duration 0.15 ms
Badges
Exception
Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException {#792
  #message: "No API token has been provided"
  #code: 0
  #file: "/home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/src/Security/ApiTokenAuthenticator.php"
  #line: 50
  -token: null
  -messageKey: "No API token has been provided"
  -messageData: []
  trace: {
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/src/Security/ApiTokenAuthenticator.php:50 {
      App\Security\ApiTokenAuthenticator->authenticate(Request $request): Passport …
      › if(is_null($apiToken)){\tthrow new CustomUserMessageAuthenticationException('No API token has been provided');}
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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 {
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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);}
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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) {
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/vendor/symfony/security-http/Authentication/AuthenticatorManager.php:138 {
      Symfony\Component\Security\Http\Authentication\AuthenticatorManager->authenticateRequest(Request $request): Response …
      › 
      ›     return $this->executeAuthenticators($authenticators, $request);}
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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) {
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/vendor/symfony/security-http/Authenticator/Debug/TraceableAuthenticatorManagerListener.php:58 {
      Symfony\Component\Security\Http\Authenticator\Debug\TraceableAuthenticatorManagerListener->authenticate(RequestEvent $event): void …
      › {    $this->authenticationManagerListener->authenticate($event);}
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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) {
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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);}
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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);}
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/vendor/symfony/security-http/Firewall.php:92 {
      Symfony\Component\Security\Http\Firewall->onKernelRequest(RequestEvent $event) …
      › 
      ›     $this->callListeners($event, $authenticationListeners());}
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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 {
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/vendor/symfony/event-dispatcher/EventDispatcher.php:206 {
      Symfony\Component\EventDispatcher\EventDispatcher->callListeners(iterable $listeners, string $eventName, object $event): void …
      ›     }    $listener($event, $eventName, $this);}
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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);}
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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 {
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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);}
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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) {
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/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 {
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35 {
      Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run(): int …
      › {    $response = $this->kernel->handle($this->request);}
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/vendor/autoload_runtime.php:29 {
      require_once …
      ›         ->getRunner($app)        ->run());
    }
    /home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/public/index.php:5 {
      › 
      › require_once dirname(__DIR__).'/vendor/autoload_runtime.php';arguments: {
        "/home/pnx/htdocs/pnx.dtctools.esolutionsfurniture.com/vendor/autoload_runtime.php"
      }
    }
  }
}

Access Decision

affirmative Strategy
# Voter class
1
"Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter"
2
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
3
"Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter"
4
"App\Security\Voter\UserVoter"