Skip to content

Commit 1e3ba06

Browse files
authoredMar 10, 2021
Removes babel (#226)
Compiling is no longer needed. Node 10+ supports all the features used in this library.
1 parent 9c4fddf commit 1e3ba06

35 files changed

+999
-4695
lines changed
 

‎.babelrc

-6
This file was deleted.

‎.eslintrc

+2-13
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
{
2-
"parser": "babel-eslint",
32
"parserOptions": {
4-
"ecmaFeatures": {
5-
"arrowFunctions": true,
6-
"blockBindings": true,
7-
"generators": true,
8-
"modules": true
9-
}
3+
"ecmaVersion": 2018
104
},
115
"rules": {
126
"array-bracket-spacing": [2, "always"],
@@ -27,11 +21,6 @@
2721
"space-before-blocks": [2, "always"]
2822
},
2923
"env": {
30-
"amd": true,
31-
"es6": true,
3224
"node": true
33-
},
34-
"plugins": [
35-
"babel"
36-
]
25+
}
3726
}

‎.npmignore

-6
This file was deleted.

‎examples/express-demo/server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const Express = require('express');
22
const jwt = require('express-jwt');
33
const logger = require('debug')('express');
4-
const jwksRsa = require('../../lib');
4+
const jwksRsa = require('../../src');
55

66
const jwksHost = process.env.JWKS_HOST;
77
const audience = process.env.AUDIENCE;

‎examples/hapi-demo/server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const Hapi = require('hapi');
22
const good = require('good');
33
const jwt = require('hapi-auth-jwt2');
44
const logger = require('debug')('hapi');
5-
const jwksRsa = require('../../lib');
5+
const jwksRsa = require('../../src');
66

77
const jwksHost = process.env.JWKS_HOST;
88
const audience = process.env.AUDIENCE;

‎examples/koa-demo/server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const Koa = require('koa');
22
const Router = require('koa-router');
33
const jwt = require('koa-jwt');
4-
const jwksRsa = require('../../lib');
4+
const jwksRsa = require('../../src');
55

66
const jwksHost = process.env.JWKS_HOST;
77
const audience = process.env.AUDIENCE;

‎examples/passport-demo/server.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const logger = require('debug')('express');
33
const passport = require('passport');
44
const JwtStrategy = require('passport-jwt').Strategy;
55
const ExtractJwt = require('passport-jwt').ExtractJwt;
6-
const jwksRsa = require('../../lib');
6+
const jwksRsa = require('../../src');
77

88
const jwksHost = process.env.JWKS_HOST;
99
const audience = process.env.AUDIENCE;

‎package-lock.json

