@kaapi/oauth2-auth-design 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/kaukau.config.mjs +20 -0
  2. package/lib/cli.d.ts +13 -0
  3. package/lib/cli.js +181 -0
  4. package/lib/cli.js.map +1 -0
  5. package/lib/flows/auth-code/authorization-route.d.ts +58 -7
  6. package/lib/flows/auth-code/authorization-route.js +139 -52
  7. package/lib/flows/auth-code/authorization-route.js.map +1 -1
  8. package/lib/flows/auth-code/authorization-utils.d.ts +35 -0
  9. package/lib/flows/auth-code/authorization-utils.js +44 -0
  10. package/lib/flows/auth-code/authorization-utils.js.map +1 -0
  11. package/lib/flows/auth-code/token-route.d.ts +10 -18
  12. package/lib/flows/auth-code/token-route.js +6 -15
  13. package/lib/flows/auth-code/token-route.js.map +1 -1
  14. package/lib/flows/authorization-code.d.ts +112 -0
  15. package/lib/flows/authorization-code.js +570 -0
  16. package/lib/flows/authorization-code.js.map +1 -0
  17. package/lib/flows/client-credentials.d.ts +79 -39
  18. package/lib/flows/client-credentials.js +324 -257
  19. package/lib/flows/client-credentials.js.map +1 -1
  20. package/lib/flows/client-creds/token-route.d.ts +23 -0
  21. package/lib/flows/client-creds/token-route.js +52 -0
  22. package/lib/flows/client-creds/token-route.js.map +1 -0
  23. package/lib/flows/common.d.ts +265 -28
  24. package/lib/flows/common.js +293 -29
  25. package/lib/flows/common.js.map +1 -1
  26. package/lib/flows/device-auth/authorization-route.d.ts +83 -0
  27. package/lib/flows/device-auth/authorization-route.js +68 -0
  28. package/lib/flows/device-auth/authorization-route.js.map +1 -0
  29. package/lib/flows/device-auth/token-route.d.ts +29 -0
  30. package/lib/flows/device-auth/token-route.js +49 -0
  31. package/lib/flows/device-auth/token-route.js.map +1 -0
  32. package/lib/flows/device-authorization.d.ts +112 -0
  33. package/lib/flows/device-authorization.js +523 -0
  34. package/lib/flows/device-authorization.js.map +1 -0
  35. package/lib/flows/oidc-multiple-flows.d.ts +59 -0
  36. package/lib/flows/oidc-multiple-flows.js +268 -0
  37. package/lib/flows/oidc-multiple-flows.js.map +1 -0
  38. package/lib/index.d.ts +12 -6
  39. package/lib/index.js +12 -6
  40. package/lib/index.js.map +1 -1
  41. package/lib/utils/client-auth-methods.d.ts +2 -2
  42. package/lib/utils/client-auth-methods.js +5 -6
  43. package/lib/utils/client-auth-methods.js.map +1 -1
  44. package/lib/utils/in-memory-key-store.d.ts +12 -0
  45. package/lib/utils/in-memory-key-store.js +46 -0
  46. package/lib/utils/in-memory-key-store.js.map +1 -0
  47. package/lib/utils/jwt-authority.d.ts +81 -0
  48. package/lib/utils/jwt-authority.js +186 -0
  49. package/lib/utils/jwt-authority.js.map +1 -0
  50. package/lib/utils/jwt-utils.d.ts +33 -0
  51. package/lib/utils/jwt-utils.js +24 -0
  52. package/lib/utils/jwt-utils.js.map +1 -0
  53. package/lib/utils/replay-store.d.ts +13 -0
  54. package/lib/utils/{cache-set.js → replay-store.js} +8 -4
  55. package/lib/utils/replay-store.js.map +1 -0
  56. package/lib/utils/token-types.d.ts +6 -3
  57. package/lib/utils/token-types.js +13 -10
  58. package/lib/utils/token-types.js.map +1 -1
  59. package/lib/utils/verify-code-verifier.d.ts +4 -0
  60. package/lib/utils/verify-code-verifier.js +18 -0
  61. package/lib/utils/verify-code-verifier.js.map +1 -0
  62. package/package.json +11 -7
  63. package/lib/flows/auth-code/open-id.d.ts +0 -53
  64. package/lib/flows/auth-code/open-id.js +0 -199
  65. package/lib/flows/auth-code/open-id.js.map +0 -1
  66. package/lib/flows/auth-code.ts/open-id.d.ts +0 -52
  67. package/lib/flows/auth-code.ts/open-id.js +0 -169
  68. package/lib/flows/auth-code.ts/open-id.js.map +0 -1
  69. package/lib/flows/authentication-code.d.ts +0 -53
  70. package/lib/flows/authentication-code.js +0 -380
  71. package/lib/flows/authentication-code.js.map +0 -1
  72. package/lib/utils/cache-set.d.ts +0 -12
  73. package/lib/utils/cache-set.js.map +0 -1
  74. package/lib/utils/in-memory-cache.d.ts +0 -5
  75. package/lib/utils/in-memory-cache.js +0 -30
  76. package/lib/utils/in-memory-cache.js.map +0 -1
  77. package/lib/utils/in-memory-jwks-store.d.ts +0 -12
  78. package/lib/utils/in-memory-jwks-store.js +0 -46
  79. package/lib/utils/in-memory-jwks-store.js.map +0 -1
  80. package/lib/utils/jwks-generator.d.ts +0 -58
  81. package/lib/utils/jwks-generator.js +0 -141
  82. package/lib/utils/jwks-generator.js.map +0 -1
  83. package/lib/utils/jwks-store.d.ts +0 -13
  84. package/lib/utils/jwks-store.js +0 -3
  85. package/lib/utils/jwks-store.js.map +0 -1
