halloverden/symfony-jwt-authenticator-bundle
Symfony bundle that adds a JWT authenticator to the security layer, letting you protect routes and authenticate users from JSON Web Tokens. It plugs into Symfony's authenticator system to validate tokens and load user identities on each request.
This is a Symfony bundle, not a Laravel package. There is no service provider, no config/jwt.php to publish, and php artisan package:discover does nothing for it. The practical starting point for a Laravel developer is a decision, not an install:
tymon/jwt-auth, Sanctum, Passport, or firebase/php-jwt directly. This bundle buys you nothing inside Laravel's guard/middleware model.Minimal steps if you do proceed:
composer require halloverden/symfony-jwt-authenticator-bundle — but with 0 stars, 0 dependents, and a 0.1 score, treat this as unreviewed code. Read the source first, or pin an exact commit.config/bundles.php. This is manual; Laravel devs will look in vain for auto-registration.src/ in this order: the DI extension class, the class implementing Symfony's AuthenticatorInterface, then any DependencyInjection/Configuration.php for the actual config keys.config/packages/security.yaml, sourcing key material from env vars.api firewall (stateless: true) where the login route is security: false and everything else is guarded by this authenticator.Look at composer.json before anything else — the supported Symfony version range determines which authenticator API applies, and that changed in breaking ways across 5.x → 6.x → 7.x.
api (stateless, JWT) separate from web (session). Do not mix both authenticators on one firewall; Symfony's firewall semantics make the failure modes confusing.Authorization: Bearer <token>. Confirm whether the bundle ships a token extractor or whether you need to supply one — this is the first thing to verify in source.UserProvider. Keep DB lookups there, not inside the authenticator, so you retain a clean seam for caching and multi-tenant providers.firebase/php-jwt or Passport) and Symfony validate them. Agree on alg, iss, aud, and claim names before writing code. Prefer RS256: Laravel signs with the private key, Symfony only ever holds the public key.Auth::viaRequest guard or a small middleware so both runtimes interpret claims identically. Keep TTL and refresh logic in exactly one service.Laravel-side equivalents, by role: issuer → tymon/jwt-auth or Passport; first-party SPA → Sanctum; verifier of externally issued JWTs → a small custom guard around firebase/php-jwt.
composer require alone accomplishes nothing; without the config/bundles.php entry you'll debug a "missing service" for an hour.%env(...)%. With HS256, both frameworks must share the byte-identical secret — encoding and trailing newlines bite here constantly.nbf is validated strictly.alg: none acceptance is a known JWT bug class, and with an unvetted package you must confirm this yourself rather than assume.bin/console debug:firewall <name> and debug:container --tag=security.authenticator first. Nine times in ten it's a firewall wiring problem, not a token problem.UserProvider, a token extractor, and listeners on authentication success/failure. Keep those out of the validation logic.firebase/php-jwt — for a zero-star dependency, that's frequently the lower-risk choice.How can I help you explore Laravel packages today?