facile-it/php-jose-verifier
Validate and verify JWTs (JOSE) with builder-based verifiers geared for OAuth2/OpenID Connect. Create verifiers from issuer metadata (issuer, jwks_uri) and client metadata (client_id/secret), with optional JWK sets for decryption; ext-gmp recommended for speed.
AccessTokenVerifierBuilder) mirrors Laravel’s fluent configuration style, enabling clean integration into existing auth middleware (e.g., Illuminate\Auth\Middleware\Authenticate).socialite or passport packages. Supports id_tokens, access_tokens, and userinfo payloads, reducing duplication if using multiple auth providers (e.g., Google + Keycloak).symfony/http-foundation via Laravel’s bridge).jwks_uri) and client metadata (e.g., client_id), which can be fetched dynamically from OpenID providers (e.g., /.well-known/openid-configuration). Reduces manual key management.namespace App\Http\Middleware;
use Facile\JoseVerifier\Builder\AccessTokenVerifierBuilder;
use Closure;
class ValidateJwtToken {
public function handle($request, Closure $next) {
$verifier = AccessTokenVerifierBuilder::create($issuerMetadata, $clientMetadata)->build();
$token = $request->bearerToken();
$payload = $verifier->verify($token);
$request->merge(['user' => $payload]); // Attach claims to request
return $next($request);
}
}
Illuminate\Cache) can be injected via the service container.web-token/jwt-library (v3+), which may introduce breaking changes if upstream updates. Monitor for deprecations (e.g., JWE compression was dropped in v0.5.0).withState() for ID tokens). Misconfiguration (e.g., missing client_secret for symmetric signing) may cause silent failures.InvalidTokenExceptionInterface) must be mapped to Laravel’s exception handling (e.g., Illuminate\Auth\AuthenticationException) for consistent user feedback.jwks_uri)? If not, symmetric signing via client_secret may be required.ext-gmp available in production environments? If not, test performance impact.exp claim).Psr\Clock for deterministic tests.$this->app->bind(AccessTokenVerifierInterface::class, function ($app) {
return AccessTokenVerifierBuilder::create(
$app['config']['auth.issuer_metadata'],
$app['config']['auth.client_metadata']
)->withJwksProviderBuilder(
(new JwksProviderBuilder())->withCache($app['cache'])
)->build();
});
ValidateJwtToken middleware in API routes or global middleware stack.Guard interface to validate tokens and hydrate user models from JWT claims.hybridauth/hybridauth or custom OAuth2 clients to validate ID tokens.api/*).ext-gmp.laravel/sanctum, spatie/laravel-permission).https://auth0.com/claims/role). Extend the package’s ClaimChecker interface if needed./.well-known/openid-configuration) and client metadata (e.g., from Laravel config or database).InvalidTokenException) to track issues like:
web-token/jwt-library for breaking changes (e.g., algorithm support, security patches).facile-it/php-jose-verifier regularly (last release: 2026-06-12 suggests active maintenance).jwks_uri). Use environment variables or a database to externalize this config.InvalidTokenExceptionInterface) must be mapped to user-friendly messages (e.g., "Invalid credentials" for expired tokens).sub claims).nbf/exp validation failures.How can I help you explore Laravel packages today?