Convert Figma logo to code with AI

lcobucci logojwt

A simple library to work with JSON Web Token and JSON Web Signature

7,251
594
7,251
6

Top Related Projects

9,353

PHP package for JWT

11,274

🔐 JSON Web Token Authentication for Laravel & Lumen

Java implementation of JSON Web Token (JWT)

10,174

Java JWT: JSON Web Token for Java and Android

2,119

Jwt.Net, a JWT (JSON Web Token) implementation for .NET

Quick Overview

lcobucci/jwt is a PHP library for working with JSON Web Tokens (JWT). It provides a robust implementation for creating, parsing, and validating JWTs, supporting various algorithms and offering flexibility in token configuration.

Pros

  • Comprehensive JWT support with a wide range of algorithms
  • Flexible and extensible architecture
  • Well-documented with clear examples
  • Active maintenance and community support

Cons

  • Steeper learning curve compared to simpler JWT libraries
  • Requires PHP 7.4 or higher, which may not be suitable for older projects
  • Some users report occasional issues with token validation in specific scenarios

Code Examples

Creating a token:

use Lcobucci\JWT\Configuration;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\Signer\Key\InMemory;

$configuration = Configuration::forSymmetricSigner(
    new Sha256(),
    InMemory::base64Encoded('mBC5v1sOKVvbdEitdSBenu59nfNfhwkedkJVNabosTw=')
);

$now   = new DateTimeImmutable();
$token = $configuration->builder()
    ->issuedBy('https://example.com')
    ->permittedFor('https://example.org')
    ->issuedAt($now)
    ->expiresAt($now->modify('+1 hour'))
    ->withClaim('uid', 1)
    ->getToken($configuration->signer(), $configuration->signingKey());

Parsing and validating a token:

use Lcobucci\JWT\Validation\Constraint\SignedWith;
use Lcobucci\JWT\Validation\Constraint\StrictValidAt;

$token = $configuration->parser()->parse((string) $token);

$constraints = $configuration->validationConstraints();
$constraints->add(new SignedWith($configuration->signer(), $configuration->signingKey()));
$constraints->add(new StrictValidAt(new SystemClock(new DateTimeZone('UTC'))));

$configuration->validator()->assert($token, ...$constraints);

Accessing claims:

$token = $configuration->parser()->parse($tokenString);

$issuedBy = $token->claims()->get('iss');
$uid = $token->claims()->get('uid');

Getting Started

  1. Install the library using Composer:

    composer require lcobucci/jwt
    
  2. Create a configuration object:

    use Lcobucci\JWT\Configuration;
    use Lcobucci\JWT\Signer\Hmac\Sha256;
    use Lcobucci\JWT\Signer\Key\InMemory;
    
    $configuration = Configuration::forSymmetricSigner(
        new Sha256(),
        InMemory::base64Encoded('your-secret-key')
    );
    
  3. Use the configuration to create, parse, and validate tokens as shown in the code examples above.

Competitor Comparisons

9,353

PHP package for JWT

Pros of php-jwt

  • Simpler and more lightweight implementation
  • Easier to use for basic JWT operations
  • Better suited for projects with minimal JWT requirements

Cons of php-jwt

  • Limited features compared to jwt
  • Less flexibility for complex JWT scenarios
  • Fewer options for customization and extension

Code Comparison

php-jwt:

use Firebase\JWT\JWT;

$payload = ['data' => 'example'];
$jwt = JWT::encode($payload, $key, 'HS256');
$decoded = JWT::decode($jwt, $key, ['HS256']);

jwt:

use Lcobucci\JWT\Configuration;
use Lcobucci\JWT\Signer\Hmac\Sha256;

$config = Configuration::forSymmetricSigner(new Sha256(), $key);
$token = $config->builder()
    ->withClaim('data', 'example')
    ->getToken($config->signer(), $config->signingKey());
$parsed = $config->parser()->parse($token->toString());

Summary

php-jwt is a simpler, more straightforward library for basic JWT operations, while jwt offers more features and flexibility for complex scenarios. php-jwt is easier to use for simple tasks, but jwt provides more customization options and advanced functionality. The choice between the two depends on the specific requirements of your project and the level of JWT complexity you need to handle.

11,274

🔐 JSON Web Token Authentication for Laravel & Lumen

Pros of jwt-auth

  • Specifically designed for Laravel, offering seamless integration
  • Provides built-in authentication guards and middleware
  • Includes user-friendly configuration options and artisan commands

Cons of jwt-auth

  • Limited to Laravel framework, less versatile for other PHP projects
  • May have a steeper learning curve for developers unfamiliar with Laravel
  • Less frequent updates compared to jwt

Code Comparison

jwt-auth (Laravel-specific implementation):

$token = JWTAuth::attempt($credentials);
$user = JWTAuth::toUser($token);
$payload = JWTAuth::getPayload($token);

jwt (Generic PHP implementation):

