Security

Token

3a629a07-fed0-45da-b7ee-ee8c2ba4b75a Username
Authenticated
4563dd From
Property Value
Roles
[
  "ROLE_API"
  "ROLE_USER"
  "ROLE_ADMIN"
]
Inherited Roles none
Token
Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken {#1209
  -user: IDCI\Bundle\KeycloakSecurityBundle\Security\User\KeycloakBearerUser {#1258 …}
  -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 …}
}
6.15 ms (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#555
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#541 …}
}
1.45 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.11 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 {#1201
  #user: IDCI\Bundle\KeycloakSecurityBundle\Security\User\KeycloakBearerUser {#1258 …}
  -badges: [
    "Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge" => Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge {#1202
      -userLoader: Closure() {#1203 …}
      -user: IDCI\Bundle\KeycloakSecurityBundle\Security\User\KeycloakBearerUser {#1258 …}
      -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/68d89c6f41df82c23d0c26e2/8/47/102.pbf"
  #requestUri: "/routes/68d89c6f41df82c23d0c26e2/8/47/102.pbf?accessKey=eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ5dHFSamsyQVp4VjRLclNvamtBX3Y3RjNPeVdPUDJ5bjh4QTc2OXRnUTE4In0.eyJleHAiOjE3ODM4NDUyMjUsImlhdCI6MTc4Mzg0NDkyNSwiYXV0aF90aW1lIjoxNzgzNjg3NTAxLCJqdGkiOiJvZnJ0cnQ6OTc4Y2NhNjgtMTBhNy03ZDIxLTQyMjYtNTc1ZTFkZjM1OWU0IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLm15bW92ZW1lbnQuYXBwL3JlYWxtcy9teW1vdmVtZW50IiwiYXVkIjpbImFwcC1jbGllbnQiLCJqd3QtY2xpZW50Il0sInN1YiI6IjNhNjI5YTA3LWZlZDAtNDVkYS1iN2VlLWVlOGMyYmE0Yjc1YSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFwcC1jbGllbnQiLCJzaWQiOiJlOTUwZGI4Yy1lYjgyLTQ1ZDAtYmEwNi05NmM1OGM2N2JlYmQiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIiIsIioiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtbXltb3ZlbWVudCIsIlJPTEVfQVBJIiwiUk9MRV9VU0VSIiwib2ZmbGluZV9hY2Nlc3MiLCJST0xFX0FETUlOIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyJqd3QtY2xpZW50Ijp7InJvbGVzIjpbIlJPTEVfQVBJIiwiUk9MRV9VU0VSIiwiUk9MRV9BRE1JTiJdfX0sInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgb2ZmbGluZV9hY2Nlc3MgZW1haWwiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwibmFtZSI6IkNhcnN0ZW4gRWlsZXJzIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiY2Fyc3Rlbi5laWxlcnNAZm5jbWVkaWEuZGUiLCJnaXZlbl9uYW1lIjoiQ2Fyc3RlbiIsImxvY2FsZSI6ImVuIiwiZmFtaWx5X25hbWUiOiJFaWxlcnMiLCJlbWFpbCI6ImNhcnN0ZW4uZWlsZXJzQGZuY21lZGlhLmRlIn0.L_E9Y8UsMtu0VrWja8u4gnXXZUvGRq0jm9D7kplC0_Mmhm0IXPc16b1mmn3YQPo4tA_cdynHjgHrKBLxHQ61UjTtBTXKegxGzxqao4uvoTG1JujudMq7lkQzFRFCrZFNshbaokiE9KbGC2i9Anma7812oFZ8s032VUohFwd9O4HgXo1GQU68swFIl7kImDBtMxPAS-IHSuAA0fCIcWZnZhSPXj8x5RupG2nXcFAG9F76_9esmOV-Pp9BMVX6QGZavAhk--YrtcCFtI_8w7_XAfAz3uS7ZMr9XhvnHa5LszRWjcjf8RaPprrWC2rQDhIw6lOyMMLcsOKC_-K9Ow5Isw&v=1759026228000"
  #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 {#1421
  #visibility: 0
  #id: "68d89c6f41df82c23d0c26e2"
  #appId: "null"
  #name: "Route 2025-09-27"
  #timestamp: DateTime @1783845703 {#1440
    date: 2026-07-12 08:41:43.362261 UTC (+00:00)
  }
  #updatedAt: DateTime @1759026287 {#1456
    date: 2025-09-28 02:24:47.634 +00:00
  }
  #createdAt: ? DateTime
  #locations: Doctrine\Common\Collections\ArrayCollection {#1439 …}
  #geoJson: null
  #images: Doctrine\Common\Collections\ArrayCollection {#1441 …}
  #marker: App\Mapper\Cursor {#1442 …}
  #user: App\Document\User {#1443 …}
  #userIdentifier: "3a629a07-fed0-45da-b7ee-ee8c2ba4b75a"
  #transports: []
  #participants: []
  #participantStatus: null
  #kudosCount: null
  #kudosGiven: null
  #kudos: []
  #activity: "car"
  #collections: App\Mapper\ProxyCursor {#1459 …}
  #importSource: null
  #externalActivityId: null
  #calories: null
  #deleted: false
  #aggregations: [
    "latMaxBound" => 36.065064563195
    "lngMinBound" => -112.17753430038
    "latMinBound" => 35.327017169098
    "lngMaxBound" => -111.83714946043
    "distance" => 179.70560877351
    "duration" => 19514
    "minHeight" => 1816.2
    "maxHeight" => 2291.3
    "avgHeight" => 2100.7666271926
    "points" => 5890
    "avgSpeed" => 20.644282514524
    "maxSpeed" => 35.136555555556
    "minSpeed" => 0.039402276186166
    "latStartpoint" => 36.065064563195
    "lngStartpoint" => -112.11794622681
    "latEndpoint" => 35.327017169098
    "lngEndpoint" => -112.15592223695
    "startTimestamp" => 1759006714000
    "endTimestamp" => 1759026228000
  ]
  #filterMeta: [
    "version" => 2
    "appliedAt" => MongoDB\BSON\UTCDateTime {#1453
      +"milliseconds": "1783093195888"
    }
    "pointsDropped" => 59
    "pointsSuppressed" => 113
  ]
  #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