+813-4,502
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+8-14
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
"name": "jwks-rsa",
33
"version": "2.0.0",
44
"description": "Library to retrieve RSA public keys from a JWKS endpoint",
5-
"main": "lib/index.js",
5+
"main": "src/index.js",
6+
"files": [
7+
"src",
8+
"index.d.ts"
9+
],
610
"types": "index.d.ts",
711
"engines": {
812
"node": ">=10 < 13 || >=14"
@@ -19,15 +23,8 @@
1923
"@types/mocha": "^5.2.7",
2024
"@types/nock": "^11.0.0",
2125
"@types/node": "^14.14.12",
22-
"babel-cli": "^6.9.0",
23-
"babel-core": "^6.9.0",
24-
"babel-eslint": "^8.2.6",
25-
"babel-polyfill": "^6.24.1",
26-
"babel-preset-es2015": "^6.9.0",
27-
"babel-preset-stage-0": "^6.5.0",
2826
"chai": "^3.5.0",
2927
"eslint": "^5.16.0",
30-
"eslint-plugin-babel": "^5.3.0",
3128
"express": "^4.17.1",
3229
"express-jwt": "^6.0.0",
3330
"jsonwebtoken": "^8.5.1",
@@ -44,16 +41,13 @@
4441
"typescript": "^3.9.5"
4542
},
4643
"scripts": {
47-
"clean": "rimraf lib/",
4844
"clean:ts": "rimraf ts-output/",
49-
"compile": "babel -d lib/ src/",
5045
"lint": "eslint ./src ./tests",
51-
"prepublish": "npm run clean && npm run compile",
52-
"test:ts": "npm run clean:ts && tsc && NODE_ENV=test mocha --require babel-core/register --require babel-polyfill --exit --timeout 5000 $(find ./ts-output -name *.tests.js)",
53-
"test:js": "NODE_ENV=test mocha --require babel-core/register --require babel-polyfill --exit --timeout 5000 $(find ./tests -name *.tests.js)",
46+
"test:ts": "npm run clean:ts && tsc && NODE_ENV=test mocha --exit --timeout 5000 $(find ./ts-output -name *.tests.js)",
47+
"test:js": "NODE_ENV=test mocha --exit --timeout 5000 $(find ./tests -name *.tests.js)",
5448
"test": "npm run test:js && npm run test:ts",
5549
"test:ci": "nyc --reporter=lcov npm test",
56-
"test-watch": "NODE_ENV=test mocha --require babel-core/register --require babel-polyfill --exit --timeout 5000 $(find ./tests -name *.tests.js) --watch",
50+
"test-watch": "NODE_ENV=test mocha --exit --timeout 5000 $(find ./tests -name *.tests.js) --watch",
5751
"release": "git tag $npm_package_version && git push && git push --tags && npm publish"
5852
},
5953
"repository": {

‎src/JwksClient.js

+10-15
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
1-
import debug from 'debug';
2-
import request from './wrappers/request';
3-
import JwksError from './errors/JwksError';
4-
import SigningKeyNotFoundError from './errors/SigningKeyNotFoundError';
1+
const debug = require('debug');
2+
const { retrieveSigningKeys } = require('./utils') ;
3+
const { request, cacheSigningKey, rateLimitSigningKey, getKeysInterceptor } = require('./wrappers');
4+
const JwksError = require('./errors/JwksError');
5+
const SigningKeyNotFoundError = require('./errors/SigningKeyNotFoundError');
56

6-
import {
7-
retrieveSigningKeys
8-
} from './utils';
9-
10-
import {
11-
cacheSigningKey,
12-
rateLimitSigningKey,
13-
getKeysInterceptor
14-
} from './wrappers';
15-
16-
export class JwksClient {
7+
class JwksClient {
178
constructor(options) {
189
this.options = {
1910
rateLimit: false,
@@ -93,3 +84,7 @@ export class JwksClient {
9384
}
9485
}
9586
}
87+
88+
module.exports = {
89+
JwksClient
90+
};

‎src/errors/index.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
export ArgumentError from './ArgumentError';
2-
export JwksError from './JwksError';
3-
export JwksRateLimitError from './JwksRateLimitError';
4-
export SigningKeyNotFoundError from './SigningKeyNotFoundError';
1+
module.exports = {
2+
ArgumentError: require('./ArgumentError'),
3+
JwksError: require('./JwksError'),
4+
JwksRateLimitError: require('./JwksRateLimitError'),
5+
SigningKeyNotFoundError: require('./SigningKeyNotFoundError')
6+
};

‎src/index.js

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import { JwksClient } from './JwksClient';
2-
3-
import * as errors from './errors';
4-
import { hapiJwt2Key, hapiJwt2KeyAsync } from './integrations/hapi';
5-
import { expressJwtSecret } from './integrations/express';
6-
import { koaJwtSecret } from './integrations/koa';
7-
import { passportJwtSecret } from './integrations/passport';
1+
const { JwksClient } = require('./JwksClient');
2+
const errors = require('./errors');
3+
const { hapiJwt2Key, hapiJwt2KeyAsync } = require('./integrations/hapi');
4+
const { expressJwtSecret } = require('./integrations/express');
5+
const { koaJwtSecret } = require('./integrations/koa');
6+
const { passportJwtSecret } = require('./integrations/passport');
87

98
module.exports = (options) => {
109
return new JwksClient(options);

‎src/integrations/config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ const allowedSignatureAlg = [
1212
'EdDSA'
1313
];
1414

15-
export default allowedSignatureAlg;
15+
module.exports = allowedSignatureAlg;

‎src/integrations/express.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { ArgumentError } from '../errors';
2-
import { JwksClient } from '../JwksClient';
3-
import supportedAlg from './config';
1+
const { ArgumentError } = require('../errors');
2+
const { JwksClient } = require('../JwksClient');
3+
const supportedAlg = require('./config');
44

55
const handleSigningKeyError = (err, cb) => {
66
// If we didn't find a match, can't provide a key.
@@ -14,7 +14,7 @@ const handleSigningKeyError = (err, cb) => {
1414
}
1515
};
1616

17-
module.exports.expressJwtSecret = (options) => {
17+
module.exports.expressJwtSecret = function (options) {
1818
if (options === null || options === undefined) {
1919
throw new ArgumentError('An options object must be provided when initializing expressJwtSecret');
2020
}

‎src/integrations/hapi.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { ArgumentError } from '../errors';
2-
import { JwksClient } from '../JwksClient';
3-
import supportedAlg from './config';
1+
const { ArgumentError } = require('../errors');
2+
const { JwksClient } = require('../JwksClient');
3+
const supportedAlg = require('./config');
44

55
const handleSigningKeyError = (err, cb) => {
66
// If we didn't find a match, can't provide a key.
@@ -31,7 +31,7 @@ module.exports.hapiJwt2KeyAsync = (options) => {
3131
};
3232
};
3333

34-
module.exports.hapiJwt2Key = (options) => {
34+
module.exports.hapiJwt2Key = function (options) {
3535
if (options === null || options === undefined) {
3636
throw new ArgumentError('An options object must be provided when initializing hapiJwt2Key');
3737
}

‎src/integrations/koa.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import { ArgumentError } from '../errors';
2-
import { JwksClient } from '../JwksClient';
3-
import supportedAlg from './config';
4-
5-
module.exports.koaJwtSecret = (options = {}) => {
1+
const { ArgumentError } = require('../errors');
2+
const { JwksClient } = require('../JwksClient');
3+
const supportedAlg = require('./config');
64

5+
module.exports.koaJwtSecret = function (options = {}) {
76
if (!options.jwksUri) {
87
throw new ArgumentError('No JWKS provided. Please provide a jwksUri');
98
}

‎src/integrations/passport.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { JWT } from 'jose';
2-
import { ArgumentError } from '../errors';
3-
import { JwksClient } from '../JwksClient';
4-
import supportedAlg from './config';
1+
const JWT = require('jose').JWT;
2+
const { ArgumentError } = require('../errors');
3+
const { JwksClient } = require('../JwksClient');
4+
const supportedAlg = require('./config');
55

66
const handleSigningKeyError = (err, cb) => {
77
// If we didn't find a match, can't provide a key.
@@ -15,7 +15,7 @@ const handleSigningKeyError = (err, cb) => {
1515
}
1616
};
1717

18-
module.exports.passportJwtSecret = (options) => {
18+
module.exports.passportJwtSecret = function (options) {
1919
if (options === null || options === undefined) {
2020
throw new ArgumentError('An options object must be provided when initializing passportJwtSecret');
2121
}

‎src/utils.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import jose from 'jose';
2-
import JwksError from './errors/JwksError';
1+
const jose = require('jose');
2+
const JwksError = require('./errors/JwksError');
33

4-
export function retrieveSigningKeys(keys) {
4+
function retrieveSigningKeys(keys) {
55
let keystore = [];
66
try {
77
keystore = jose.JWKS.asKeyStore({ keys }, { ignoreErrors: true });
@@ -18,3 +18,7 @@ export function retrieveSigningKeys(keys) {
1818
};
1919
});
2020
}
21+
22+
module.exports = {
23+
retrieveSigningKeys
24+
};

‎src/wrappers/cache.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import debug from 'debug';
2-
import memoizer from 'lru-memoizer';
1+
const debug = require('debug');
2+
const memoizer = require('lru-memoizer');
33

4-
export default function(client, { cacheMaxEntries = 5, cacheMaxAge = 600000 } = options) {
4+
function cacheWrapper(client, { cacheMaxEntries = 5, cacheMaxAge = 600000 } = options) {
55
const logger = debug('jwks');
66
logger(`Configured caching of signing keys. Max: ${cacheMaxEntries} / Age: ${cacheMaxAge}`);
77
return memoizer.sync({
@@ -11,3 +11,5 @@ export default function(client, { cacheMaxEntries = 5, cacheMaxAge = 600000 } =
1111
max: cacheMaxEntries
1212
});
1313
}
14+
15+
module.exports.default = cacheWrapper;

‎src/wrappers/index.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
export cacheSigningKey from './cache';
2-
export rateLimitSigningKey from './rateLimit';
3-
export getKeysInterceptor from './interceptor';
1+
module.exports = {
2+
request: require('./request').default,
3+
cacheSigningKey: require('./cache').default,
4+
rateLimitSigningKey: require('./rateLimit').default,
5+
getKeysInterceptor: require('./interceptor').default
6+
};

‎src/wrappers/interceptor.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { retrieveSigningKeys } from '../utils';
1+
const retrieveSigningKeys = require('../utils').retrieveSigningKeys;
22

33
/**
44
* Uses getKeysInterceptor to allow users to retrieve keys from a file,
55
* external cache, or provided object before falling back to the jwksUri endpoint
66
*/
7-
export default function(client, { getKeysInterceptor } = options) {
7+
function getKeysInterceptor(client, { getKeysInterceptor } = options) {
88
const getSigningKey = client.getSigningKey;
99

1010
return async (kid) => {
@@ -26,3 +26,5 @@ export default function(client, { getKeysInterceptor } = options) {
2626
return getSigningKey(kid);
2727
};
2828
}
29+
30+
module.exports.default = getKeysInterceptor;

‎src/wrappers/rateLimit.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import debug from 'debug';
2-
import { RateLimiter } from 'limiter';
1+
const debug = require('debug');
2+
const { RateLimiter } = require('limiter');
33

4-
import JwksRateLimitError from '../errors/JwksRateLimitError';
4+
const JwksRateLimitError = require('../errors/JwksRateLimitError');
55

6-
export default function(client, { jwksRequestsPerMinute = 10 } = options) {
6+
function rateLimtWrapper(client, { jwksRequestsPerMinute = 10 } = options) {
77
const logger = debug('jwks');
88
const getSigningKey = client.getSigningKey.bind(client);
99

@@ -31,3 +31,5 @@ export default function(client, { jwksRequestsPerMinute = 10 } = options) {
3131
});
3232
});
3333
}
34+
35+
module.exports.default = rateLimtWrapper;

‎src/wrappers/request.js

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1+
const http = require('http');
2+
const https = require('https');
3+
const urlUtil = require('url');
14

2-
import http from 'http';
3-
import https from 'https';
4-
import urlUtil from 'url';
5-
6-
export default (options) => {
5+
module.exports.default = (options) => {
76
if (options.fetcher) {
87
return options.fetcher(options.uri);
98
}

‎tests/cache.tests.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import nock from 'nock';
2-
import { expect } from 'chai';
1+
const nock = require('nock');
2+
const { expect } = require('chai');
33

4-
import { x5cSingle } from './keys';
5-
import { JwksClient } from '../src/JwksClient';
4+
const { x5cSingle } = require('./keys');
5+
const { JwksClient } = require('../src/JwksClient');
66

77
describe('JwksClient (cache)', () => {
88
const jwksHost = 'http://my-authz-server';

‎tests/errors.es5.tests.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { expect } from 'chai';
1+
const { expect } = require('chai');
22

33
const jwksRsa = require('../src');
44

‎tests/express.es5.tests.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import nock from 'nock';
2-
import { expect } from 'chai';
3-
4-
import { jwksEndpoint } from './mocks/jwks';
5-
import { publicKey, privateKey, randomPublicKey1 } from './mocks/keys';
6-
import { createToken, createSymmetricToken } from './mocks/tokens';
1+
const nock = require('nock');
2+
const { expect } = require('chai');
3+
const { jwksEndpoint } = require('./mocks/jwks');
4+
const { publicKey, privateKey, randomPublicKey1 } = require('./mocks/keys');
5+
const { createToken, createSymmetricToken } = require('./mocks/tokens');
76

87
const jwksRsa = require('../src');
98
const expressJwt = require('express-jwt');

‎tests/jwksClient.tests.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import nock from 'nock';
2-
import { expect } from 'chai';
1+
const nock = require('nock');
2+
const { expect } = require('chai');
33

4-
import { x5cMultiple } from './keys';
5-
import { JwksClient } from '../src/JwksClient';
4+
const { x5cMultiple } = require('./keys');
5+
const { JwksClient } = require('../src/JwksClient');
66

77
describe('JwksClient', () => {
88
const jwksHost = 'http://my-authz-server';

‎tests/keys.js

+45-44
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,46 @@
1-
export const x5cSingle = {
2-
keys: [
3-
{
4-
alg: 'RS256',
5-
kty: 'RSA',
6-
use: 'sig',
7-
x5c: [
8-
'MIIDGzCCAgOgAwIBAgIJAPQM5+PwmOcPMA0GCSqGSIb3DQEBCwUAMCQxIjAgBgNVBAMMGXNhbmRyaW5vLWRldi5ldS5hdXRoMC5jb20wHhcNMTUwMzMxMDkwNTQ3WhcNMjgxMjA3MDkwNTQ3WjAkMSIwIAYDVQQDDBlzYW5kcmluby1kZXYuZXUuYXV0aDAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv/SECtT7H4rxKtX2HpGhSyeYTe3Vet8YQpjBAr+1TnQ1fcYfvfmnVRHvhmTwABktD1erF1lxFsrRw92yBDOHlL7lj1n2fcfLftSoStgvRHVg52kR+CkBVQ6/mF1lYkefIjik6YRMf55Eu4FqDyVG2dgd5EA8kNO4J8OPc7vAtZyXrRYOZjVXbEgyjje/V+OpMQxAHP2Er11TLuzJjioP0ICVqhAZdq2sLk7agoxn64md6fqOk4N+7lJkU4+412VD0qYwKxD7nGsEclYawKoZD9/xhCk2qfQ/HptIumrdQ5ox3Sq5t2a7VKa41dBUQ1MQtXG2iY7S9RlfcMIyQwGhOQIDAQABo1AwTjAdBgNVHQ4EFgQUHpS1fvO/54G2c1VpEDNUZRSl44gwHwYDVR0jBBgwFoAUHpS1fvO/54G2c1VpEDNUZRSl44gwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAtm9I0nr6eXF5aq4yllfiqZcQ6mKrJLH9Rm4Jv+olniNynTcnpwprRVLToIawc8MmzIGZTtCn7u+dSxWf1UNE+SH7XgEnGtO74239vleEx1+Tf5viIdsnCxgvFiPdOqRlc9KcFSWd6a7RzcglnyU7GEx0K5GLv1wPA6qEM+3uwNwjAyVSu5dFw8kCfaSvlk5rXKRUzSoW9NVomw6+tADR8vMZS+4KThZ+4GH0rMN4KjIaRFxW8OMVYOn12uq33fLCd6MuPHW/rklxLbQBoHIU/ClNhbD0t6f00w9lHhPy4IP73rv7Oow0Ny6i70Iq0ijqj+kAtnrphlOvLFxqn6nCvQ=='
9-
],
10-
n: 'v_SECtT7H4rxKtX2HpGhSyeYTe3Vet8YQpjBAr-1TnQ1fcYfvfmnVRHvhmTwABktD1erF1lxFsrRw92yBDOHlL7lj1n2fcfLftSoStgvRHVg52kR-CkBVQ6_mF1lYkefIjik6YRMf55Eu4FqDyVG2dgd5EA8kNO4J8OPc7vAtZyXrRYOZjVXbEgyjje_V-OpMQxAHP2Er11TLuzJjioP0ICVqhAZdq2sLk7agoxn64md6fqOk4N-7lJkU4-412VD0qYwKxD7nGsEclYawKoZD9_xhCk2qfQ_HptIumrdQ5ox3Sq5t2a7VKa41dBUQ1MQtXG2iY7S9RlfcMIyQwGhOQ',
11-
e: 'AQAB',
12-
kid: 'NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA',
13-
x5t: 'NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA'
14-
}
15-
]
16-
};
17-
18-
export const x5cMultiple = {
19-
keys: [
20-
{
21-
alg: 'RS256',
22-
kty: 'RSA',
23-
use: 'sig',
24-
x5c: [
25-
'MIIDDTCCAfWgAwIBAgIJAJVkuSv2H8mDMA0GCSqGSIb3DQEBBQUAMB0xGzAZBgNVBAMMEnNhbmRyaW5vLmF1dGgwLmNvbTAeFw0xNDA1MTQyMTIyMjZaFw0yODAxMjEyMTIyMjZaMB0xGzAZBgNVBAMMEnNhbmRyaW5vLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL6jWASkHhXz5Ug6t5BsYBrXDIgrWu05f3oq2fE+5J5REKJiY0Ddc+Kda34ZwOptnUoef3JwKPDAckTJQDugweNNZPwOmFMRKj4xqEpxEkIX8C+zHs41Q6x54ZZy0xU+WvTGcdjzyZTZ/h0iOYisswFQT/s6750tZG0BOBtZ5qS/80tmWH7xFitgewdWteJaASE/eO1qMtdNsp9fxOtN5U/pZDUyFm3YRfOcODzVqp3wOz+dcKb7cdZN11EYGZOkjEekpcedzHCo9H4aOmdKCpytqL/9FXoihcBMg39s1OW3cfwfgf5/kvOJdcqR4PoATQTfsDVoeMWVB4XLGR6SC5kCAwEAAaNQME4wHQYDVR0OBBYEFHDYn9BQdup1CoeoFi0Rmf5xn/W9MB8GA1UdIwQYMBaAFHDYn9BQdup1CoeoFi0Rmf5xn/W9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAGLpQZdd2ICVnGjc6CYfT3VNoujKYWk7E0shGaCXFXptrZ8yaryfo6WAizTfgOpQNJH+Jz+QsCjvkRt6PBSYX/hb5OUDU2zNJN48/VOw57nzWdjI70H2Ar4oJLck36xkIRs/+QX+mSNCjZboRwh0LxanXeALHSbCgJkbzWbjVnfJEQUP9P/7NGf0MkO5I95C/Pz9g91y8gU+R3imGppLy9Zx+OwADFwKAEJak4JrNgcjHBQenakAXnXP6HG4hHH4MzO8LnLiKv8ZkKVL67da/80PcpO0miMNPaqBBMd2Cy6GzQYE0ag6k0nk+DMIFn7K+o21gjUuOEJqIbAvhbf2KcM='
26-
],
27-
n: 'vqNYBKQeFfPlSDq3kGxgGtcMiCta7Tl_eirZ8T7knlEQomJjQN1z4p1rfhnA6m2dSh5_cnAo8MByRMlAO6DB401k_A6YUxEqPjGoSnESQhfwL7MezjVDrHnhlnLTFT5a9MZx2PPJlNn-HSI5iKyzAVBP-zrvnS1kbQE4G1nmpL_zS2ZYfvEWK2B7B1a14loBIT947Woy102yn1_E603lT-lkNTIWbdhF85w4PNWqnfA7P51wpvtx1k3XURgZk6SMR6Slx53McKj0fho6Z0oKnK2ov_0VeiKFwEyDf2zU5bdx_B-B_n-S84l1ypHg-gBNBN-wNWh4xZUHhcsZHpILmQ',
28-
e: 'AQAB',
29-
kid: 'RkI5MjI5OUY5ODc1N0Q4QzM0OUYzNkVGMTJDOUEzQkFCOTU3NjE2Rg',
30-
x5t: 'RkI5MjI5OUY5ODc1N0Q4QzM0OUYzNkVGMTJDOUEzQkFCOTU3NjE2Rg'
31-
},
32-
{
33-
alg: 'RS256',
34-
kty: 'RSA',
35-
use: 'sig',
36-
x5c: [
37-
'MIIDGzCCAgOgAwIBAgIJAPQM5+PwmOcPMA0GCSqGSIb3DQEBCwUAMCQxIjAgBgNVBAMMGXNhbmRyaW5vLWRldi5ldS5hdXRoMC5jb20wHhcNMTUwMzMxMDkwNTQ3WhcNMjgxMjA3MDkwNTQ3WjAkMSIwIAYDVQQDDBlzYW5kcmluby1kZXYuZXUuYXV0aDAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv/SECtT7H4rxKtX2HpGhSyeYTe3Vet8YQpjBAr+1TnQ1fcYfvfmnVRHvhmTwABktD1erF1lxFsrRw92yBDOHlL7lj1n2fcfLftSoStgvRHVg52kR+CkBVQ6/mF1lYkefIjik6YRMf55Eu4FqDyVG2dgd5EA8kNO4J8OPc7vAtZyXrRYOZjVXbEgyjje/V+OpMQxAHP2Er11TLuzJjioP0ICVqhAZdq2sLk7agoxn64md6fqOk4N+7lJkU4+412VD0qYwKxD7nGsEclYawKoZD9/xhCk2qfQ/HptIumrdQ5ox3Sq5t2a7VKa41dBUQ1MQtXG2iY7S9RlfcMIyQwGhOQIDAQABo1AwTjAdBgNVHQ4EFgQUHpS1fvO/54G2c1VpEDNUZRSl44gwHwYDVR0jBBgwFoAUHpS1fvO/54G2c1VpEDNUZRSl44gwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAtm9I0nr6eXF5aq4yllfiqZcQ6mKrJLH9Rm4Jv+olniNynTcnpwprRVLToIawc8MmzIGZTtCn7u+dSxWf1UNE+SH7XgEnGtO74239vleEx1+Tf5viIdsnCxgvFiPdOqRlc9KcFSWd6a7RzcglnyU7GEx0K5GLv1wPA6qEM+3uwNwjAyVSu5dFw8kCfaSvlk5rXKRUzSoW9NVomw6+tADR8vMZS+4KThZ+4GH0rMN4KjIaRFxW8OMVYOn12uq33fLCd6MuPHW/rklxLbQBoHIU/ClNhbD0t6f00w9lHhPy4IP73rv7Oow0Ny6i70Iq0ijqj+kAtnrphlOvLFxqn6nCvQ=='
38-
],
39-
n: 'v_SECtT7H4rxKtX2HpGhSyeYTe3Vet8YQpjBAr-1TnQ1fcYfvfmnVRHvhmTwABktD1erF1lxFsrRw92yBDOHlL7lj1n2fcfLftSoStgvRHVg52kR-CkBVQ6_mF1lYkefIjik6YRMf55Eu4FqDyVG2dgd5EA8kNO4J8OPc7vAtZyXrRYOZjVXbEgyjje_V-OpMQxAHP2Er11TLuzJjioP0ICVqhAZdq2sLk7agoxn64md6fqOk4N-7lJkU4-412VD0qYwKxD7nGsEclYawKoZD9_xhCk2qfQ_HptIumrdQ5ox3Sq5t2a7VKa41dBUQ1MQtXG2iY7S9RlfcMIyQwGhOQ',
40-
e: 'AQAB',
41-
kid: 'NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA',
42-
x5t: 'NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA'
43-
}
44-
]
1+
module.exports = {
2+
x5cSingle: {
3+
keys: [
4+
{
5+
alg: 'RS256',
6+
kty: 'RSA',
7+
use: 'sig',
8+
x5c: [
9+
'MIIDGzCCAgOgAwIBAgIJAPQM5+PwmOcPMA0GCSqGSIb3DQEBCwUAMCQxIjAgBgNVBAMMGXNhbmRyaW5vLWRldi5ldS5hdXRoMC5jb20wHhcNMTUwMzMxMDkwNTQ3WhcNMjgxMjA3MDkwNTQ3WjAkMSIwIAYDVQQDDBlzYW5kcmluby1kZXYuZXUuYXV0aDAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv/SECtT7H4rxKtX2HpGhSyeYTe3Vet8YQpjBAr+1TnQ1fcYfvfmnVRHvhmTwABktD1erF1lxFsrRw92yBDOHlL7lj1n2fcfLftSoStgvRHVg52kR+CkBVQ6/mF1lYkefIjik6YRMf55Eu4FqDyVG2dgd5EA8kNO4J8OPc7vAtZyXrRYOZjVXbEgyjje/V+OpMQxAHP2Er11TLuzJjioP0ICVqhAZdq2sLk7agoxn64md6fqOk4N+7lJkU4+412VD0qYwKxD7nGsEclYawKoZD9/xhCk2qfQ/HptIumrdQ5ox3Sq5t2a7VKa41dBUQ1MQtXG2iY7S9RlfcMIyQwGhOQIDAQABo1AwTjAdBgNVHQ4EFgQUHpS1fvO/54G2c1VpEDNUZRSl44gwHwYDVR0jBBgwFoAUHpS1fvO/54G2c1VpEDNUZRSl44gwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAtm9I0nr6eXF5aq4yllfiqZcQ6mKrJLH9Rm4Jv+olniNynTcnpwprRVLToIawc8MmzIGZTtCn7u+dSxWf1UNE+SH7XgEnGtO74239vleEx1+Tf5viIdsnCxgvFiPdOqRlc9KcFSWd6a7RzcglnyU7GEx0K5GLv1wPA6qEM+3uwNwjAyVSu5dFw8kCfaSvlk5rXKRUzSoW9NVomw6+tADR8vMZS+4KThZ+4GH0rMN4KjIaRFxW8OMVYOn12uq33fLCd6MuPHW/rklxLbQBoHIU/ClNhbD0t6f00w9lHhPy4IP73rv7Oow0Ny6i70Iq0ijqj+kAtnrphlOvLFxqn6nCvQ=='
10+
],
11+
n: 'v_SECtT7H4rxKtX2HpGhSyeYTe3Vet8YQpjBAr-1TnQ1fcYfvfmnVRHvhmTwABktD1erF1lxFsrRw92yBDOHlL7lj1n2fcfLftSoStgvRHVg52kR-CkBVQ6_mF1lYkefIjik6YRMf55Eu4FqDyVG2dgd5EA8kNO4J8OPc7vAtZyXrRYOZjVXbEgyjje_V-OpMQxAHP2Er11TLuzJjioP0ICVqhAZdq2sLk7agoxn64md6fqOk4N-7lJkU4-412VD0qYwKxD7nGsEclYawKoZD9_xhCk2qfQ_HptIumrdQ5ox3Sq5t2a7VKa41dBUQ1MQtXG2iY7S9RlfcMIyQwGhOQ',
12+
e: 'AQAB',
13+
kid: 'NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA',
14+
x5t: 'NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA'
15+
}
16+
]
17+
},
18+
x5cMultiple: {
19+
keys: [
20+
{
21+
alg: 'RS256',
22+
kty: 'RSA',
23+
use: 'sig',
24+
x5c: [
25+
'MIIDDTCCAfWgAwIBAgIJAJVkuSv2H8mDMA0GCSqGSIb3DQEBBQUAMB0xGzAZBgNVBAMMEnNhbmRyaW5vLmF1dGgwLmNvbTAeFw0xNDA1MTQyMTIyMjZaFw0yODAxMjEyMTIyMjZaMB0xGzAZBgNVBAMMEnNhbmRyaW5vLmF1dGgwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL6jWASkHhXz5Ug6t5BsYBrXDIgrWu05f3oq2fE+5J5REKJiY0Ddc+Kda34ZwOptnUoef3JwKPDAckTJQDugweNNZPwOmFMRKj4xqEpxEkIX8C+zHs41Q6x54ZZy0xU+WvTGcdjzyZTZ/h0iOYisswFQT/s6750tZG0BOBtZ5qS/80tmWH7xFitgewdWteJaASE/eO1qMtdNsp9fxOtN5U/pZDUyFm3YRfOcODzVqp3wOz+dcKb7cdZN11EYGZOkjEekpcedzHCo9H4aOmdKCpytqL/9FXoihcBMg39s1OW3cfwfgf5/kvOJdcqR4PoATQTfsDVoeMWVB4XLGR6SC5kCAwEAAaNQME4wHQYDVR0OBBYEFHDYn9BQdup1CoeoFi0Rmf5xn/W9MB8GA1UdIwQYMBaAFHDYn9BQdup1CoeoFi0Rmf5xn/W9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAGLpQZdd2ICVnGjc6CYfT3VNoujKYWk7E0shGaCXFXptrZ8yaryfo6WAizTfgOpQNJH+Jz+QsCjvkRt6PBSYX/hb5OUDU2zNJN48/VOw57nzWdjI70H2Ar4oJLck36xkIRs/+QX+mSNCjZboRwh0LxanXeALHSbCgJkbzWbjVnfJEQUP9P/7NGf0MkO5I95C/Pz9g91y8gU+R3imGppLy9Zx+OwADFwKAEJak4JrNgcjHBQenakAXnXP6HG4hHH4MzO8LnLiKv8ZkKVL67da/80PcpO0miMNPaqBBMd2Cy6GzQYE0ag6k0nk+DMIFn7K+o21gjUuOEJqIbAvhbf2KcM='
26+
],
27+
n: 'vqNYBKQeFfPlSDq3kGxgGtcMiCta7Tl_eirZ8T7knlEQomJjQN1z4p1rfhnA6m2dSh5_cnAo8MByRMlAO6DB401k_A6YUxEqPjGoSnESQhfwL7MezjVDrHnhlnLTFT5a9MZx2PPJlNn-HSI5iKyzAVBP-zrvnS1kbQE4G1nmpL_zS2ZYfvEWK2B7B1a14loBIT947Woy102yn1_E603lT-lkNTIWbdhF85w4PNWqnfA7P51wpvtx1k3XURgZk6SMR6Slx53McKj0fho6Z0oKnK2ov_0VeiKFwEyDf2zU5bdx_B-B_n-S84l1ypHg-gBNBN-wNWh4xZUHhcsZHpILmQ',
28+
e: 'AQAB',
29+
kid: 'RkI5MjI5OUY5ODc1N0Q4QzM0OUYzNkVGMTJDOUEzQkFCOTU3NjE2Rg',
30+
x5t: 'RkI5MjI5OUY5ODc1N0Q4QzM0OUYzNkVGMTJDOUEzQkFCOTU3NjE2Rg'
31+
},
32+
{
33+
alg: 'RS256',
34+
kty: 'RSA',
35+
use: 'sig',
36+
x5c: [
37+
'MIIDGzCCAgOgAwIBAgIJAPQM5+PwmOcPMA0GCSqGSIb3DQEBCwUAMCQxIjAgBgNVBAMMGXNhbmRyaW5vLWRldi5ldS5hdXRoMC5jb20wHhcNMTUwMzMxMDkwNTQ3WhcNMjgxMjA3MDkwNTQ3WjAkMSIwIAYDVQQDDBlzYW5kcmluby1kZXYuZXUuYXV0aDAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv/SECtT7H4rxKtX2HpGhSyeYTe3Vet8YQpjBAr+1TnQ1fcYfvfmnVRHvhmTwABktD1erF1lxFsrRw92yBDOHlL7lj1n2fcfLftSoStgvRHVg52kR+CkBVQ6/mF1lYkefIjik6YRMf55Eu4FqDyVG2dgd5EA8kNO4J8OPc7vAtZyXrRYOZjVXbEgyjje/V+OpMQxAHP2Er11TLuzJjioP0ICVqhAZdq2sLk7agoxn64md6fqOk4N+7lJkU4+412VD0qYwKxD7nGsEclYawKoZD9/xhCk2qfQ/HptIumrdQ5ox3Sq5t2a7VKa41dBUQ1MQtXG2iY7S9RlfcMIyQwGhOQIDAQABo1AwTjAdBgNVHQ4EFgQUHpS1fvO/54G2c1VpEDNUZRSl44gwHwYDVR0jBBgwFoAUHpS1fvO/54G2c1VpEDNUZRSl44gwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAtm9I0nr6eXF5aq4yllfiqZcQ6mKrJLH9Rm4Jv+olniNynTcnpwprRVLToIawc8MmzIGZTtCn7u+dSxWf1UNE+SH7XgEnGtO74239vleEx1+Tf5viIdsnCxgvFiPdOqRlc9KcFSWd6a7RzcglnyU7GEx0K5GLv1wPA6qEM+3uwNwjAyVSu5dFw8kCfaSvlk5rXKRUzSoW9NVomw6+tADR8vMZS+4KThZ+4GH0rMN4KjIaRFxW8OMVYOn12uq33fLCd6MuPHW/rklxLbQBoHIU/ClNhbD0t6f00w9lHhPy4IP73rv7Oow0Ny6i70Iq0ijqj+kAtnrphlOvLFxqn6nCvQ=='
38+
],
39+
n: 'v_SECtT7H4rxKtX2HpGhSyeYTe3Vet8YQpjBAr-1TnQ1fcYfvfmnVRHvhmTwABktD1erF1lxFsrRw92yBDOHlL7lj1n2fcfLftSoStgvRHVg52kR-CkBVQ6_mF1lYkefIjik6YRMf55Eu4FqDyVG2dgd5EA8kNO4J8OPc7vAtZyXrRYOZjVXbEgyjje_V-OpMQxAHP2Er11TLuzJjioP0ICVqhAZdq2sLk7agoxn64md6fqOk4N-7lJkU4-412VD0qYwKxD7nGsEclYawKoZD9_xhCk2qfQ_HptIumrdQ5ox3Sq5t2a7VKa41dBUQ1MQtXG2iY7S9RlfcMIyQwGhOQ',
40+
e: 'AQAB',
41+
kid: 'NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA',
42+
x5t: 'NkFCNEE1NDFDNTQ5RTQ5OTE1QzRBMjYyMzY0NEJCQTJBMjJBQkZCMA'
43+
}
44+
]
45+
}
4546
};

‎tests/koa.tests.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import request from 'supertest';
2-
import { expect } from 'chai';
1+
const request = require('supertest');
2+
const { expect } = require('chai');
33

4-
import { jwksEndpoint } from './mocks/jwks';
5-
import { publicKey, privateKey, randomPublicKey1 } from './mocks/keys';
6-
import { createToken, createSymmetricToken } from './mocks/tokens';
4+
const { jwksEndpoint } = require('./mocks/jwks');
5+
const { publicKey, privateKey, randomPublicKey1 } = require('./mocks/keys');
6+
const { createToken, createSymmetricToken } = require('./mocks/tokens');
77

88
const Koa = require('koa');
99
const koaJwt = require('koa-jwt');

‎tests/mocks/jwks.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import nock from 'nock';
2-
import jose from 'jose';
1+
const nock = require('nock');
2+
const jose = require('jose');
33

4-
export function jwksEndpoint(host, certs) {
4+
function jwksEndpoint(host, certs) {
55
return nock(host)
66
.get('/.well-known/jwks.json')
77
.reply(200, {
@@ -15,3 +15,7 @@ export function jwksEndpoint(host, certs) {
1515
})
1616
});
1717
}
18+
19+
module.exports = {
20+
jwksEndpoint
21+
};

‎tests/mocks/keys.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
export const publicKey = `-----BEGIN PUBLIC KEY-----
1+
const publicKey = `-----BEGIN PUBLIC KEY-----
22
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd
33
UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs
44
HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D
55
o2kQ+X5xK9cipRgEKwIDAQAB
66
-----END PUBLIC KEY-----`;
77

8-
export const privateKey = `-----BEGIN RSA PRIVATE KEY-----
8+
const privateKey = `-----BEGIN RSA PRIVATE KEY-----
99
MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kV
1010
w33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4
1111
qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDA
@@ -21,7 +21,7 @@ SDOxQ4G/523Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDa
2121
bxrE9MNUZ2aPFaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==
2222
-----END RSA PRIVATE KEY-----`;
2323

24-
export const randomPublicKey1 = `-----BEGIN PUBLIC KEY-----
24+
const randomPublicKey1 = `-----BEGIN PUBLIC KEY-----
2525
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvqNYBKQeFfPlSDq3kGxg
2626
GtcMiCta7Tl/eirZ8T7knlEQomJjQN1z4p1rfhnA6m2dSh5/cnAo8MByRMlAO6DB
2727
401k/A6YUxEqPjGoSnESQhfwL7MezjVDrHnhlnLTFT5a9MZx2PPJlNn+HSI5iKyz
@@ -30,3 +30,9 @@ T+lkNTIWbdhF85w4PNWqnfA7P51wpvtx1k3XURgZk6SMR6Slx53McKj0fho6Z0oK
3030
nK2ov/0VeiKFwEyDf2zU5bdx/B+B/n+S84l1ypHg+gBNBN+wNWh4xZUHhcsZHpIL
3131
mQIDAQAB
3232
-----END PUBLIC KEY-----`;
33+
34+
module.exports = {
35+
publicKey,
36+
privateKey,
37+
randomPublicKey1
38+
};

‎tests/mocks/tokens.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1-
import jwt from 'jsonwebtoken';
1+
const jwt = require('jsonwebtoken');
22

3-
export function createToken(key, kid, payload) {
3+
function createToken(key, kid, payload) {
44
return jwt.sign(payload, key, { noTimestamp: true, algorithm: 'RS256', header: { alg: 'RS256', kid } });
55
}
66

7-
export function createSymmetricToken(key, payload) {
7+
function createSymmetricToken(key, payload) {
88
return jwt.sign(payload, key, { noTimestamp: true, algorithm: 'HS256', header: { alg: 'HS256' } });
99
}
10+
11+
module.exports = {
12+
createToken,
13+
createSymmetricToken
14+
};

‎tests/passport.tests.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import request from 'supertest';
2-
import { expect } from 'chai';
1+
const request = require('supertest');
2+
const { expect } = require('chai');
33

4-
import { jwksEndpoint } from './mocks/jwks';
5-
import { publicKey, privateKey, randomPublicKey1 } from './mocks/keys';
6-
import { createToken, createSymmetricToken } from './mocks/tokens';
4+
const { jwksEndpoint } = require('./mocks/jwks');
5+
const { publicKey, privateKey, randomPublicKey1 } = require('./mocks/keys');
6+
const { createToken, createSymmetricToken } = require('./mocks/tokens');
77

88
const Express = require('express');
99
const passport = require('passport');

‎tests/rateLimit.tests.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import nock from 'nock';
2-
import { expect } from 'chai';
1+
const nock = require('nock');
2+
const { expect } = require('chai');
33

4-
import { x5cSingle } from './keys';
5-
import { JwksClient } from '../src/JwksClient';
4+
const { x5cSingle } = require('./keys');
5+
const { JwksClient } = require('../src/JwksClient');
66

77
describe('JwksClient (cache)', () => {
88
const jwksHost = 'http://my-authz-server';

‎tests/request.tests.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { expect } from 'chai';
2-
import nock from 'nock';
3-
import request from '../src/wrappers/request';
1+
const nock = require('nock');
2+
const { expect } = require('chai');
3+
const { request } = require('../src/wrappers');
44

55
describe('Request wrapper tests', () => {
66
const jwksHost = 'http://my-authz-server';

0 commit comments

Comments
 (0)
Please sign in to comment.