Security

Token

d9fbe769-7433-4b9d-a2f3-2bebb73c9b5b Username
Authenticated
Property Value
Roles
[
  "ROLE_API"
  "ROLE_USER"
]
Inherited Roles none
Token
Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken {#1208
  -user: IDCI\Bundle\KeycloakSecurityBundle\Security\User\KeycloakBearerUser {#1251 …}
  -roleNames: [
    "ROLE_API"
    "ROLE_USER"
  ]
  -attributes: []
  -firewallName: "api"
}

Firewall

api Name
Security enabled
Stateless

Configuration

Key Value
provider App\Security\User\KeycloakBearerUserProvider
context api
entry_point IDCI\Bundle\KeycloakSecurityBundle\Security\EntryPoint\BearerAuthenticationEntryPoint
user_checker security.user_checker
access_denied_handler (none)
access_denied_url (none)
authenticators
[
  "IDCI\Bundle\KeycloakSecurityBundle\Security\Authenticator\KeycloakBearerAuthenticator"
]

Listeners

Listener Duration Response
Symfony\Component\Security\Http\Firewall\ChannelListener {#506
  -map: Symfony\Component\Security\Http\AccessMap {#505 …}
  -logger: Monolog\Logger {#402 …}
  -httpPort: 80
  -httpsPort: 443
}
(none) (none)
Symfony\Component\Security\Http\Firewall\ContextListener {#571
  -sessionKey: "_security_api"
  -registered: false
  -trustResolver: Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver {#408 …}
  -sessionTrackerEnabler: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage::enableUsageTracking(): void {#488 …}
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage {#66 …}
  -userProviders: Symfony\Component\DependencyInjection\Argument\RewindableGenerator {#357 …}
  -logger: Monolog\Logger {#402 …}
  -dispatcher: Symfony\Component\EventDispatcher\EventDispatcher {#401 …}
}
0.10 ms (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#555
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#541 …}
}
1.24 ms (none)
Symfony\Component\Security\Http\Firewall\AccessListener {#1190
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#63 …}
  -accessDecisionManager: Symfony\Component\Security\Core\Authorization\TraceableAccessDecisionManager {#61 …}
  -map: Symfony\Component\Security\Http\AccessMap {#505 …}
}
0.09 ms (none)

Authenticators

Status Authenticator
success
"IDCI\Bundle\KeycloakSecurityBundle\Security\Authenticator\KeycloakBearerAuthenticator"
Lazy no
Duration 0.02 ms
Passport
Symfony\Component\Security\Http\Authenticator\Passport\SelfValidatingPassport {#1200
  #user: IDCI\Bundle\KeycloakSecurityBundle\Security\User\KeycloakBearerUser {#1251 …}
  -badges: [
    "Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge" => Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge {#1201
      -userLoader: Closure() {#1202 …}
      -user: IDCI\Bundle\KeycloakSecurityBundle\Security\User\KeycloakBearerUser {#1251 …}
      -identifierNormalizer: null
      -userIdentifier: "Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ5dHFSamsyQVp4VjRLclNvamtBX3Y3RjNPeVdPUDJ5bjh4QTc2OXRnUTE4In0.eyJleHAiOjE3ODM4NTIzNDQsImlhdCI6MTc4Mzg1MjA0NCwiYXV0aF90aW1lIjoxNzc2MDI3OTI0LCJqdGkiOiJvZnJ0cnQ6NTJlYzVlYWQtYmFhOS03ZWMzLWYwYTYtZDFiYzM5N2MxYjkwIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLm15bW92ZW1lbnQuYXBwL3JlYWxtcy9teW1vdmVtZW50IiwiYXVkIjpbImFwcC1jbGllbnQiLCJqd3QtY2xpZW50Il0sInN1YiI6ImQ5ZmJlNzY5LTc0MzMtNGI5ZC1hMmYzLTJiZWJiNzNjOWI1YiIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFwcC1jbGllbnQiLCJzaWQiOiJhYmMxZTFiMy03YWRkLTRiYzMtYjUxMi1iNWZhNWQ3ZmQzYzkiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiIsIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtbXltb3ZlbWVudCIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJqd3QtY2xpZW50Ijp7InJvbGVzIjpbIlJPTEVfQVBJIiwiUk9MRV9VU0VSIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiRGllZGVyaWtlICBFaWxlcnMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJkaWVkZXJpa2UuZWlsZXJzQGdtYWlsLmNvbSIsImdpdmVuX25hbWUiOiJEaWVkZXJpa2UgIiwiZmFtaWx5X25hbWUiOiJFaWxlcnMiLCJlbWFpbCI6ImRpZWRlcmlrZS5laWxlcnNAZ21haWwuY29tIn0.MCHDJ6jm2cBIEvJClaXK6xhf4VVOv-Q6Kqb1wYzOzs1dVIP6w7t7hSQyh0roKOl-rr8_o1M_urwiZ7fOM7I3UtEJ_jcQMPdURjSEzOMMRe_mUXfZmZAuHUrSJNZhKBWKtBJKw6StISOmchYH6CIiRzO5u05OhH5kxcAo-zDSSw_UoomFm9ILLU_iMR7JGVWfKkK3H5LOT88ibDLinqBWXzvF_MXok8UKP8gGsBUqTuWZOZbf5RBg2bkLKuoIXeeLrND-SMFTiXK2d32RBvR2WpvPKDCj-XKR1KtMj7pYhz8MLO-1uSM9vE6fXW8xszvb41ktdjuICl5-pM8TAr0fCQ"
      -attributes: null
    }
  ]
  -attributes: []
}
Badges UserBadge

Access Decision

affirmative Strategy
# Voter class
1
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
2
"App\Security\CollectionVoter"
3
"App\Security\ImageVoter"
4
"App\Security\RouteVoter"

Access decision log

# Result Attributes Object
1 GRANTED ROLE_API
Symfony\Component\HttpFoundation\Request {#2
  +attributes: Symfony\Component\HttpFoundation\ParameterBag {#15 …}
  +request: Symfony\Component\HttpFoundation\InputBag {#5 …}
  +query: Symfony\Component\HttpFoundation\InputBag {#10 …}
  +server: Symfony\Component\HttpFoundation\ServerBag {#18 …}
  +files: Symfony\Component\HttpFoundation\FileBag {#17 …}
  +cookies: Symfony\Component\HttpFoundation\InputBag {#16 …}
  +headers: Symfony\Component\HttpFoundation\HeaderBag {#19 …}
  #content: ""
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: null
  #pathInfo: "/routes/6a4a436d416915de69060de3/5/17/9.pbf"
  #requestUri: "/routes/6a4a436d416915de69060de3/5/17/9.pbf?accessKey=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ5dHFSamsyQVp4VjRLclNvamtBX3Y3RjNPeVdPUDJ5bjh4QTc2OXRnUTE4In0.eyJleHAiOjE3ODM4NTIzNDQsImlhdCI6MTc4Mzg1MjA0NCwiYXV0aF90aW1lIjoxNzc2MDI3OTI0LCJqdGkiOiJvZnJ0cnQ6NTJlYzVlYWQtYmFhOS03ZWMzLWYwYTYtZDFiYzM5N2MxYjkwIiwiaXNzIjoiaHR0cHM6Ly9hdXRoLm15bW92ZW1lbnQuYXBwL3JlYWxtcy9teW1vdmVtZW50IiwiYXVkIjpbImFwcC1jbGllbnQiLCJqd3QtY2xpZW50Il0sInN1YiI6ImQ5ZmJlNzY5LTc0MzMtNGI5ZC1hMmYzLTJiZWJiNzNjOWI1YiIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFwcC1jbGllbnQiLCJzaWQiOiJhYmMxZTFiMy03YWRkLTRiYzMtYjUxMi1iNWZhNWQ3ZmQzYzkiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiIsIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtbXltb3ZlbWVudCIsIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJqd3QtY2xpZW50Ijp7InJvbGVzIjpbIlJPTEVfQVBJIiwiUk9MRV9VU0VSIl19fSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiRGllZGVyaWtlICBFaWxlcnMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJkaWVkZXJpa2UuZWlsZXJzQGdtYWlsLmNvbSIsImdpdmVuX25hbWUiOiJEaWVkZXJpa2UgIiwiZmFtaWx5X25hbWUiOiJFaWxlcnMiLCJlbWFpbCI6ImRpZWRlcmlrZS5laWxlcnNAZ21haWwuY29tIn0.MCHDJ6jm2cBIEvJClaXK6xhf4VVOv-Q6Kqb1wYzOzs1dVIP6w7t7hSQyh0roKOl-rr8_o1M_urwiZ7fOM7I3UtEJ_jcQMPdURjSEzOMMRe_mUXfZmZAuHUrSJNZhKBWKtBJKw6StISOmchYH6CIiRzO5u05OhH5kxcAo-zDSSw_UoomFm9ILLU_iMR7JGVWfKkK3H5LOT88ibDLinqBWXzvF_MXok8UKP8gGsBUqTuWZOZbf5RBg2bkLKuoIXeeLrND-SMFTiXK2d32RBvR2WpvPKDCj-XKR1KtMj7pYhz8MLO-1uSM9vE6fXW8xszvb41ktdjuICl5-pM8TAr0fCQ"
  #baseUrl: ""
  #basePath: null
  #method: "GET"
  #format: null
  #session: Symfony\Component\HttpFoundation\Session\Session {#1193 …}
  #locale: null
  #defaultLocale: "en"
  -preferredFormat: null
  -isHostValid: true
  -isForwardedValid: true
  -isSafeContentPreferred: ? bool
  -trustedValuesCache: []
  -isIisRewrite: false
  basePath: ""
  format: "html"
}
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
GRANTED
The user has ROLE_API.
Show voter details
2 GRANTED view
App\Document\RouteProxy {#1420
  #visibility: 0
  #id: "6a4a436d416915de69060de3"
  #appId: "null"
  #name: "Fjälbacka Route 2026-06-14"
  #timestamp: DateTime @1783853264 {#1439
    date: 2026-07-12 10:47:44.765071 UTC (+00:00)
  }
  #updatedAt: DateTime @1783251821 {#1452
    date: 2026-07-05 11:43:41.894 +00:00
  }
  #createdAt: ? DateTime
  #locations: Doctrine\Common\Collections\ArrayCollection {#1438 …}
  #geoJson: null
  #images: Doctrine\Common\Collections\ArrayCollection {#1440 …}
  #marker: App\Mapper\Cursor {#1441 …}
  #user: App\Document\User {#1442 …}
  #userIdentifier: "d9fbe769-7433-4b9d-a2f3-2bebb73c9b5b"
  #transports: []
  #participants: []
  #participantStatus: null
  #kudosCount: null
  #kudosGiven: null
  #kudos: []
  #activity: "car"
  #collections: App\Mapper\ProxyCursor {#1455 …}
  #importSource: null
  #externalActivityId: null
  #calories: null
  #deleted: false
  #aggregations: [
    "latMaxBound" => 58.599017707639
    "lngMinBound" => 11.278165683984
    "latMinBound" => 57.0864710669
    "lngMaxBound" => 12.28229712848
    "distance" => 210.64923764615
    "duration" => 15075
    "minHeight" => 10.0
    "maxHeight" => 121.0
    "avgHeight" => 63.093752091578
    "points" => 9905
    "avgSpeed" => 21.231024873497
    "maxSpeed" => 31.260000228882
    "minSpeed" => -1.0
    "latStartpoint" => 57.0873156
    "lngStartpoint" => 12.2481677
    "latEndpoint" => 58.587905348259
    "lngEndpoint" => 11.279717621496
    "startTimestamp" => 1781426791000
    "endTimestamp" => 1781441866000
  ]
  #filterMeta: [
    "version" => 2
    "appliedAt" => "2026-07-05T11:43:41+00:00"
    "pointsDropped" => 698
    "pointsSuppressed" => 148
  ]
  #origin: null
  #plan: null
  -repositoryFactory: App\Mapper\RepositoryFactory {#537 …}
  -router: ? Symfony\Component\Routing\Generator\UrlGeneratorInterface
  -loadLazyProperties: true
  -loadedProperties: []
}
"App\Security\CollectionVoter"
ABSTAIN
"App\Security\ImageVoter"
ABSTAIN
"App\Security\RouteVoter"
GRANTED
Show voter details