@@ -1,141 +0,0 @@
1
- "use strict";
2
- var _JWKSGenerator_store, _JWKSGenerator_ttlSeconds;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.JWKSGenerator = void 0;
5
- exports.createIDToken = createIDToken;
6
- const tslib_1 = require("tslib");
7
- const jsonwebtoken_1 = require("jsonwebtoken");
8
- const node_jose_1 = tslib_1.__importDefault(require("node-jose"));
9
- const jwk_to_pem_1 = tslib_1.__importDefault(require("jwk-to-pem"));
10
- function createIDToken(generator, payload) {
11
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
12
- const ttlSeconds = generator.ttl;
13
- const now = Math.floor(Date.now() / 1000);
14
- return yield generator.sign(Object.assign(Object.assign({}, (payload)), { exp: typeof ttlSeconds === 'number' ? now + ttlSeconds : payload === null || payload === void 0 ? void 0 : payload.exp, iat: now }));
15
- });
16
- }
17
- /**
18
- * JWKSGenerator class
19
- */
20
- class JWKSGenerator {
21
- /**
22
- * ttl in seconds
23
- */
24
- get ttl() {
25
- return tslib_1.__classPrivateFieldGet(this, _JWKSGenerator_ttlSeconds, "f");
26
- }
27
- /**
28
- * ttl in seconds
29
- */
30
- set ttl(ttlSeconds) {
31
- if (['number', 'undefined'].includes(typeof ttlSeconds))
32
- tslib_1.__classPrivateFieldSet(this, _JWKSGenerator_ttlSeconds, ttlSeconds, "f");
33
- }
34
- constructor(store, ttlSeconds) {
35
- _JWKSGenerator_store.set(this, void 0);
36
- _JWKSGenerator_ttlSeconds.set(this, void 0);
37
- tslib_1.__classPrivateFieldSet(this, _JWKSGenerator_store, store, "f");
38
- tslib_1.__classPrivateFieldSet(this, _JWKSGenerator_ttlSeconds, ttlSeconds, "f");
39
- }
40
- _retrieveKeyStore() {
41
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
42
- var _a;
43
- const ks = yield tslib_1.__classPrivateFieldGet(this, _JWKSGenerator_store, "f").get();
44
- if ((_a = ks === null || ks === void 0 ? void 0 : ks.keys) === null || _a === void 0 ? void 0 : _a.length) {
45
- return yield node_jose_1.default.JWK.asKeyStore(JSON.stringify(ks));
46
- }
47
- else {
48
- return node_jose_1.default.JWK.createKeyStore();
49
- }
50
- });
51
- }
52
- _saveKeyStore(keyStore) {
53
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
54
- const json = keyStore.toJSON(true);
55
- if (json && 'keys' in json && Array.isArray(json.keys)) {
56
- yield tslib_1.__classPrivateFieldGet(this, _JWKSGenerator_store, "f").set({ keys: json.keys }, tslib_1.__classPrivateFieldGet(this, _JWKSGenerator_ttlSeconds, "f"));
57
- }
58
- });
59
- }
60
- _generateIfEmpty() {
61
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
62
- const keyStore = yield this._retrieveKeyStore();
63
- const arr = keyStore.all({ use: 'sig' });
64
- if (!arr.length) {
65
- yield keyStore.generate('RSA', 2048, { alg: 'RS256', use: 'sig' });
66
- yield this._saveKeyStore(keyStore);
67
- }
68
- return keyStore;
69
- });
70
- }
71
- generateIfEmpty() {
72
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
73
- const keyStore = yield this._generateIfEmpty();
74
- const json = keyStore.toJSON();
75
- if (json && 'keys' in json && Array.isArray(json.keys)) {
76
- json.keys.reverse();
77
- }
78
- return json;
79
- });
80
- }
81
- /**
82
- * Generate a new key pair
83
- */
84
- generate() {
85
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
86
- const keyStore = yield this._retrieveKeyStore();
87
- yield keyStore.generate('RSA', 2048, { alg: 'RS256', use: 'sig' });
88
- yield this._saveKeyStore(keyStore);
89
- });
90
- }
91
- sign(payload) {
92
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
93
- const keyStore = yield this._generateIfEmpty();
94
- const key = keyStore.all({ use: 'sig' })
95
- .pop();
96
- if (!key)
97
- throw new Error('sign: KEY STORE IS EMPTY');
98
- const result = yield node_jose_1.default.JWS.createSign({ compact: true, fields: { typ: 'jwt' } }, key)
99
- .update(typeof payload === 'string' || payload instanceof Buffer ? payload : JSON.stringify(payload))
100
- .final();
101
- return `${result}`;
102
- });
103
- }
104
- /**
105
- * Get public keys
106
- */
107
- get() {
108
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
109
- const keyStore = yield this._retrieveKeyStore();
110
- const json = keyStore.toJSON();
111
- if (json && 'keys' in json && Array.isArray(json.keys)) {
112
- json.keys.reverse();
113
- }
114
- return json;
115
- });
116
- }
117
- getPublicKey(kid) {
118
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
119
- const keyStore = yield this._retrieveKeyStore();
120
- return keyStore.get(kid).toJSON();
121
- });
122
- }
123
- getPublicKeyAsPem(kid) {
124
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
125
- const key = yield this.getPublicKey(kid);
126
- return (0, jwk_to_pem_1.default)(key);
127
- });
128
- }
129
- verify(token) {
130
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
131
- var _a;
132
- const [header] = token.split('.');
133
- const kid = (_a = JSON.parse(Buffer.from(header, 'base64url').toString())) === null || _a === void 0 ? void 0 : _a.kid;
134
- const publicKey = yield this.getPublicKeyAsPem(kid);
135
- return (0, jsonwebtoken_1.verify)(token, publicKey);
136
- });
137
- }
138
- }
139
- exports.JWKSGenerator = JWKSGenerator;
140
- _JWKSGenerator_store = new WeakMap(), _JWKSGenerator_ttlSeconds = new WeakMap();
141
- //# sourceMappingURL=jwks-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jwks-generator.js","sourceRoot":"","sources":["../../src/utils/jwks-generator.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * JWKS interface
3
- */
4
- export interface JWKS {
5
- keys: Array<Record<string, unknown>>;
6
- }
7
- /**
8
- * JWKSStore interface
9
- */
10
- export interface JWKSStore {
11
- get(): Promise<JWKS | undefined>;
12
- set(jwks: JWKS, ttlSeconds?: number): Promise<void>;
13
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=jwks-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jwks-store.js","sourceRoot":"","sources":["../../src/utils/jwks-store.ts"],"names":[],"mappings":""}