@kaapi/oauth2-auth-design 0.0.13

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 (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/lib/flows/auth-code/authorization-route.d.ts +53 -0
  4. package/lib/flows/auth-code/authorization-route.js +202 -0
  5. package/lib/flows/auth-code/authorization-route.js.map +1 -0
  6. package/lib/flows/auth-code/open-id.d.ts +53 -0
  7. package/lib/flows/auth-code/open-id.js +199 -0
  8. package/lib/flows/auth-code/open-id.js.map +1 -0
  9. package/lib/flows/auth-code/token-route.d.ts +35 -0
  10. package/lib/flows/auth-code/token-route.js +61 -0
  11. package/lib/flows/auth-code/token-route.js.map +1 -0
  12. package/lib/flows/auth-code.ts/open-id.d.ts +52 -0
  13. package/lib/flows/auth-code.ts/open-id.js +169 -0
  14. package/lib/flows/auth-code.ts/open-id.js.map +1 -0
  15. package/lib/flows/authentication-code.d.ts +53 -0
  16. package/lib/flows/authentication-code.js +380 -0
  17. package/lib/flows/authentication-code.js.map +1 -0
  18. package/lib/flows/client-credentials.d.ts +55 -0
  19. package/lib/flows/client-credentials.js +318 -0
  20. package/lib/flows/client-credentials.js.map +1 -0
  21. package/lib/flows/common.d.ts +139 -0
  22. package/lib/flows/common.js +235 -0
  23. package/lib/flows/common.js.map +1 -0
  24. package/lib/index.d.ts +13 -0
  25. package/lib/index.js +16 -0
  26. package/lib/index.js.map +1 -0
  27. package/lib/utils/cache-set.d.ts +12 -0
  28. package/lib/utils/cache-set.js +35 -0
  29. package/lib/utils/cache-set.js.map +1 -0
  30. package/lib/utils/client-auth-methods.d.ts +77 -0
  31. package/lib/utils/client-auth-methods.js +225 -0
  32. package/lib/utils/client-auth-methods.js.map +1 -0
  33. package/lib/utils/in-memory-cache.d.ts +5 -0
  34. package/lib/utils/in-memory-cache.js +30 -0
  35. package/lib/utils/in-memory-cache.js.map +1 -0
  36. package/lib/utils/in-memory-jwks-store.d.ts +12 -0
  37. package/lib/utils/in-memory-jwks-store.js +46 -0
  38. package/lib/utils/in-memory-jwks-store.js.map +1 -0
  39. package/lib/utils/jwks-generator.d.ts +58 -0
  40. package/lib/utils/jwks-generator.js +141 -0
  41. package/lib/utils/jwks-generator.js.map +1 -0
  42. package/lib/utils/jwks-store.d.ts +13 -0
  43. package/lib/utils/jwks-store.js +3 -0
  44. package/lib/utils/jwks-store.js.map +1 -0
  45. package/lib/utils/token-types.d.ts +46 -0
  46. package/lib/utils/token-types.js +143 -0
  47. package/lib/utils/token-types.js.map +1 -0
  48. package/package.json +44 -0
  49. package/types/overrides.d.ts +14 -0
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ var _OAuth2WithJWKSAuthDesign_jwksGenerator;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OAuth2WithJWKSAuthDesign = exports.OAuth2AuthDesign = exports.OAuth2TokenResponse = exports.OAuth2RefreshTokenRoute = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const kaapi_1 = require("@kaapi/kaapi");
7
+ const in_memory_jwks_store_1 = require("../utils/in-memory-jwks-store");
8
+ const jwks_generator_1 = require("../utils/jwks-generator");
9
+ const token_types_1 = require("../utils/token-types");
10
+ const client_auth_methods_1 = require("../utils/client-auth-methods");
11
+ class OAuth2RefreshTokenRoute {
12
+ get path() {
13
+ return this._path;
14
+ }
15
+ get handler() {
16
+ return this._handler;
17
+ }
18
+ constructor(path, handler) {
19
+ this._path = path;
20
+ this._handler = handler;
21
+ }
22
+ }
23
+ exports.OAuth2RefreshTokenRoute = OAuth2RefreshTokenRoute;
24
+ class OAuth2TokenResponse {
25
+ constructor({ access_token, expires_in, refresh_token, scope, id_token }) {
26
+ this.tokenType = 'bearer';
27
+ this.accessToken = access_token;
28
+ this.expiresIn = expires_in;
29
+ this.refreshToken = refresh_token;
30
+ this.scope = scope;
31
+ this.idToken = id_token;
32
+ }
33
+ setAccessToken(value) {
34
+ this.accessToken = value;
35
+ return this;
36
+ }
37
+ getAccessToken() {
38
+ return this.accessToken;
39
+ }
40
+ setTokenType(value) {
41
+ this.tokenType = typeof value == 'string' ? value : value.prefix;
42
+ return this;
43
+ }
44
+ getTokenType() {
45
+ return this.tokenType;
46
+ }
47
+ /**
48
+ * @param value number of seconds
49
+ */
50
+ setExpiresIn(value) {
51
+ this.expiresIn = value;
52
+ return this;
53
+ }
54
+ /**
55
+ * @returns number of seconds
56
+ */
57
+ getExpiresIn() {
58
+ return this.expiresIn;
59
+ }
60
+ setRefreshToken(value) {
61
+ this.refreshToken = value;
62
+ return this;
63
+ }
64
+ getRefreshToken() {
65
+ return this.refreshToken;
66
+ }
67
+ setScope(value) {
68
+ this.scope = Array.isArray(value) ? value.join(' ') : value;
69
+ return this;
70
+ }
71
+ getScope() {
72
+ return this.scope;
73
+ }
74
+ setIDToken(value) {
75
+ this.idToken = value;
76
+ return this;
77
+ }
78
+ getIDToken() {
79
+ return this.idToken;
80
+ }
81
+ toObject() {
82
+ return {
83
+ access_token: this.getAccessToken(),
84
+ token_type: this.getTokenType(),
85
+ expires_in: this.getExpiresIn(),
86
+ refresh_token: this.getRefreshToken(),
87
+ scope: this.getScope(),
88
+ id_token: this.getIDToken(),
89
+ };
90
+ }
91
+ toJSON() {
92
+ return this.toObject();
93
+ }
94
+ }
95
+ exports.OAuth2TokenResponse = OAuth2TokenResponse;
96
+ //#endregion OAuth2TokenResponse
97
+ //#region OAuth2AuthDesign
98
+ class OAuth2AuthDesign extends kaapi_1.AuthDesign {
99
+ get tokenType() {
100
+ return this._tokenType.prefix;
101
+ }
102
+ get clientAuthMethods() {
103
+ const result = {
104
+ client_secret_basic: undefined,
105
+ client_secret_post: undefined,
106
+ client_secret_jwt: undefined,
107
+ private_key_jwt: undefined,
108
+ none: undefined
109
+ };
110
+ const keys = Object.keys(this._clientAuthMethods).map(key => {
111
+ const k = key;
112
+ result[k] = this._clientAuthMethods[k];
113
+ return this._clientAuthMethods[k] ? key : undefined;
114
+ }).filter((key) => !!key);
115
+ if (!keys.length) {
116
+ result.client_secret_basic = new client_auth_methods_1.ClientSecretBasic();
117
+ }
118
+ return result;
119
+ }
120
+ constructor() {
121
+ super();
122
+ this._clientAuthMethods = {
123
+ client_secret_basic: undefined,
124
+ client_secret_post: undefined,
125
+ client_secret_jwt: undefined,
126
+ private_key_jwt: undefined,
127
+ none: undefined
128
+ };
129
+ this._tokenType = new token_types_1.BearerToken();
130
+ /*{
131
+ prefix: 'Bearer',
132
+ isValid: () => ({ isValid: true })
133
+ }*/
134
+ }
135
+ _extractClientParams(req, authMethodsInstances, checkOrder) {
136
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
137
+ let clientId;
138
+ let clientSecret;
139
+ let error;
140
+ let errorDescription;
141
+ for (const am of checkOrder) {
142
+ const amInstance = authMethodsInstances[am];
143
+ if (amInstance) {
144
+ //console.log('Check', amInstance.method, '...')
145
+ const v = yield amInstance.extractParams(req);
146
+ if (v.hasAuthMethod) {
147
+ //console.log(amInstance.method, 'IS BEING USED')
148
+ clientId = v.clientId;
149
+ clientSecret = v.clientSecret;
150
+ if (!v.clientId) {
151
+ error = 'invalid_request';
152
+ errorDescription = `Error ${amInstance.method}: Missing client_id`;
153
+ }
154
+ else if (!amInstance.secretIsOptional && !v.clientSecret) {
155
+ error = 'invalid_request';
156
+ errorDescription = `Error ${amInstance.method}: Missing client_secret`;
157
+ }
158
+ break;
159
+ }
160
+ else {
161
+ //console.log(amInstance.method, 'was not used')
162
+ }
163
+ }
164
+ }
165
+ return {
166
+ error,
167
+ errorDescription,
168
+ clientId,
169
+ clientSecret
170
+ };
171
+ });
172
+ }
173
+ setTokenType(value) {
174
+ this._tokenType = value;
175
+ return this;
176
+ }
177
+ getTokenEndpointAuthMethods() {
178
+ const result = Object.keys(this._clientAuthMethods).map(key => {
179
+ return this._clientAuthMethods[key] ? key : undefined;
180
+ }).filter((key) => !!key);
181
+ if (!result.length) {
182
+ result.push('client_secret_basic');
183
+ }
184
+ return (0, client_auth_methods_1.sortTokenEndpointAuthMethods)(result);
185
+ }
186
+ clientSecretBasicAuthenticationMethod() {
187
+ this._clientAuthMethods.client_secret_basic = new client_auth_methods_1.ClientSecretBasic();
188
+ return this;
189
+ }
190
+ clientSecretPostAuthenticationMethod() {
191
+ this._clientAuthMethods.client_secret_post = new client_auth_methods_1.ClientSecretPost();
192
+ return this;
193
+ }
194
+ noneAuthenticationMethod() {
195
+ this._clientAuthMethods.none = new client_auth_methods_1.NoneAuthMethod();
196
+ return this;
197
+ }
198
+ addClientAuthenticationMethod(value) {
199
+ if (value == 'client_secret_basic') {
200
+ this.clientSecretPostAuthenticationMethod();
201
+ }
202
+ else if (value == 'client_secret_post') {
203
+ this.clientSecretBasicAuthenticationMethod();
204
+ }
205
+ else if (value == 'none') {
206
+ this.noneAuthenticationMethod();
207
+ }
208
+ else {
209
+ this._clientAuthMethods[value.method] = value;
210
+ }
211
+ return this;
212
+ }
213
+ }
214
+ exports.OAuth2AuthDesign = OAuth2AuthDesign;
215
+ class OAuth2WithJWKSAuthDesign extends OAuth2AuthDesign {
216
+ get jwksGenerator() {
217
+ return tslib_1.__classPrivateFieldGet(this, _OAuth2WithJWKSAuthDesign_jwksGenerator, "f");
218
+ }
219
+ constructor(jwksStore, ttlSeconds) {
220
+ super();
221
+ _OAuth2WithJWKSAuthDesign_jwksGenerator.set(this, void 0);
222
+ tslib_1.__classPrivateFieldSet(this, _OAuth2WithJWKSAuthDesign_jwksGenerator, new jwks_generator_1.JWKSGenerator(jwksStore || (0, in_memory_jwks_store_1.getInMemoryJWKSStore)(), ttlSeconds), "f");
223
+ }
224
+ setTokenTTL(ttlSeconds) {
225
+ tslib_1.__classPrivateFieldGet(this, _OAuth2WithJWKSAuthDesign_jwksGenerator, "f").ttl = ttlSeconds;
226
+ return this;
227
+ }
228
+ getTokenTTL() {
229
+ return tslib_1.__classPrivateFieldGet(this, _OAuth2WithJWKSAuthDesign_jwksGenerator, "f").ttl;
230
+ }
231
+ }
232
+ exports.OAuth2WithJWKSAuthDesign = OAuth2WithJWKSAuthDesign;
233
+ _OAuth2WithJWKSAuthDesign_jwksGenerator = new WeakMap();
234
+ //#endregion OAuth2AuthDesign
235
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/flows/common.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import '../types/overrides.d.ts'
2
+ export * from './flows/common';
3
+ export * from './flows/auth-code/authorization-route';
4
+ export * from './flows/auth-code/token-route';
5
+ export * from './flows/auth-code/open-id';
6
+ export * from './flows/authentication-code';
7
+ export * from './flows/client-credentials';
8
+ export * from './utils/cache-set';
9
+ export * from './utils/client-auth-methods';
10
+ export * from './utils/in-memory-jwks-store';
11
+ export * from './utils/jwks-generator';
12
+ export * from './utils/jwks-store';
13
+ export * from './utils/token-types';
package/lib/index.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./flows/common"), exports);
5
+ tslib_1.__exportStar(require("./flows/auth-code/authorization-route"), exports);
6
+ tslib_1.__exportStar(require("./flows/auth-code/token-route"), exports);
7
+ tslib_1.__exportStar(require("./flows/auth-code/open-id"), exports);
8
+ tslib_1.__exportStar(require("./flows/authentication-code"), exports);
9
+ tslib_1.__exportStar(require("./flows/client-credentials"), exports);
10
+ tslib_1.__exportStar(require("./utils/cache-set"), exports);
11
+ tslib_1.__exportStar(require("./utils/client-auth-methods"), exports);
12
+ tslib_1.__exportStar(require("./utils/in-memory-jwks-store"), exports);
13
+ tslib_1.__exportStar(require("./utils/jwks-generator"), exports);
14
+ tslib_1.__exportStar(require("./utils/jwks-store"), exports);
15
+ tslib_1.__exportStar(require("./utils/token-types"), exports);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAA8B;AAC9B,gFAAqD;AACrD,wEAA6C;AAC7C,oEAAyC;AACzC,sEAA2C;AAC3C,qEAA0C;AAE1C,4DAAiC;AACjC,sEAA2C;AAC3C,uEAA4C;AAC5C,iEAAsC;AACtC,6DAAkC;AAClC,8DAAmC"}
@@ -0,0 +1,12 @@
1
+ export interface CacheSet<T extends string | number> {
2
+ has(value: T): Promise<boolean>;
3
+ delete(value: T): Promise<void>;
4
+ add(value: T, ttlSeconds: number): Promise<void>;
5
+ }
6
+ export declare class InMemoryTmpCache<T extends string | number = string | number> implements CacheSet<T> {
7
+ private values;
8
+ has(value: T): Promise<boolean>;
9
+ delete(value: T): Promise<void>;
10
+ add(value: T, ttlSeconds: number): Promise<void>;
11
+ }
12
+ export type StringCacheSet = CacheSet<string>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryTmpCache = void 0;
4
+ const tslib_1 = require("tslib");
5
+ class InMemoryTmpCache {
6
+ constructor() {
7
+ this.values = {};
8
+ }
9
+ has(value) {
10
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
11
+ if (this.values[`${value}`]) {
12
+ return true;
13
+ }
14
+ return false;
15
+ });
16
+ }
17
+ delete(value) {
18
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
19
+ delete this.values[`${value}`];
20
+ });
21
+ }
22
+ add(value, ttlSeconds) {
23
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
24
+ const to = this.values[`${value}`];
25
+ if (to) {
26
+ clearTimeout(to);
27
+ }
28
+ this.values[`${value}`] = setTimeout(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
29
+ yield this.delete(value);
30
+ }), ttlSeconds * 1000);
31
+ });
32
+ }
33
+ }
34
+ exports.InMemoryTmpCache = InMemoryTmpCache;
35
+ //# sourceMappingURL=cache-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-set.js","sourceRoot":"","sources":["../../src/utils/cache-set.ts"],"names":[],"mappings":";;;;AAMA,MAAa,gBAAgB;IAA7B;QACY,WAAM,GAAmC,EAAE,CAAA;IAsBvD,CAAC;IApBS,GAAG,CAAC,KAAQ;;YACd,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAA;YACf,CAAC;YACD,OAAO,KAAK,CAAA;QAChB,CAAC;KAAA;IAEK,MAAM,CAAC,KAAQ;;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,CAAA;QAClC,CAAC;KAAA;IAEK,GAAG,CAAC,KAAQ,EAAE,UAAkB;;YAClC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,CAAA;YAClC,IAAI,EAAE,EAAE,CAAC;gBACL,YAAY,CAAC,EAAE,CAAC,CAAA;YACpB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,GAAS,EAAE;gBAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC5B,CAAC,CAAA,EAAE,UAAU,GAAG,IAAI,CAAC,CAAA;QACzB,CAAC;KAAA;CACJ;AAvBD,4CAuBC"}
@@ -0,0 +1,77 @@
1
+ import { ReqRefDefaults, Request } from '@kaapi/kaapi';
2
+ import { JWTPayload, CryptoKey, KeyObject, JWK } from 'jose';
3
+ import { ClientAuthentication } from '@novice1/api-doc-generator';
4
+ export type TokenEndpointAuthMethod = 'client_secret_basic' | 'client_secret_post' | 'client_secret_jwt' | 'private_key_jwt' | 'none';
5
+ export type OAuth2ClientAuthentication = ClientAuthentication | TokenEndpointAuthMethod;
6
+ export declare function sortTokenEndpointAuthMethods(array: TokenEndpointAuthMethod[]): TokenEndpointAuthMethod[];
7
+ export type ClientAuthMethodResponse = {
8
+ /**
9
+ * if the authentication method is in the request
10
+ */
11
+ hasAuthMethod: boolean;
12
+ clientId?: string;
13
+ clientSecret?: string;
14
+ };
15
+ export interface ClientAuthMethod {
16
+ readonly method: TokenEndpointAuthMethod;
17
+ readonly secretIsOptional: boolean;
18
+ readonly algorithms?: string[];
19
+ /**
20
+ * Extract clientId and clientSecret from the request
21
+ */
22
+ extractParams(request: Request<ReqRefDefaults>): Promise<ClientAuthMethodResponse> | ClientAuthMethodResponse;
23
+ }
24
+ export declare class ClientSecretBasic implements ClientAuthMethod {
25
+ get method(): 'client_secret_basic';
26
+ get secretIsOptional(): boolean;
27
+ extractParams(request: Request<ReqRefDefaults>): ClientAuthMethodResponse;
28
+ }
29
+ export declare class ClientSecretPost implements ClientAuthMethod {
30
+ get method(): 'client_secret_post';
31
+ get secretIsOptional(): boolean;
32
+ extractParams(req: Request<ReqRefDefaults>): ClientAuthMethodResponse;
33
+ }
34
+ export declare class NoneAuthMethod implements ClientAuthMethod {
35
+ get method(): 'none';
36
+ get secretIsOptional(): boolean;
37
+ extractParams(req: Request<ReqRefDefaults>): ClientAuthMethodResponse;
38
+ }
39
+ export declare enum ClientSecretJwtAlgorithms {
40
+ HS256 = "HS256",
41
+ HS384 = "HS384",
42
+ HS512 = "HS512"
43
+ }
44
+ export declare class ClientSecretJwt implements ClientAuthMethod {
45
+ #private;
46
+ static algo: typeof ClientSecretJwtAlgorithms;
47
+ get method(): 'client_secret_jwt';
48
+ get secretIsOptional(): boolean;
49
+ get algorithms(): ClientSecretJwtAlgorithms[];
50
+ constructor();
51
+ addAlgo(algo: ClientSecretJwtAlgorithms): this;
52
+ getClientSecret(handler: (clientId: string, decoded: JWTPayload, clientAssertion: string) => Promise<Uint8Array | string | null>): this;
53
+ extractParams(req: Request<ReqRefDefaults>): Promise<ClientAuthMethodResponse>;
54
+ }
55
+ export declare enum PrivateKeyJwtAlgorithms {
56
+ RS256 = "RS256",
57
+ RS384 = "RS384",
58
+ RS512 = "RS512",
59
+ PS256 = "PS256",
60
+ PS384 = "PS384",
61
+ PS512 = "PS512",
62
+ ES256 = "ES256",
63
+ ES384 = "ES384",
64
+ ES512 = "ES512",
65
+ EdDSA = "EdDSA"
66
+ }
67
+ export declare class PrivateKeyJwt implements ClientAuthMethod {
68
+ #private;
69
+ static algo: typeof PrivateKeyJwtAlgorithms;
70
+ get method(): 'private_key_jwt';
71
+ get secretIsOptional(): boolean;
72
+ get algorithms(): PrivateKeyJwtAlgorithms[];
73
+ constructor();
74
+ addAlgo(algo: PrivateKeyJwtAlgorithms): this;
75
+ getPublicKeyForClient(handler: (clientId: string, decoded: JWTPayload, clientAssertion: string) => Promise<CryptoKey | KeyObject | JWK | Uint8Array | string | null>): this;
76
+ extractParams(req: Request<ReqRefDefaults>): Promise<ClientAuthMethodResponse>;
77
+ }
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var _ClientSecretJwt_algorithms, _ClientSecretJwt_handler, _PrivateKeyJwt_algorithms, _PrivateKeyJwt_handler;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PrivateKeyJwt = exports.PrivateKeyJwtAlgorithms = exports.ClientSecretJwt = exports.ClientSecretJwtAlgorithms = exports.NoneAuthMethod = exports.ClientSecretPost = exports.ClientSecretBasic = void 0;
5
+ exports.sortTokenEndpointAuthMethods = sortTokenEndpointAuthMethods;
6
+ const tslib_1 = require("tslib");
7
+ const jose_1 = require("jose");
8
+ const sortedTokenEndpointAuthMethods = ['client_secret_basic', 'client_secret_post', 'client_secret_jwt', 'private_key_jwt', 'none'];
9
+ const orderMapTokenEndpointAuthMethods = new Map(sortedTokenEndpointAuthMethods.map((item, index) => [item, index]));
10
+ function sortTokenEndpointAuthMethods(array) {
11
+ return array.sort((a, b) => {
12
+ var _a, _b;
13
+ return ((_a = orderMapTokenEndpointAuthMethods.get(a)) !== null && _a !== void 0 ? _a : Infinity) - ((_b = orderMapTokenEndpointAuthMethods.get(b)) !== null && _b !== void 0 ? _b : Infinity);
14
+ });
15
+ }
16
+ class ClientSecretBasic {
17
+ get method() {
18
+ return 'client_secret_basic';
19
+ }
20
+ get secretIsOptional() {
21
+ return false;
22
+ }
23
+ extractParams(request) {
24
+ const res = {
25
+ hasAuthMethod: false
26
+ };
27
+ const authorization = request.raw.req.headers.authorization;
28
+ const [authType, base64Credentials] = authorization ? authorization.split(/\s+/) : ['', ''];
29
+ if (authType.toLowerCase() == 'basic') {
30
+ res.hasAuthMethod = true;
31
+ const decoded = Buffer.from(base64Credentials, 'base64').toString('utf-8').split(':');
32
+ if (!decoded[0] || !decoded[1]) {
33
+ //
34
+ }
35
+ else {
36
+ res.clientId = decoded[0];
37
+ res.clientSecret = decoded[1];
38
+ }
39
+ }
40
+ return res;
41
+ }
42
+ }
43
+ exports.ClientSecretBasic = ClientSecretBasic;
44
+ class ClientSecretPost {
45
+ get method() {
46
+ return 'client_secret_post';
47
+ }
48
+ get secretIsOptional() {
49
+ return false;
50
+ }
51
+ extractParams(req) {
52
+ const res = {
53
+ hasAuthMethod: false
54
+ };
55
+ if (req.payload && typeof req.payload === 'object' &&
56
+ 'client_id' in req.payload &&
57
+ 'client_secret' in req.payload) {
58
+ res.hasAuthMethod = true;
59
+ if (typeof req.payload.client_id === 'string')
60
+ res.clientId = req.payload.client_id;
61
+ if (typeof req.payload.client_secret === 'string')
62
+ res.clientSecret = req.payload.client_secret;
63
+ }
64
+ return res;
65
+ }
66
+ }
67
+ exports.ClientSecretPost = ClientSecretPost;
68
+ class NoneAuthMethod {
69
+ get method() {
70
+ return 'none';
71
+ }
72
+ get secretIsOptional() {
73
+ return true;
74
+ }
75
+ extractParams(req) {
76
+ const res = {
77
+ hasAuthMethod: false
78
+ };
79
+ if (req.payload && typeof req.payload === 'object' &&
80
+ 'client_id' in req.payload) {
81
+ res.hasAuthMethod = true;
82
+ if (typeof req.payload.client_id === 'string')
83
+ res.clientId = req.payload.client_id;
84
+ }
85
+ return res;
86
+ }
87
+ }
88
+ exports.NoneAuthMethod = NoneAuthMethod;
89
+ var ClientSecretJwtAlgorithms;
90
+ (function (ClientSecretJwtAlgorithms) {
91
+ ClientSecretJwtAlgorithms["HS256"] = "HS256";
92
+ ClientSecretJwtAlgorithms["HS384"] = "HS384";
93
+ ClientSecretJwtAlgorithms["HS512"] = "HS512";
94
+ })(ClientSecretJwtAlgorithms || (exports.ClientSecretJwtAlgorithms = ClientSecretJwtAlgorithms = {}));
95
+ class ClientSecretJwt {
96
+ get method() {
97
+ return 'client_secret_jwt';
98
+ }
99
+ get secretIsOptional() {
100
+ return false;
101
+ }
102
+ get algorithms() {
103
+ return tslib_1.__classPrivateFieldGet(this, _ClientSecretJwt_algorithms, "f").length ? tslib_1.__classPrivateFieldGet(this, _ClientSecretJwt_algorithms, "f") : [ClientSecretJwtAlgorithms.HS256];
104
+ }
105
+ constructor() {
106
+ _ClientSecretJwt_algorithms.set(this, []);
107
+ _ClientSecretJwt_handler.set(this, void 0);
108
+ tslib_1.__classPrivateFieldSet(this, _ClientSecretJwt_handler, () => tslib_1.__awaiter(this, void 0, void 0, function* () { return null; }), "f");
109
+ }
110
+ addAlgo(algo) {
111
+ if (!tslib_1.__classPrivateFieldGet(this, _ClientSecretJwt_algorithms, "f").includes(algo)) {
112
+ tslib_1.__classPrivateFieldGet(this, _ClientSecretJwt_algorithms, "f").push(algo);
113
+ tslib_1.__classPrivateFieldGet(this, _ClientSecretJwt_algorithms, "f").sort();
114
+ }
115
+ return this;
116
+ }
117
+ getClientSecret(handler) {
118
+ tslib_1.__classPrivateFieldSet(this, _ClientSecretJwt_handler, handler, "f");
119
+ return this;
120
+ }
121
+ extractParams(req) {
122
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
123
+ const res = {
124
+ hasAuthMethod: false
125
+ };
126
+ if (req.payload &&
127
+ typeof req.payload === 'object' &&
128
+ 'client_assertion_type' in req.payload &&
129
+ req.payload.client_assertion_type == 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer' &&
130
+ 'client_assertion' in req.payload &&
131
+ typeof req.payload.client_assertion === 'string') {
132
+ res.hasAuthMethod = true;
133
+ const decoded = (0, jose_1.decodeJwt)(req.payload.client_assertion);
134
+ if (decoded.aud && typeof decoded.aud === 'string') {
135
+ res.clientId = decoded.aud;
136
+ const clientSecret = yield tslib_1.__classPrivateFieldGet(this, _ClientSecretJwt_handler, "f").call(this, decoded.aud, decoded, req.payload.client_assertion);
137
+ if (clientSecret) {
138
+ const { payload } = yield (0, jose_1.jwtVerify)(req.payload.client_assertion, typeof clientSecret === 'string' ? new TextEncoder().encode(clientSecret) : clientSecret, {
139
+ algorithms: this.algorithms
140
+ });
141
+ if (payload) {
142
+ res.clientSecret = typeof clientSecret === 'string' ? clientSecret : new TextDecoder().decode(clientSecret);
143
+ }
144
+ }
145
+ }
146
+ }
147
+ return res;
148
+ });
149
+ }
150
+ }
151
+ exports.ClientSecretJwt = ClientSecretJwt;
152
+ _ClientSecretJwt_algorithms = new WeakMap(), _ClientSecretJwt_handler = new WeakMap();
153
+ ClientSecretJwt.algo = ClientSecretJwtAlgorithms;
154
+ var PrivateKeyJwtAlgorithms;
155
+ (function (PrivateKeyJwtAlgorithms) {
156
+ PrivateKeyJwtAlgorithms["RS256"] = "RS256";
157
+ PrivateKeyJwtAlgorithms["RS384"] = "RS384";
158
+ PrivateKeyJwtAlgorithms["RS512"] = "RS512";
159
+ PrivateKeyJwtAlgorithms["PS256"] = "PS256";
160
+ PrivateKeyJwtAlgorithms["PS384"] = "PS384";
161
+ PrivateKeyJwtAlgorithms["PS512"] = "PS512";
162
+ PrivateKeyJwtAlgorithms["ES256"] = "ES256";
163
+ PrivateKeyJwtAlgorithms["ES384"] = "ES384";
164
+ PrivateKeyJwtAlgorithms["ES512"] = "ES512";
165
+ PrivateKeyJwtAlgorithms["EdDSA"] = "EdDSA";
166
+ })(PrivateKeyJwtAlgorithms || (exports.PrivateKeyJwtAlgorithms = PrivateKeyJwtAlgorithms = {}));
167
+ class PrivateKeyJwt {
168
+ get method() {
169
+ return 'private_key_jwt';
170
+ }
171
+ get secretIsOptional() {
172
+ return false;
173
+ }
174
+ get algorithms() {
175
+ return tslib_1.__classPrivateFieldGet(this, _PrivateKeyJwt_algorithms, "f").length ? tslib_1.__classPrivateFieldGet(this, _PrivateKeyJwt_algorithms, "f") : [PrivateKeyJwtAlgorithms.RS256];
176
+ }
177
+ constructor() {
178
+ _PrivateKeyJwt_algorithms.set(this, []);
179
+ _PrivateKeyJwt_handler.set(this, void 0);
180
+ tslib_1.__classPrivateFieldSet(this, _PrivateKeyJwt_handler, () => tslib_1.__awaiter(this, void 0, void 0, function* () { return null; }), "f");
181
+ }
182
+ addAlgo(algo) {
183
+ if (!tslib_1.__classPrivateFieldGet(this, _PrivateKeyJwt_algorithms, "f").includes(algo)) {
184
+ tslib_1.__classPrivateFieldGet(this, _PrivateKeyJwt_algorithms, "f").push(algo);
185
+ tslib_1.__classPrivateFieldGet(this, _PrivateKeyJwt_algorithms, "f").sort();
186
+ }
187
+ return this;
188
+ }
189
+ getPublicKeyForClient(handler) {
190
+ tslib_1.__classPrivateFieldSet(this, _PrivateKeyJwt_handler, handler, "f");
191
+ return this;
192
+ }
193
+ extractParams(req) {
194
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
195
+ const res = {
196
+ hasAuthMethod: false
197
+ };
198
+ if (req.payload &&
199
+ typeof req.payload === 'object' &&
200
+ 'client_assertion_type' in req.payload &&
201
+ req.payload.client_assertion_type == 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer' &&
202
+ 'client_assertion' in req.payload &&
203
+ typeof req.payload.client_assertion === 'string') {
204
+ const decoded = (0, jose_1.decodeJwt)(req.payload.client_assertion);
205
+ if (decoded.aud && typeof decoded.aud === 'string') {
206
+ res.clientId = decoded.aud;
207
+ const publicKey = yield tslib_1.__classPrivateFieldGet(this, _PrivateKeyJwt_handler, "f").call(this, decoded.aud, decoded, req.payload.client_assertion);
208
+ if (publicKey) {
209
+ const { payload } = yield (0, jose_1.jwtVerify)(req.payload.client_assertion, typeof publicKey === 'string' ? new TextEncoder().encode(publicKey) : publicKey, {
210
+ algorithms: this.algorithms
211
+ });
212
+ if (payload) {
213
+ res.clientSecret = req.payload.client_assertion;
214
+ }
215
+ }
216
+ }
217
+ }
218
+ return res;
219
+ });
220
+ }
221
+ }
222
+ exports.PrivateKeyJwt = PrivateKeyJwt;
223
+ _PrivateKeyJwt_algorithms = new WeakMap(), _PrivateKeyJwt_handler = new WeakMap();
224
+ PrivateKeyJwt.algo = PrivateKeyJwtAlgorithms;
225
+ //# sourceMappingURL=client-auth-methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-auth-methods.js","sourceRoot":"","sources":["../../src/utils/client-auth-methods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class InMemoryTmpCache<T = string | number> {
2
+ private values;
3
+ has(value: T): Promise<boolean>;
4
+ set(value: T, ttlSeconds: number): Promise<void>;
5
+ }