UNPKG

@quarks/quarks-iam

Version:

A modern authorization server built to authenticate your users and protect your APIs

67 lines (53 loc) 1.27 kB
/** * Module dependencies */ var JWT = require('anvil-connect-jwt') var nowSeconds = require('../lib/time-utils').nowSeconds /** * Expires */ function expires (duration) { var fromNow = { day: (60 * 60 * 24), week: (60 * 60 * 24 * 7), month: (60 * 60 * 24 * 30) } return function () { return nowSeconds(fromNow[duration]) } } /** * ID Token */ var IDToken = JWT.define({ // default header header: { alg: 'RS256' }, // permitted headers headers: [ 'alg' ], // modify header schema registeredHeaders: { alg: { format: 'StringOrURI', required: true, enum: ['RS256'] } }, // permitted claims claims: ['iss', 'sub', 'aud', 'exp', 'iat', 'nonce', 'acr', 'at_hash', 'amr'], // modify payload schema registeredClaims: { iss: { format: 'StringOrURI', required: true }, sub: { format: 'StringOrURI', required: true }, aud: { format: 'StringOrURI', required: true }, exp: { format: 'IntDate', required: true, default: expires('day') }, iat: { format: 'IntDate', required: true, default: nowSeconds }, nonce: { format: 'String' }, acr: { format: 'String' }, at_hash: { format: 'String' }, amr: { format: 'String*' } } }) /** * Exports */ module.exports = IDToken