@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 @@
1
+ {"version":3,"file":"authentication-code.js","sourceRoot":"","sources":["../../src/flows/authentication-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { KaapiTools, Lifecycle, ReqRef, ReqRefDefaults, Request, ResponseToolkit } from '@kaapi/kaapi';
2
+ import { OAuth2Util } from '@novice1/api-doc-generator';
3
+ import { IOAuth2RefreshTokenRoute, OAuth2AuthDesign, OAuth2AuthOptions, OAuth2RefreshTokenRoute } from './common';
4
+ import { ClientAuthMethod } from '../utils/client-auth-methods';
5
+ export interface OAuth2ClientCredsTokenParams {
6
+ grantType: string;
7
+ clientId: string;
8
+ clientSecret: string;
9
+ scope?: string;
10
+ }
11
+ export type OAuth2ClientCredsTokenHandler<Refs extends ReqRef = ReqRefDefaults, R extends Lifecycle.ReturnValue<any> = Lifecycle.ReturnValue<Refs>> = (params: OAuth2ClientCredsTokenParams, request: Request<Refs>, h: ResponseToolkit<Refs>) => R;
12
+ export interface IOAuth2ClientCredsTokenRoute<Refs extends ReqRef = ReqRefDefaults> {
13
+ path: string;
14
+ handler: OAuth2ClientCredsTokenHandler<Refs>;
15
+ }
16
+ export interface OAuth2ClientCredsArg {
17
+ tokenRoute: IOAuth2ClientCredsTokenRoute<any>;
18
+ refreshTokenRoute?: OAuth2RefreshTokenRoute<any>;
19
+ options?: OAuth2AuthOptions;
20
+ strategyName?: string;
21
+ }
22
+ export declare class OAuth2ClientCreds extends OAuth2AuthDesign {
23
+ protected strategyName: string;
24
+ protected description?: string;
25
+ protected scopes?: Record<string, string>;
26
+ protected options: OAuth2AuthOptions;
27
+ protected tokenRoute: IOAuth2ClientCredsTokenRoute<any>;
28
+ protected refreshTokenRoute?: IOAuth2RefreshTokenRoute<any>;
29
+ constructor({ tokenRoute, refreshTokenRoute, options, strategyName }: OAuth2ClientCredsArg);
30
+ /**
31
+ * NOT IMPLEMENTEND FOR CLIENT CREDENTIALS FLOW
32
+ */
33
+ noneAuthenticationMethod(): this;
34
+ addClientAuthenticationMethod(value: 'client_secret_basic' | 'client_secret_post' | 'none' | ClientAuthMethod): this;
35
+ setDescription(description: string): this;
36
+ /**
37
+ *
38
+ * @param scopes The scopes of the access request.
39
+ * A map between the scope name and a short description for it. The map MAY be empty.
40
+ * @returns
41
+ */
42
+ setScopes(scopes: Record<string, string>): this;
43
+ getScopes(): Record<string, string> | undefined;
44
+ getStrategyName(): string;
45
+ getDescription(): string | undefined;
46
+ /**
47
+ * Returns the schema used for the documentation
48
+ */
49
+ docs(): OAuth2Util;
50
+ /**
51
+ * Where authentication schemes and strategies are registered.
52
+ */
53
+ integrateStrategy(t: KaapiTools): void;
54
+ integrateHook(t: KaapiTools): void;
55
+ }
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OAuth2ClientCreds = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const api_doc_generator_1 = require("@novice1/api-doc-generator");
6
+ const boom_1 = tslib_1.__importDefault(require("@hapi/boom"));
7
+ const hoek_1 = tslib_1.__importDefault(require("@hapi/hoek"));
8
+ const common_1 = require("./common");
9
+ class OAuth2ClientCreds extends common_1.OAuth2AuthDesign {
10
+ constructor({ tokenRoute, refreshTokenRoute, options, strategyName }) {
11
+ super();
12
+ this.tokenRoute = tokenRoute;
13
+ this.refreshTokenRoute = refreshTokenRoute;
14
+ this.strategyName = strategyName || 'oauth2-client-credentials';
15
+ this.options = options ? Object.assign({}, options) : {};
16
+ }
17
+ /**
18
+ * NOT IMPLEMENTEND FOR CLIENT CREDENTIALS FLOW
19
+ */
20
+ noneAuthenticationMethod() {
21
+ return this;
22
+ }
23
+ addClientAuthenticationMethod(value) {
24
+ if (typeof value === 'string') {
25
+ if (value == 'none') {
26
+ return this;
27
+ }
28
+ }
29
+ else if (value.method == 'none') {
30
+ return this;
31
+ }
32
+ return super.addClientAuthenticationMethod(value);
33
+ }
34
+ setDescription(description) {
35
+ this.description = description;
36
+ return this;
37
+ }
38
+ /**
39
+ *
40
+ * @param scopes The scopes of the access request.
41
+ * A map between the scope name and a short description for it. The map MAY be empty.
42
+ * @returns
43
+ */
44
+ setScopes(scopes) {
45
+ this.scopes = scopes;
46
+ return this;
47
+ }
48
+ getScopes() {
49
+ return this.scopes;
50
+ }
51
+ getStrategyName() {
52
+ return this.strategyName;
53
+ }
54
+ getDescription() {
55
+ return this.description;
56
+ }
57
+ /**
58
+ * Returns the schema used for the documentation
59
+ */
60
+ docs() {
61
+ var _a;
62
+ const docs = new api_doc_generator_1.OAuth2Util(this.strategyName)
63
+ .setGrantType(api_doc_generator_1.GrantType.clientCredentials)
64
+ .setScopes(this.getScopes() || {})
65
+ .setAccessTokenUrl(this.tokenRoute.path || '');
66
+ if ((_a = this.refreshTokenRoute) === null || _a === void 0 ? void 0 : _a.path) {
67
+ docs.setRefreshUrl(this.refreshTokenRoute.path);
68
+ }
69
+ if (this.description) {
70
+ docs.setDescription(this.description);
71
+ }
72
+ return docs;
73
+ }
74
+ /**
75
+ * Where authentication schemes and strategies are registered.
76
+ */
77
+ integrateStrategy(t) {
78
+ const tokenTypePrefix = this.tokenType;
79
+ const tokenTypeInstance = this._tokenType;
80
+ t.scheme(this.strategyName, (_server, options) => {
81
+ return {
82
+ authenticate(request, h) {
83
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
84
+ var _a;
85
+ const settings = hoek_1.default.applyToDefaults({}, options || {});
86
+ const authorization = request.raw.req.headers.authorization;
87
+ const authSplit = authorization ? authorization.split(/\s+/) : ['', ''];
88
+ const tokenType = authSplit[0];
89
+ let token = authSplit[1];
90
+ if (tokenType.toLowerCase() !== tokenTypePrefix.toLowerCase()) {
91
+ token = '';
92
+ return boom_1.default.unauthorized(null, tokenTypePrefix);
93
+ }
94
+ if (!(yield tokenTypeInstance.isValid(request, token)).isValid) {
95
+ return boom_1.default.unauthorized(null, tokenTypePrefix);
96
+ }
97
+ if (settings.validate) {
98
+ try {
99
+ const result = yield ((_a = settings.validate) === null || _a === void 0 ? void 0 : _a.call(settings, request, token, h));
100
+ if (result && 'isAuth' in result) {
101
+ return result;
102
+ }
103
+ if (result && 'isBoom' in result) {
104
+ return result;
105
+ }
106
+ if (result) {
107
+ const { isValid, credentials, artifacts, message } = result;
108
+ if (isValid && credentials) {
109
+ return h.authenticated({ credentials, artifacts });
110
+ }
111
+ if (message) {
112
+ return h.unauthenticated(boom_1.default.unauthorized(message, tokenTypePrefix), {
113
+ credentials: credentials || {},
114
+ artifacts
115
+ });
116
+ }
117
+ }
118
+ }
119
+ catch (err) {
120
+ return boom_1.default.internal(err instanceof Error ? err : `${err}`);
121
+ }
122
+ }
123
+ return boom_1.default.unauthorized(null, tokenTypePrefix);
124
+ });
125
+ },
126
+ };
127
+ });
128
+ t.strategy(this.strategyName, this.strategyName, this.options);
129
+ }
130
+ integrateHook(t) {
131
+ var _a;
132
+ const supported = this.getTokenEndpointAuthMethods();
133
+ const authMethodsInstances = this.clientAuthMethods;
134
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
+ const routesOptions = {
136
+ plugins: {
137
+ kaapi: {
138
+ docs: false
139
+ }
140
+ }
141
+ };
142
+ t
143
+ .route({
144
+ options: routesOptions,
145
+ path: this.tokenRoute.path,
146
+ method: 'POST',
147
+ handler: (req, h) => tslib_1.__awaiter(this, void 0, void 0, function* () {
148
+ var _a, _b;
149
+ // Grant validation
150
+ const supportedGrants = ['client_credentials'];
151
+ if (this.tokenRoute.path == ((_a = this.refreshTokenRoute) === null || _a === void 0 ? void 0 : _a.path)) {
152
+ supportedGrants.push('refresh_token');
153
+ }
154
+ if (!(typeof req.payload.grant_type === 'string' && supportedGrants.includes(req.payload.grant_type))) {
155
+ return h.response({ error: 'unsupported_grant_type', error_description: `Request does not support the 'grant_type' '${req.payload.grant_type}'.` }).code(400);
156
+ }
157
+ // Client authentication is present?
158
+ const { clientId, clientSecret, error, errorDescription } = yield this._extractClientParams(req, authMethodsInstances, supported);
159
+ if (error) {
160
+ return h.response({ error: error, error_description: errorDescription || undefined }).code(400);
161
+ }
162
+ if (!clientId || !clientSecret) {
163
+ return h
164
+ .response({
165
+ error: 'invalid_request',
166
+ error_description: `Supported token endpoint authentication methods: ${supported.join(', ')}`
167
+ }).code(400);
168
+ }
169
+ // validating body
170
+ if (req.payload.grant_type === 'client_credentials') {
171
+ let clientId, clientSecret, tmpClientId, tmpClientSecret;
172
+ const authHeaderValue = req.raw.req.headers.authorization;
173
+ if (authHeaderValue) {
174
+ // remove 'Basic ' and convert the base64 to string
175
+ const value = Buffer.from(authHeaderValue.substring(5), 'base64').toString();
176
+ // split client_id and client_secret from string
177
+ [tmpClientId, tmpClientSecret] = value.split(':');
178
+ }
179
+ if (tmpClientId) {
180
+ clientId = tmpClientId;
181
+ }
182
+ else {
183
+ return h.response({ error: 'invalid_request', error_description: 'Request was missing the \'client_id\' parameter.' }).code(400);
184
+ }
185
+ if (tmpClientSecret) {
186
+ clientSecret = tmpClientSecret;
187
+ }
188
+ else {
189
+ return h.response({ error: 'invalid_request', error_description: 'Request was missing the \'client_secret\' parameter.' }).code(400);
190
+ }
191
+ const params = {
192
+ clientId: clientId,
193
+ clientSecret: clientSecret,
194
+ grantType: req.payload.grant_type
195
+ };
196
+ if (req.payload.scope && typeof req.payload.scope === 'string') {
197
+ params.scope = req.payload.scope;
198
+ }
199
+ return this.tokenRoute.handler(params, req, h);
200
+ }
201
+ else if (this.tokenRoute.path == ((_b = this.refreshTokenRoute) === null || _b === void 0 ? void 0 : _b.path) &&
202
+ req.payload.grant_type === 'refresh_token') {
203
+ const hasRefreshToken = req.payload.refresh_token && typeof req.payload.refresh_token === 'string';
204
+ if (clientId &&
205
+ hasRefreshToken) {
206
+ const params = {
207
+ clientId,
208
+ grantType: req.payload.grant_type,
209
+ refreshToken: `${req.payload.refresh_token}`
210
+ };
211
+ if (clientSecret) {
212
+ params.clientSecret = clientSecret;
213
+ }
214
+ if (req.payload.scope && typeof req.payload.scope === 'string') {
215
+ params.scope = req.payload.scope;
216
+ }
217
+ return this.refreshTokenRoute.handler(params, req, h);
218
+ }
219
+ else {
220
+ let error = 'unauthorized_client';
221
+ let errorDescription = '';
222
+ if (!clientId) {
223
+ error = 'invalid_request';
224
+ errorDescription = 'Request was missing the \'client_id\' parameter.';
225
+ }
226
+ else if (!clientSecret) {
227
+ error = 'invalid_request';
228
+ errorDescription = 'Request was missing the \'client_secret\' parameter.';
229
+ }
230
+ else if (!(req.payload.refresh_token && typeof req.payload.refresh_token === 'string')) {
231
+ error = 'invalid_request';
232
+ errorDescription = 'Request was missing the \'refresh_token\' parameter.';
233
+ }
234
+ return h.response({ error, error_description: errorDescription }).code(400);
235
+ }
236
+ }
237
+ else {
238
+ let error = 'unauthorized_client';
239
+ let errorDescription = '';
240
+ if (!clientId) {
241
+ error = 'invalid_request';
242
+ errorDescription = 'Request was missing the \'client_id\' parameter.';
243
+ }
244
+ else if (!clientSecret) {
245
+ error = 'invalid_request';
246
+ errorDescription = 'Request was missing the \'client_secret\' parameter.';
247
+ }
248
+ return h.response({ error, error_description: errorDescription }).code(400);
249
+ }
250
+ })
251
+ });
252
+ // refreshToken
253
+ if (((_a = this.refreshTokenRoute) === null || _a === void 0 ? void 0 : _a.path) && this.refreshTokenRoute.path != this.tokenRoute.path) {
254
+ t.route({
255
+ options: routesOptions,
256
+ path: this.refreshTokenRoute.path,
257
+ method: 'POST',
258
+ handler: (req, h) => tslib_1.__awaiter(this, void 0, void 0, function* () {
259
+ var _a;
260
+ // Grant validation
261
+ const supportedGrants = ['refresh_token'];
262
+ if (!(typeof req.payload.grant_type === 'string' && supportedGrants.includes(req.payload.grant_type))) {
263
+ return h.response({ error: 'unsupported_grant_type', error_description: `Request does not support the 'grant_type' '${req.payload.grant_type}'.` }).code(400);
264
+ }
265
+ // Client authentication is present?
266
+ const { clientId, clientSecret, error, errorDescription } = yield this._extractClientParams(req, authMethodsInstances, supported);
267
+ if (error) {
268
+ return h.response({ error: error, error_description: errorDescription || undefined }).code(400);
269
+ }
270
+ if (!clientId || !clientSecret) {
271
+ return h
272
+ .response({
273
+ error: 'invalid_request',
274
+ error_description: `Supported token endpoint authentication methods: ${supported.join(', ')}`
275
+ }).code(400);
276
+ }
277
+ // validating body
278
+ const hasRefreshToken = req.payload.refresh_token && typeof req.payload.refresh_token === 'string';
279
+ const isRefreshTokenGrantType = req.payload.grant_type === 'refresh_token';
280
+ if (clientId &&
281
+ hasRefreshToken &&
282
+ isRefreshTokenGrantType) {
283
+ const params = {
284
+ clientId,
285
+ clientSecret,
286
+ grantType: `${req.payload.grant_type}`,
287
+ refreshToken: `${req.payload.refresh_token}`
288
+ };
289
+ if (req.payload.scope && typeof req.payload.scope === 'string') {
290
+ params.scope = req.payload.scope;
291
+ }
292
+ return (_a = this.refreshTokenRoute) === null || _a === void 0 ? void 0 : _a.handler(params, req, h);
293
+ }
294
+ else {
295
+ let error = 'unauthorized_client';
296
+ let errorDescription = '';
297
+ if (!clientId) {
298
+ error = 'invalid_request';
299
+ errorDescription = 'Request was missing the \'client_id\' parameter.';
300
+ }
301
+ else if (!clientSecret) {
302
+ error = 'invalid_request';
303
+ errorDescription = 'Request was missing the \'client_secret\' parameter.';
304
+ }
305
+ else if (!(req.payload.refresh_token && typeof req.payload.refresh_token === 'string')) {
306
+ error = 'invalid_request';
307
+ errorDescription = 'Request was missing the \'refresh_token\' parameter.';
308
+ }
309
+ return h.response({ error, error_description: errorDescription }).code(400);
310
+ }
311
+ })
312
+ });
313
+ }
314
+ }
315
+ }
316
+ exports.OAuth2ClientCreds = OAuth2ClientCreds;
317
+ //#endregion OAuth2ClientCreds
318
+ //# sourceMappingURL=client-credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-credentials.js","sourceRoot":"","sources":["../../src/flows/client-credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ import { Auth, AuthCredentials, AuthDesign, Lifecycle, ReqRef, ReqRefDefaults, Request, ResponseToolkit } from '@kaapi/kaapi';
2
+ import { Boom } from '@hapi/boom';
3
+ import { JWKSStore } from '../utils/jwks-store';
4
+ import { JWKSGenerator, OAuth2JwtPayload } from '../utils/jwks-generator';
5
+ import { TokenType } from '../utils/token-types';
6
+ import { ClientAuthMethod, TokenEndpointAuthMethod } from '../utils/client-auth-methods';
7
+ export type PathValue = `/${string}`;
8
+ export type WithRequired<T, K extends keyof T> = T & {
9
+ [P in K]-?: T[P];
10
+ };
11
+ export type OAuth2Error = 'invalid_request' | 'invalid_client' | 'invalid_grant' | 'invalid_scope' | 'unauthorized_client' | 'unsupported_grant_type' | 'invalid_token';
12
+ export type OAuth2ErrorBody = {
13
+ error: OAuth2Error;
14
+ error_description?: string;
15
+ error_uri?: string;
16
+ [key: string]: unknown;
17
+ };
18
+ export type OAuth2AuthOptions<Refs extends ReqRef = ReqRefDefaults> = {
19
+ validate?(request: Request<Refs>, token: string, h: ResponseToolkit<Refs>): Promise<{
20
+ isValid?: boolean;
21
+ artifacts?: unknown;
22
+ credentials?: AuthCredentials;
23
+ message?: string;
24
+ } | Auth | Boom>;
25
+ };
26
+ export interface OpenIDHelpers {
27
+ readonly ttl?: number;
28
+ createIDToken: (payload: WithRequired<Partial<OAuth2JwtPayload>, 'sub'>) => Promise<string>;
29
+ }
30
+ export interface OAuth2RefreshTokenParams extends Partial<OpenIDHelpers> {
31
+ grantType: string;
32
+ refreshToken: string;
33
+ clientId: string;
34
+ clientSecret?: string;
35
+ scope?: string;
36
+ }
37
+ export type OAuth2RefreshTokenHandler<Refs extends ReqRef = ReqRefDefaults, R extends Lifecycle.ReturnValue<any> = Lifecycle.ReturnValue<Refs>> = (params: OAuth2RefreshTokenParams, request: Request<Refs>, h: ResponseToolkit<Refs>) => R;
38
+ export interface IOAuth2RefreshTokenRoute<Refs extends ReqRef = ReqRefDefaults> {
39
+ path: string;
40
+ handler: OAuth2RefreshTokenHandler<Refs>;
41
+ }
42
+ export declare class OAuth2RefreshTokenRoute<Refs extends ReqRef = ReqRefDefaults> implements IOAuth2RefreshTokenRoute<Refs> {
43
+ protected _path: string;
44
+ protected _handler: OAuth2RefreshTokenHandler<Refs>;
45
+ get path(): string;
46
+ get handler(): OAuth2RefreshTokenHandler<Refs, Lifecycle.ReturnValue<Refs>>;
47
+ constructor(path: string, handler: OAuth2RefreshTokenHandler<Refs>);
48
+ }
49
+ export interface OAuth2TokenResponseBody {
50
+ access_token: string;
51
+ token_type: string;
52
+ expires_in?: number;
53
+ refresh_token?: string;
54
+ scope?: string;
55
+ id_token?: string;
56
+ error?: never;
57
+ [key: string]: unknown;
58
+ }
59
+ export interface IOAuth2TokenResponse {
60
+ toJSON(): OAuth2TokenResponseBody;
61
+ }
62
+ export declare class OAuth2TokenResponse implements IOAuth2TokenResponse {
63
+ protected accessToken: string;
64
+ protected tokenType: string;
65
+ /**
66
+ * in seconds
67
+ */
68
+ protected expiresIn?: number;
69
+ protected refreshToken?: string;
70
+ protected scope?: string;
71
+ protected idToken?: string;
72
+ constructor({ access_token, expires_in, refresh_token, scope, id_token }: {
73
+ access_token: string;
74
+ expires_in?: number;
75
+ refresh_token?: string;
76
+ scope?: string;
77
+ id_token?: string;
78
+ });
79
+ setAccessToken(value: string): this;
80
+ getAccessToken(): string;
81
+ setTokenType(value: string | TokenType): this;
82
+ getTokenType(): string;
83
+ /**
84
+ * @param value number of seconds
85
+ */
86
+ setExpiresIn(value?: number): this;
87
+ /**
88
+ * @returns number of seconds
89
+ */
90
+ getExpiresIn(): number | undefined;
91
+ setRefreshToken(value?: string): this;
92
+ getRefreshToken(): string | undefined;
93
+ setScope(value?: string | string[]): this;
94
+ getScope(): string | undefined;
95
+ setIDToken(value?: string): this;
96
+ getIDToken(): string | undefined;
97
+ toObject(): {
98
+ access_token: string;
99
+ token_type: string;
100
+ expires_in?: number;
101
+ refresh_token?: string;
102
+ scope?: string;
103
+ id_token?: string;
104
+ };
105
+ toJSON(): {
106
+ access_token: string;
107
+ token_type: string;
108
+ expires_in?: number;
109
+ refresh_token?: string;
110
+ scope?: string;
111
+ id_token?: string;
112
+ };
113
+ }
114
+ export declare abstract class OAuth2AuthDesign extends AuthDesign {
115
+ protected _clientAuthMethods: Record<TokenEndpointAuthMethod, ClientAuthMethod | undefined>;
116
+ protected _tokenType: TokenType<any>;
117
+ get tokenType(): string;
118
+ protected get clientAuthMethods(): Record<TokenEndpointAuthMethod, ClientAuthMethod | undefined>;
119
+ constructor();
120
+ protected _extractClientParams(req: Request<ReqRefDefaults>, authMethodsInstances: Record<TokenEndpointAuthMethod, ClientAuthMethod | undefined>, checkOrder: TokenEndpointAuthMethod[]): Promise<{
121
+ clientId?: string;
122
+ clientSecret?: string;
123
+ error?: OAuth2Error;
124
+ errorDescription?: string;
125
+ }>;
126
+ setTokenType<Refs extends ReqRef = ReqRefDefaults>(value: TokenType<Refs>): this;
127
+ getTokenEndpointAuthMethods(): TokenEndpointAuthMethod[];
128
+ clientSecretBasicAuthenticationMethod(): this;
129
+ clientSecretPostAuthenticationMethod(): this;
130
+ noneAuthenticationMethod(): this;
131
+ addClientAuthenticationMethod(value: 'client_secret_basic' | 'client_secret_post' | 'none' | ClientAuthMethod): this;
132
+ }
133
+ export declare abstract class OAuth2WithJWKSAuthDesign extends OAuth2AuthDesign {
134
+ #private;
135
+ get jwksGenerator(): JWKSGenerator;
136
+ constructor(jwksStore?: JWKSStore, ttlSeconds?: number);
137
+ setTokenTTL(ttlSeconds?: number): this;
138
+ getTokenTTL(): number | undefined;
139
+ }