Security

Token

3a629a07-fed0-45da-b7ee-ee8c2ba4b75a Username
Authenticated
Property Value
Roles
[
  "ROLE_API"
  "ROLE_USER"
  "ROLE_ADMIN"
]
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"
    "ROLE_ADMIN"
  ]
  -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.17 ms (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#555
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#541 …}
}
2.13 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.15 ms (none)

Authenticators

Status Authenticator
success
"IDCI\Bundle\KeycloakSecurityBundle\Security\Authenticator\KeycloakBearerAuthenticator"
Lazy no
Duration 0.03 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.eyJleHAiOjE3ODM4NDUyMjUsImlhdCI6MTc4Mzg0NDkyNSwiYXV0aF90aW1lIjoxNzgzNjg3NTAxLCJqdGkiOiJvZnJ0cnQ6OTc4Y2NhNjgtMTBhNy03ZDIxLTQyMjYtNTc1ZTFkZjM1OWU0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLm15bW92ZW1lbnQuYXBwL3JlYWxtcy9teW1vdmVtZW50IiwiYXVkIjpbImFwcC1jbGllbnQiLCJqd3QtY2xpZW50Il0sInN1YiI6IjNhNjI5YTA3LWZlZDAtNDVkYS1iN2VlLWVlOGMyYmE0Yjc1YSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFwcC1jbGllbnQiLCJzaWQiOiJlOTUwZGI4Yy1lYjgyLTQ1ZDAtYmEwNi05NmM1OGM2N2JlYmQiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiIsIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtbXltb3ZlbWVudCIsIlJPTEVfQVBJIiwiUk9MRV9VU0VSIiwib2ZmbGluZV9hY2Nlc3MiLCJST0xFX0FETUlOIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJqd3QtY2xpZW50Ijp7InJvbGVzIjpbIlJPTEVfQVBJIiwiUk9MRV9VU0VSIiwiUk9MRV9BRE1JTiJdfX0sInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MgZW1haWwiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6IkNhcnN0ZW4gRWlsZXJzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiY2Fyc3Rlbi5laWxlcnNAZm5jbWVkaWEuZGUiLCJnaXZlbl9uYW1lIjoiQ2Fyc3RlbiIsImxvY2FsZSI6ImVuIiwiZmFtaWx5X25hbWUiOiJFaWxlcnMiLCJlbWFpbCI6ImNhcnN0ZW4uZWlsZXJzQGZuY21lZGlhLmRlIn0.L_E9Y8UsMtu0VrWja8u4gnXXZUvGRq0jm9D7kplC0_Mmhm0IXPc16b1mmn3YQPo4tA_cdynHjgHrKBLxHQ61UjTtBTXKegxGzxqao4uvoTG1JujudMq7lkQzFRFCrZFNshbaokiE9KbGC2i9Anma7812oFZ8s032VUohFwd9O4HgXo1GQU68swFIl7kImDBtMxPAS-IHSuAA0fCIcWZnZhSPXj8x5RupG2nXcFAG9F76_9esmOV-Pp9BMVX6QGZavAhk--YrtcCFtI_8w7_XAfAz3uS7ZMr9XhvnHa5LszRWjcjf8RaPprrWC2rQDhIw6lOyMMLcsOKC_-K9Ow5Isw"
      -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/6a5296de0051bca9ee0aa682/10/530/341.pbf"
  #requestUri: "/routes/6a5296de0051bca9ee0aa682/10/530/341.pbf?accessKey=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ5dHFSamsyQVp4VjRLclNvamtBX3Y3RjNPeVdPUDJ5bjh4QTc2OXRnUTE4In0.eyJleHAiOjE3ODM4NDUyMjUsImlhdCI6MTc4Mzg0NDkyNSwiYXV0aF90aW1lIjoxNzgzNjg3NTAxLCJqdGkiOiJvZnJ0cnQ6OTc4Y2NhNjgtMTBhNy03ZDIxLTQyMjYtNTc1ZTFkZjM1OWU0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLm15bW92ZW1lbnQuYXBwL3JlYWxtcy9teW1vdmVtZW50IiwiYXVkIjpbImFwcC1jbGllbnQiLCJqd3QtY2xpZW50Il0sInN1YiI6IjNhNjI5YTA3LWZlZDAtNDVkYS1iN2VlLWVlOGMyYmE0Yjc1YSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFwcC1jbGllbnQiLCJzaWQiOiJlOTUwZGI4Yy1lYjgyLTQ1ZDAtYmEwNi05NmM1OGM2N2JlYmQiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiIsIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtbXltb3ZlbWVudCIsIlJPTEVfQVBJIiwiUk9MRV9VU0VSIiwib2ZmbGluZV9hY2Nlc3MiLCJST0xFX0FETUlOIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJqd3QtY2xpZW50Ijp7InJvbGVzIjpbIlJPTEVfQVBJIiwiUk9MRV9VU0VSIiwiUk9MRV9BRE1JTiJdfX0sInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MgZW1haWwiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6IkNhcnN0ZW4gRWlsZXJzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiY2Fyc3Rlbi5laWxlcnNAZm5jbWVkaWEuZGUiLCJnaXZlbl9uYW1lIjoiQ2Fyc3RlbiIsImxvY2FsZSI6ImVuIiwiZmFtaWx5X25hbWUiOiJFaWxlcnMiLCJlbWFpbCI6ImNhcnN0ZW4uZWlsZXJzQGZuY21lZGlhLmRlIn0.L_E9Y8UsMtu0VrWja8u4gnXXZUvGRq0jm9D7kplC0_Mmhm0IXPc16b1mmn3YQPo4tA_cdynHjgHrKBLxHQ61UjTtBTXKegxGzxqao4uvoTG1JujudMq7lkQzFRFCrZFNshbaokiE9KbGC2i9Anma7812oFZ8s032VUohFwd9O4HgXo1GQU68swFIl7kImDBtMxPAS-IHSuAA0fCIcWZnZhSPXj8x5RupG2nXcFAG9F76_9esmOV-Pp9BMVX6QGZavAhk--YrtcCFtI_8w7_XAfAz3uS7ZMr9XhvnHa5LszRWjcjf8RaPprrWC2rQDhIw6lOyMMLcsOKC_-K9Ow5Isw"
  #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: 2
  #id: "6a5296de0051bca9ee0aa682"
  #appId: "null"
  #name: "Route 2026-07-11"
  #timestamp: DateTime @1783844927 {#1439
    date: 2026-07-12 08:28:47.147580 UTC (+00:00)
  }
  #updatedAt: DateTime @1783797470 {#1452
    date: 2026-07-11 19:17:50.838 +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: "3a629a07-fed0-45da-b7ee-ee8c2ba4b75a"
  #transports: []
  #participants: []
  #participantStatus: null
  #kudosCount: null
  #kudosGiven: null
  #kudos: []
  #activity: "walking"
  #collections: App\Mapper\ProxyCursor {#1455 …}
  #importSource: null
  #externalActivityId: null
  #calories: null
  #deleted: false
  #aggregations: [
    "latMaxBound" => 51.237428384766
    "lngMinBound" => 6.6986006914151
    "latMinBound" => 51.222315395332
    "lngMaxBound" => 6.7299823888792
    "distance" => 7.4708000058786
    "duration" => 8901
    "minHeight" => 22.475818634033
    "maxHeight" => 46.300098625012
    "avgHeight" => 36.785412596418
    "points" => 1732
    "avgSpeed" => 1.3306392072436
    "maxSpeed" => 2.6172609685313
    "minSpeed" => -1.0
    "latStartpoint" => 51.235595536849
    "lngStartpoint" => 6.7298919962061
    "latEndpoint" => 51.235648603195
    "lngEndpoint" => 6.7299743630756
    "startTimestamp" => 1783788564000
    "endTimestamp" => 1783797465000
  ]
  #filterMeta: [
    "version" => 2
    "appliedAt" => "2026-07-11T19:17:50+00:00"
    "pointsDropped" => 71
    "pointsSuppressed" => 32
  ]
  #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