Adalah module yang memungkinkan encode/decode suatu nilai dengan metode JWT. Module ini menggunakan extensi cdoco/php-jwt, sehingga keberadaan ekstensi tersebut harus sudah terpasang di server. Jalankan perintah mim app server untuk memastikan.

Instalasi

Jalankan perintah di bawah di folder aplikasi:

mim app install lib-jwt

Konfigurasi

Tambahkan konfigurasi jwt pada konfigurasi aplikasi/module seperti di bawah:

return [
    'libJwt' => [
        // NONE
        // HS256        // HMAC
        // HS384        // HMAC
        // HS512        // HMAC
        // RS256        // RSA
        // RS384        // RSA
        // RS512        // RSA
        // ES256        // ECDSA
        // ES384        // ECDSA
        // ES512        // ECDSA
        'algorithm' => 'HS256',

        // khusus untuk algorithm
        // HS256, HS384, HS512
        'key' => 'random string'
    ]
];

Jika menggunakan algorithm dari kelompok RSA atau ECDSA, pastikan menambahkan file certificate sebagai berikut di folder etc/cert/lib-jwt/:

/etc/cert/lib-jwt/public.pem
/etc/cert/lib-jwt/private.pem

Untuk menggenerasi pem file untuk RSA, gunakan perintah:

ssh-keygen -t rsa -b 4096 -f private.pem
openssl rsa -in private.pem -pubout -outform PEM -out public.pem

Dan gunakan perintah di bawah untuk menggenerasi pem file untuk ECDSA:

openssl ecparam -genkey -name secp521r1 -noout -out private.pem
openssl ec -in private.pem -pubout -out public.pem

Penggunaan

Module ini mendaftarkan satu library publik dengan nama LibJwt\Library\Jwt. Dengan method sebagai berikut:

use LibJwt\Library\Jwt;

$data = 'lorem';
$options = [
    'cert' => '', // optional
    'certFile' => '/path/to/private.pem' // optional
];
$token = Jwt::encode([
    'data' => :mixed,   // required
    'exp' => :int,      // optional
    'nbf' => :int,      // optional
    'iss' => :string,   // optional
    'aud' => :array,    // optional
    'jti' => :string,   // optional
    'iat' => :int,      // optional
    'sub' => :string,   // optional
], $options);

encode(array $data, array $options=[]): ?string

decode(string $data, array $options=[]): ?mixed

lastError(): ?string

Lisensi

Module ini menggunakan ekstensi eksternal. Silahkan mengacu pada projek cdoco/php-jwt untuk lisensi.