This package is being used by the home automation project. The package generates 'JSON Web Token' (JWT) by using the API of the authentication server.
Installation (via npm)
$ npm install --save jwt-generator
The package supports ES5 or later. The example below is using ES6 features.
Here you can find instructions on how to generate private & public keys.
const JWTGenerator = require('jwt-generator')
// const jwtGenerator = new JWTGenerator({loginUrl: <url>, privateKey: <privateKey>, useRetry: <use retry>, issuer: <issuer>})
const jwtGenerator = new JWTGenerator({loginUrl: 'https://auth.domain.com', privateKey: '<privateKey>', useRetry: true, issuer: 'urn:home-automation/garage-door-raspberry-client'})
// jwtGenerator.makeNewToken({subject: <subject>, audience: <audience>, payload: <payload>, expiresIn: <expires (seconds)>})
jwtGenerator.makeNewToken({subject: 'report garage door state', audience: 'urn:home-automation/garage-door-api', payload: {"name": "John Doe", "admin": true}, expiresIn: 60})
.then((token) => {
// JWT generated by the authentication server.
})
// jwtGenerator.makeToken({subject: <subject>, audience: <audience>, payload: <payload>, expiresIn: <expires (seconds)>})
jwtGenerator.makeToken({subject: 'report garage door state', audience: 'urn:home-automation/garage-door-api', payload: {"name": "John Doe", "admin": true}, expiresIn: 60})
.then((token) => {
// JWT generated by the authentication server.
})
The difference between makeToken
and makeNewToken
is that the former may re-use existing token that has been stored in the cached,
while the latter will always generate new token by calling the authentication server.