$token = $config->builder()
    ->withClaim('uid', $user->id)
    ->getToken($config->signer(), $config->signingKey());
$claims = $config->parser()->parse($token)->claims();

Both libraries provide JWT functionality, but jwt-auth is tailored for Laravel applications, offering a more integrated experience with the framework's authentication system. On the other hand, jwt is a more versatile library that can be used in various PHP projects, providing greater flexibility but requiring more manual implementation.

jwt-auth simplifies JWT usage within Laravel, while jwt offers more granular control over token creation and validation across different PHP environments. The choice between the two depends on the specific project requirements and the development ecosystem.

Java implementation of JSON Web Token (JWT)

Pros of java-jwt

  • More comprehensive documentation and examples
  • Wider range of supported algorithms
  • Active development and frequent updates

Cons of java-jwt

  • Larger library size
  • Slightly more complex API for basic operations
  • Dependency on Gson for JSON processing

Code Comparison

jwt (lcobucci):

Jwt token = Jwts.builder()
    .setSubject("1234567890")
    .signWith(SignatureAlgorithm.HS256, "secret")
    .compact();

java-jwt:

String token = JWT.create()
    .withSubject("1234567890")
    .sign(Algorithm.HMAC256("secret"));

Both libraries offer similar functionality for creating and verifying JWTs. The jwt library uses a more fluent interface, while java-jwt provides a more straightforward approach. java-jwt's API is slightly more verbose but offers more flexibility in terms of customization.

java-jwt provides built-in support for various JWT claims and header parameters, making it easier to work with standard JWT fields. On the other hand, jwt offers a more lightweight solution with fewer dependencies, which may be preferable for projects with simpler requirements.

Overall, the choice between these libraries depends on the specific needs of your project, such as required algorithms, integration with existing systems, and performance considerations.

10,174

Java JWT: JSON Web Token for Java and Android

Pros of jjwt

  • More comprehensive documentation and examples
  • Wider range of supported algorithms and claim types
  • Active community and frequent updates

Cons of jjwt

  • Larger library size and more dependencies
  • Slightly steeper learning curve for beginners

Code Comparison

jwt (lcobucci/jwt):

$token = $configuration->builder()
    ->issuedBy('http://example.com')
    ->withClaim('uid', 1)
    ->getToken($configuration->signer(), $configuration->signingKey());

jjwt:

String token = Jwts.builder()
    .setIssuer("http://example.com")
    .claim("uid", 1)
    .signWith(SignatureAlgorithm.HS256, key)
    .compact();

Both libraries offer similar functionality for creating and verifying JWTs. jwt uses a more fluent interface with method chaining, while jjwt provides a more traditional builder pattern. The jwt library is PHP-based, whereas jjwt is Java-based, which may influence the choice depending on the project's technology stack.

jjwt offers more extensive documentation and examples, making it easier for developers to get started and implement advanced features. It also supports a wider range of algorithms and claim types out of the box. However, this comprehensive feature set comes at the cost of a larger library size and potentially more dependencies.

jwt, being more lightweight, may be preferred for simpler projects or where minimizing dependencies is crucial. It still offers solid JWT functionality but may require more custom implementation for advanced use cases.

2,119

Jwt.Net, a JWT (JSON Web Token) implementation for .NET

Pros of jwt

  • Designed specifically for .NET, offering seamless integration with .NET projects
  • Extensive support for various JWT algorithms and claim types
  • Active development with frequent updates and bug fixes

Cons of jwt

  • Limited to .NET ecosystem, not suitable for cross-platform development
  • Less comprehensive documentation compared to lcobucci/jwt
  • Smaller community and fewer third-party extensions

Code Comparison

jwt:

var token = JwtBuilder.Create()
    .WithAlgorithm(new HMACSHA256Algorithm())
    .WithSecret("your-256-bit-secret")
    .AddClaim("exp", DateTimeOffset.UtcNow.AddHours(1).ToUnixTimeSeconds())
    .Encode();

lcobucci/jwt:

$token = (new Builder())
    ->issuedBy('http://example.com')
    ->expiresAt(time() + 3600)
    ->getToken(new Sha256(), new Key('your-256-bit-secret'));

Both libraries offer straightforward methods for creating JWT tokens, but jwt provides a more fluent interface tailored for .NET developers. lcobucci/jwt, being PHP-based, uses a different syntax and structure but achieves similar functionality.

The choice between these libraries largely depends on the target platform and specific project requirements. jwt is ideal for .NET-centric projects, while lcobucci/jwt offers more flexibility for PHP and cross-platform development.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

JWT

Gitter Total Downloads Latest Stable Version Unstable Version

Build Status Code Coverage

A simple library to work with JSON Web Token and JSON Web Signature based on the RFC 7519.

Installation

Package is available on Packagist, you can install it using Composer.

composer require lcobucci/jwt

Documentation

The documentation is available at https://lcobucci-jwt.readthedocs.io/en/latest/.