@aquarela/jwt-signer
TypeScript icon, indicating that this package has built-in type declarations

1.6.9 • Public • Published

Welcome to @aquarela/jwt-signer 👋

Version Documentation License: MIT Twitter: aquarela_io

Sign JWT Token with any Signature algorithm key.

🏠 Homepage

Updates

1.6.7 fixes problems which may occur within TypeScript

1.6.6

Now it verifies if token is valid and return an JSON object or a error (that may be expiration, invalid algorithm, payload and etc.)

example output:

{

valid: true,

payload: { sub: '94828482248', name: 'The Dude', iat: 1516239022 },

token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX(...)Eo-PAyF1xJWxYFSnw'

}

Install

NPM

#yarn

yarn add @aquarela/jwt-signer

  

#npm

npm -i @aquarela/jwt-signer

  

CDN

#unpkg

https://unpkg.com/@aquarela/jwt-signer@1.6.5/lib/index.js

  

#jsdeliver

https://cdn.jsdelivr.net/npm/@aquarela/jwt-signer

  

Usage

You need only the private key (as file using keyPath or raw using inline argument)

import { jwtSign } from  '@aquarela/jwt-signer'  // Import the package

  

const data = {

sub:  "94828482248",

name:  "The Dude",

iat:  1516239022

} // Create Payload Data

  

console.log(jwtSign({keyPath:  './private.pem', payload: data}))

  

// output:

//

// {

// valid: true,

// payload: { sub: '94828482248', name: 'The Dude', iat: 1516239022 },

// token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX(...)Eo-PAyF1xJWxYFSnw'

// }

Options

There 4 argument on jwtSign: keyPath or inline (required), payload (required) and options.

keyPath (@string) *required (can be swapped with inline argument)

keyPath support local or external paths of your private key.

import { jwtSign } from  '@aquarela/jwt-signer'  // Import the package

  

(...)

console.log(jwtSign({

keyPath:  './private.pem', // private key file on the root folder.

(...)}))

// output:

//

// {

// valid: true,

// payload: { sub: '94828482248', name: 'The Dude', iat: 1516239022 },

// token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX(...)Eo-PAyF1xJWxYFSnw'

// }

inline (@string) *required (can be swapped with keyPath argument)

inline support raw private key data.

import { jwtSign } from  '@aquarela/jwt-signer'

  

(...)

  

const rawData =  `-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQDUi8T6pRUhWdA+g8hlebFMzRRoM0MCnqMoHg/IEmd0pY1t9O0J

oDLXCcCEguTJaaw73y7TwHERgxE1Ma/mExIQtMTgrpVBgVCOw1tsz5Kf7xGNXH5f

(...)

-----END RSA PRIVATE KEY-----`

  

  

console.log(jwtSign({

keyPath:  '',

inline: rawData,

(...)

}))

// output:

//

// {

// valid: true,

// payload: { sub: '94828482248', name: 'The Dude', iat: 1516239022 },

// token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX(...)Eo-PAyF1xJWxYFSnw'

// }

payload (@object) *required

payload is the data as JSON Object your gonna embed in your jwt token.

You can see an example here.

import { jwtSign } from  '@aquarela/jwt-signer'  // Import the package

  

const data = { sub:  "94828482248", name:  "The Dude", iat:  1516239022 }

  

(...)

console.log(jwtSign({(...)

payload: data}))

// output:

//

// {

// valid: true,

// payload: { sub: '94828482248', name: 'The Dude', iat: 1516239022 },

// token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX(...)Eo-PAyF1xJWxYFSnw'

// }

options (@object) *required

payload is the data as JSON Object you can configure some things as algorithm.

import { jwtSign } from  '@aquarela/jwt-signer'  // Import the package

  

(...)

  

/**

  

* Signature algorithm. Could be one of these values :

* - HS256: HMAC using SHA-256 hash algorithm (default)

* - HS384: HMAC using SHA-384 hash algorithm

* - HS512: HMAC using SHA-512 hash algorithm

* - RS256: RSASSA using SHA-256 hash algorithm

* - RS384: RSASSA using SHA-384 hash algorithm

* - RS512: RSASSA using SHA-512 hash algorithm

* - ES256: ECDSA using P-256 curve and SHA-256 hash algorithm

* - ES384: ECDSA using P-384 curve and SHA-384 hash algorithm

* - ES512: ECDSA using P-521 curve and SHA-512 hash algorithm

* - none: No digital signature or MAC value included

  

*/

  

const options = {

algorithm:  'RS512'

}

  

(...)

console.log(jwtSign({(...)

options: options}))

  

// output:

//

// {

// valid: 'yes',

// payload: { sub: '94828482248', name: 'The Dude', iat: 1516239022 },

// token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX(...)Eo-PAyF1xJWxYFSnw'

// }

Thats it.

Author

👤 AQUARELA

Show your support

Give a ⭐️ if this project helped you!


Dependents (0)

Package Sidebar

Install

npm i @aquarela/jwt-signer

Weekly Downloads

4

Version

1.6.9

License

MIT

Unpacked Size

11.2 kB

Total Files

7

Last publish

Collaborators

  • diegopeixoto
  • aquarela-diego