@mongodb-js/oidc-plugin 0.1.0-alpha.0 → 0.1.0-alpha.2

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.
@@ -2,3 +2,4 @@ import mod from "./index.js";
2
2
 
3
3
  export default mod;
4
4
  export const createMongoDBOIDCPlugin = mod.createMongoDBOIDCPlugin;
5
+ export const hookLoggerToMongoLogWriter = mod.hookLoggerToMongoLogWriter;
package/dist/api.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
3
  import type { IncomingMessage as HttpIncomingMessage, ServerResponse as HttpServerResponse } from 'http';
4
+ import { MongoDBOIDCPluginImpl } from './plugin';
4
5
  import type { MongoDBOIDCLogEventsMap, OIDCAbortSignal, OIDCRefreshFunction, OIDCRequestFunction, TypedEventEmitter } from './types';
5
6
  /** @public */
6
7
  export type AuthFlowType = 'auth-code' | 'device-auth';
@@ -98,6 +99,28 @@ export interface MongoDBOIDCPluginOptions {
98
99
  * The default handler serves simple text/plain messages.
99
100
  */
100
101
  redirectServerRequestHandler?: RedirectServerRequestHandler;
102
+ /**
103
+ * A serialized representation of a previous plugin instance's state
104
+ * as returned by `.serialize()`.
105
+ *
106
+ * This option should only be passed if it comes from a trusted source,
107
+ * since it contains access tokens that will be sent to MongoDB servers.
108
+ */
109
+ serializedState?: string;
110
+ /**
111
+ * If set to true, creating the plugin will throw an exception when
112
+ * `serializedState` is provided but cannot be deserialized.
113
+ * If set to false, invalid serialized state will result in a log
114
+ * message being emitted but otherwise be ignored.
115
+ */
116
+ throwOnIncompatibleSerializedState?: boolean;
117
+ }
118
+ /** @public */
119
+ export interface MongoDBOIDCPluginMongoClientOptions {
120
+ readonly authMechanismProperties: {
121
+ readonly REQUEST_TOKEN_CALLBACK: OIDCRequestFunction;
122
+ readonly REFRESH_TOKEN_CALLBACK: OIDCRefreshFunction;
123
+ };
101
124
  }
102
125
  /** @public */
103
126
  export interface MongoDBOIDCPlugin {
@@ -107,26 +130,39 @@ export interface MongoDBOIDCPlugin {
107
130
  *
108
131
  * This object should be deep-merged with other, pre-existing
109
132
  * MongoClient driver options.
133
+ *
134
+ * @public
110
135
  */
111
- readonly mongoClientOptions: {
112
- readonly authMechanismProperties: {
113
- readonly REQUEST_TOKEN_CALLBACK: OIDCRequestFunction;
114
- readonly REFRESH_TOKEN_CALLBACK: OIDCRefreshFunction;
115
- };
116
- };
136
+ readonly mongoClientOptions: MongoDBOIDCPluginMongoClientOptions;
117
137
  /**
118
138
  * The logger instance passed in the options, or a default one otherwise.
119
139
  */
120
140
  readonly logger: TypedEventEmitter<MongoDBOIDCLogEventsMap>;
141
+ /**
142
+ * Create a serialized representation of this plugin's state. The result
143
+ * can be stored and be later passed to new plugin instances to make
144
+ * that instance behave as a resumed version of this instance.
145
+ *
146
+ * Be aware that this string contains OIDC tokens in plaintext! Do not
147
+ * store it without appropriate security mechanisms in place.
148
+ */
149
+ serialize(): Promise<string>;
121
150
  }
151
+ /** @internal */
152
+ export declare const publicPluginToInternalPluginMap_DoNotUseOutsideOfTests: WeakMap<MongoDBOIDCPlugin, MongoDBOIDCPluginImpl>;
122
153
  /**
123
154
  * Create a new OIDC plugin instance that can be passed to the Node.js MongoDB
124
155
  * driver's MongoClientOptions struct.
125
156
  *
126
157
  * This plugin instance can be passed to multiple MongoClient instances.
127
- * It caches credentials based on cluster ID and username. If no username is
128
- * provided when connecting to the MongoDB instance, the cache will be shared
129
- * across all MongoClients that use this plugin instance.
158
+ * It caches credentials based on cluster OIDC metadata.
159
+ * Do *not* pass the plugin instance to multiple MongoClient instances when the
160
+ * MongoDB deployments they are connecting to do not share a trust relationship
161
+ * since an untrusted server may be able to advertise malicious OIDC metadata
162
+ * (this restriction may be lifted in a future version of this library).
163
+ * Do *not* pass the plugin instance to multiple MongoClient instances when they
164
+ * are being used with different usernames (user principals), in the connection
165
+ * string or in the MongoClient options.
130
166
  *
131
167
  * @public
132
168
  */
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/api.js CHANGED
@@ -1,24 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.kDefaultOpenBrowserTimeout = exports.createMongoDBOIDCPlugin = void 0;
3
+ exports.kDefaultOpenBrowserTimeout = exports.createMongoDBOIDCPlugin = exports.publicPluginToInternalPluginMap_DoNotUseOutsideOfTests = void 0;
4
4
  const plugin_1 = require("./plugin");
5
+ /** @internal */
6
+ exports.publicPluginToInternalPluginMap_DoNotUseOutsideOfTests = new WeakMap();
5
7
  /**
6
8
  * Create a new OIDC plugin instance that can be passed to the Node.js MongoDB
7
9
  * driver's MongoClientOptions struct.
8
10
  *
9
11
  * This plugin instance can be passed to multiple MongoClient instances.
10
- * It caches credentials based on cluster ID and username. If no username is
11
- * provided when connecting to the MongoDB instance, the cache will be shared
12
- * across all MongoClients that use this plugin instance.
12
+ * It caches credentials based on cluster OIDC metadata.
13
+ * Do *not* pass the plugin instance to multiple MongoClient instances when the
14
+ * MongoDB deployments they are connecting to do not share a trust relationship
15
+ * since an untrusted server may be able to advertise malicious OIDC metadata
16
+ * (this restriction may be lifted in a future version of this library).
17
+ * Do *not* pass the plugin instance to multiple MongoClient instances when they
18
+ * are being used with different usernames (user principals), in the connection
19
+ * string or in the MongoClient options.
13
20
  *
14
21
  * @public
15
22
  */
16
23
  function createMongoDBOIDCPlugin(options) {
17
24
  const plugin = new plugin_1.MongoDBOIDCPluginImpl({ ...options });
18
- return {
25
+ const publicPlugin = {
19
26
  mongoClientOptions: plugin.mongoClientOptions,
20
27
  logger: plugin.logger,
28
+ serialize: plugin.serialize.bind(plugin),
21
29
  };
30
+ exports.publicPluginToInternalPluginMap_DoNotUseOutsideOfTests.set(publicPlugin, plugin);
31
+ return publicPlugin;
22
32
  }
23
33
  exports.createMongoDBOIDCPlugin = createMongoDBOIDCPlugin;
24
34
  /** @internal */
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AAIA,qCAAiD;AAmJjD;;;;;;;;;;GAUG;AACH,SAAgB,uBAAuB,CACrC,OAA2C;IAE3C,MAAM,MAAM,GAAG,IAAI,8BAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACzD,OAAO;QACL,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AARD,0DAQC;AAED,gBAAgB;AACH,QAAA,0BAA0B,GAAG,KAAM,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AAIA,qCAAiD;AAmLjD,gBAAgB;AACH,QAAA,sDAAsD,GACjE,IAAI,OAAO,EAA4C,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,uBAAuB,CACrC,OAA2C;IAE3C,MAAM,MAAM,GAAG,IAAI,8BAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,YAAY,GAAsB;QACtC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;KACzC,CAAC;IACF,8DAAsD,CAAC,GAAG,CACxD,YAAY,EACZ,MAAM,CACP,CAAC;IACF,OAAO,YAAY,CAAC;AACtB,CAAC;AAdD,0DAcC;AAED,gBAAgB;AACH,QAAA,0BAA0B,GAAG,KAAM,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { createMongoDBOIDCPlugin } from './api';
2
- export type { MongoDBOIDCPlugin, MongoDBOIDCPluginOptions, AuthFlowType, DeviceFlowInformation, OpenBrowserOptions, OpenBrowserReturnType, RedirectServerRequestHandler, RedirectServerRequestInfo, } from './api';
3
- export type { TypedEventEmitter, OIDCRefreshFunction, OIDCRequestFunction, OIDCMechanismServerStep1, OIDCRequestTokenResult, OIDCAbortSignal, MongoDBOIDCError, MongoDBOIDCLogEventsMap, } from './types';
2
+ export type { MongoDBOIDCPlugin, MongoDBOIDCPluginOptions, AuthFlowType, DeviceFlowInformation, OpenBrowserOptions, OpenBrowserReturnType, RedirectServerRequestHandler, RedirectServerRequestInfo, MongoDBOIDCPluginMongoClientOptions, } from './api';
3
+ export type { TypedEventEmitter, OIDCCallbackContext, OIDCRefreshFunction, OIDCRequestFunction, IdPServerInfo, IdPServerResponse, OIDCAbortSignal, MongoDBOIDCError, MongoDBOIDCLogEventsMap, } from './types';
4
+ export { hookLoggerToMongoLogWriter, MongoLogWriter } from './log-hook';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAChD,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,OAAO,CAAC;AAEf,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,OAAO,CAAC;AAChD,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,mCAAmC,GACpC,MAAM,OAAO,CAAC;AAEf,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMongoDBOIDCPlugin = void 0;
3
+ exports.hookLoggerToMongoLogWriter = exports.createMongoDBOIDCPlugin = void 0;
4
4
  var api_1 = require("./api");
5
5
  Object.defineProperty(exports, "createMongoDBOIDCPlugin", { enumerable: true, get: function () { return api_1.createMongoDBOIDCPlugin; } });
6
+ var log_hook_1 = require("./log-hook");
7
+ Object.defineProperty(exports, "hookLoggerToMongoLogWriter", { enumerable: true, get: function () { return log_hook_1.hookLoggerToMongoLogWriter; } });
6
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6BAAgD;AAAvC,8GAAA,uBAAuB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6BAAgD;AAAvC,8GAAA,uBAAuB,OAAA;AAyBhC,uCAAwE;AAA/D,sHAAA,0BAA0B,OAAA"}
@@ -0,0 +1,17 @@
1
+ import type { MongoDBOIDCLogEventsMap, TypedEventEmitter } from './types';
2
+ /** @public */
3
+ export interface MongoLogWriter {
4
+ info(c: string, id: unknown, ctx: string, msg: string, attr?: unknown): void;
5
+ warn(c: string, id: unknown, ctx: string, msg: string, attr?: unknown): void;
6
+ error(c: string, id: unknown, ctx: string, msg: string, attr?: unknown): void;
7
+ mongoLogId(this: void, id: number): unknown;
8
+ }
9
+ /**
10
+ * Connect a log event emitter instance such as the one attached to a
11
+ * `MongoDBOIDCPlugin` instance to a log writer that follows the format
12
+ * provided by the `mongodb-log-writer` npm package.
13
+ *
14
+ * @public
15
+ */
16
+ export declare function hookLoggerToMongoLogWriter(emitter: TypedEventEmitter<MongoDBOIDCLogEventsMap>, log: MongoLogWriter, contextPrefix: string): void;
17
+ //# sourceMappingURL=log-hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-hook.d.ts","sourceRoot":"","sources":["../src/log-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE1E,cAAc;AACd,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7E,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7E,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9E,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,iBAAiB,CAAC,uBAAuB,CAAC,EACnD,GAAG,EAAE,cAAc,EACnB,aAAa,EAAE,MAAM,GACpB,IAAI,CAwON"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hookLoggerToMongoLogWriter = void 0;
4
+ /**
5
+ * Connect a log event emitter instance such as the one attached to a
6
+ * `MongoDBOIDCPlugin` instance to a log writer that follows the format
7
+ * provided by the `mongodb-log-writer` npm package.
8
+ *
9
+ * @public
10
+ */
11
+ function hookLoggerToMongoLogWriter(emitter, log, contextPrefix) {
12
+ const { mongoLogId } = log;
13
+ emitter.on('mongodb-oidc-plugin:local-redirect-accessed', (ev) => {
14
+ log.info('OIDC-PLUGIN', mongoLogId(1002000001), `${contextPrefix}-oidc`, 'Local redirect accessed', {
15
+ ...ev,
16
+ });
17
+ });
18
+ emitter.on('mongodb-oidc-plugin:oidc-callback-accepted', (ev) => {
19
+ log.info('OIDC-PLUGIN', mongoLogId(1002000002), `${contextPrefix}-oidc`, 'OIDC callback accepted', {
20
+ ...ev,
21
+ });
22
+ });
23
+ emitter.on('mongodb-oidc-plugin:oidc-callback-rejected', (ev) => {
24
+ log.warn('OIDC-PLUGIN', mongoLogId(1002000003), `${contextPrefix}-oidc`, 'OIDC callback rejected', {
25
+ ...ev,
26
+ });
27
+ });
28
+ emitter.on('mongodb-oidc-plugin:unknown-url-accessed', (ev) => {
29
+ log.info('OIDC-PLUGIN', mongoLogId(1002000004), `${contextPrefix}-oidc`, 'Unknown URL accessed', {
30
+ ...ev,
31
+ // strip away any query/search string (after ?) in the URL
32
+ path: new URL(ev.path, 'http://dummy/').pathname,
33
+ });
34
+ });
35
+ emitter.on('mongodb-oidc-plugin:local-listen-started', (ev) => {
36
+ log.info('OIDC-PLUGIN', mongoLogId(1002000005), `${contextPrefix}-oidc`, 'Started listening on local server', {
37
+ ...ev,
38
+ });
39
+ });
40
+ emitter.on('mongodb-oidc-plugin:local-listen-failed', (ev) => {
41
+ log.error('OIDC-PLUGIN', mongoLogId(1002000006), `${contextPrefix}-oidc`, 'Failed to listen on local server', {
42
+ ...ev,
43
+ });
44
+ });
45
+ emitter.on('mongodb-oidc-plugin:local-listen-succeeded', (ev) => {
46
+ log.info('OIDC-PLUGIN', mongoLogId(1002000007), `${contextPrefix}-oidc`, 'Successfully listening on local server', {
47
+ ...ev,
48
+ });
49
+ });
50
+ emitter.on('mongodb-oidc-plugin:local-server-close', (ev) => {
51
+ log.info('OIDC-PLUGIN', mongoLogId(1002000008), `${contextPrefix}-oidc`, 'Local server closed', {
52
+ ...ev,
53
+ });
54
+ });
55
+ emitter.on('mongodb-oidc-plugin:open-browser', (ev) => {
56
+ log.info('OIDC-PLUGIN', mongoLogId(1002000009), `${contextPrefix}-oidc`, 'Opening browser', {
57
+ ...ev,
58
+ });
59
+ });
60
+ emitter.on('mongodb-oidc-plugin:notify-device-flow', () => {
61
+ log.info('OIDC-PLUGIN', mongoLogId(1002000010), `${contextPrefix}-oidc`, 'Notifying user about device flow authentication');
62
+ });
63
+ emitter.on('mongodb-oidc-plugin:auth-attempt-started', (ev) => {
64
+ log.info('OIDC-PLUGIN', mongoLogId(1002000011), `${contextPrefix}-oidc`, 'Authentication attempt started', {
65
+ ...ev,
66
+ });
67
+ });
68
+ emitter.on('mongodb-oidc-plugin:auth-attempt-failed', (ev) => {
69
+ log.warn('OIDC-PLUGIN', mongoLogId(1002000012), `${contextPrefix}-oidc`, 'Authentication attempt failed', {
70
+ ...ev,
71
+ });
72
+ });
73
+ emitter.on('mongodb-oidc-plugin:auth-attempt-succeeded', () => {
74
+ log.info('OIDC-PLUGIN', mongoLogId(1002000013), `${contextPrefix}-oidc`, 'Authentication attempt succeeded');
75
+ });
76
+ emitter.on('mongodb-oidc-plugin:refresh-failed', (ev) => {
77
+ log.warn('OIDC-PLUGIN', mongoLogId(1002000014), `${contextPrefix}-oidc`, 'Token refresh failed', {
78
+ ...ev,
79
+ });
80
+ });
81
+ emitter.on('mongodb-oidc-plugin:skip-auth-attempt', (ev) => {
82
+ log.info('OIDC-PLUGIN', mongoLogId(1002000015), `${contextPrefix}-oidc`, 'Skipping explicit authentication attempt', {
83
+ ...ev,
84
+ });
85
+ });
86
+ emitter.on('mongodb-oidc-plugin:auth-failed', (ev) => {
87
+ log.warn('OIDC-PLUGIN', mongoLogId(1002000016), `${contextPrefix}-oidc`, 'Authentication failed', {
88
+ ...ev,
89
+ });
90
+ });
91
+ emitter.on('mongodb-oidc-plugin:auth-succeeded', (ev) => {
92
+ log.info('OIDC-PLUGIN', mongoLogId(1002000017), `${contextPrefix}-oidc`, 'Authentication succeeded', {
93
+ ...ev,
94
+ });
95
+ });
96
+ emitter.on('mongodb-oidc-plugin:refresh-started', () => {
97
+ log.info('OIDC-PLUGIN', mongoLogId(1002000018), `${contextPrefix}-oidc`, 'Token refresh attempt started');
98
+ });
99
+ emitter.on('mongodb-oidc-plugin:refresh-succeeded', () => {
100
+ log.info('OIDC-PLUGIN', mongoLogId(1002000019), `${contextPrefix}-oidc`, 'Token refresh attempt succeeded');
101
+ });
102
+ emitter.on('mongodb-oidc-plugin:deserialization-failed', (ev) => {
103
+ log.error('OIDC-PLUGIN', mongoLogId(1002000020), `${contextPrefix}-oidc`, 'State deserialization failed', {
104
+ ...ev,
105
+ });
106
+ });
107
+ }
108
+ exports.hookLoggerToMongoLogWriter = hookLoggerToMongoLogWriter;
109
+ //# sourceMappingURL=log-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-hook.js","sourceRoot":"","sources":["../src/log-hook.ts"],"names":[],"mappings":"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"}
package/dist/plugin.d.ts CHANGED
@@ -1,23 +1,30 @@
1
- import type { MongoDBOIDCLogEventsMap, OIDCAbortSignal, OIDCMechanismServerStep1, OIDCRequestTokenResult, TypedEventEmitter } from './types';
1
+ import type { MongoDBOIDCLogEventsMap, OIDCCallbackContext, IdPServerInfo, IdPServerResponse, TypedEventEmitter } from './types';
2
+ import { TokenSet } from 'openid-client';
2
3
  import type { MongoDBOIDCPlugin, MongoDBOIDCPluginOptions } from './api';
4
+ /** @internal Exported for testing only */
5
+ export declare function automaticRefreshTimeoutMS(tokenSet: Pick<TokenSet, 'refresh_token' | 'expires_in'>): number | undefined;
3
6
  /** @internal */
4
7
  export declare class MongoDBOIDCPluginImpl implements MongoDBOIDCPlugin {
5
8
  private readonly options;
6
9
  readonly logger: TypedEventEmitter<MongoDBOIDCLogEventsMap>;
7
- private readonly mapUserToAuthState;
10
+ private readonly mapIdpToAuthState;
8
11
  readonly mongoClientOptions: MongoDBOIDCPlugin['mongoClientOptions'];
12
+ private readonly timers;
9
13
  constructor(options: Readonly<MongoDBOIDCPluginOptions>);
14
+ private _deserialize;
15
+ private _serialize;
16
+ serialize(): Promise<string>;
10
17
  private isFlowAllowed;
11
18
  private getAuthState;
12
19
  private getRedirectURI;
13
- private getInitialOIDCIssuerAndClientParams;
20
+ private getOIDCClient;
14
21
  private openBrowser;
15
22
  private notifyDeviceFlow;
16
- private storeTokenSet;
23
+ private updateStateWithTokenSet;
24
+ private verifyValidUrl;
17
25
  private authorizationCodeFlow;
18
26
  private deviceAuthorizationFlow;
19
27
  private initiateAuthAttempt;
20
- requestToken(principalName: string | undefined, serverMetadata: OIDCMechanismServerStep1, driverAbortSignal?: OIDCAbortSignal | number): Promise<OIDCRequestTokenResult>;
21
- refreshToken(principalName: string | undefined, serverMetadata: OIDCMechanismServerStep1, previousResult: OIDCRequestTokenResult, driverAbortSignal?: OIDCAbortSignal | number): Promise<OIDCRequestTokenResult>;
28
+ requestToken(serverMetadata: IdPServerInfo, context: OIDCCallbackContext): Promise<IdPServerResponse>;
22
29
  }
23
30
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAqBjB,OAAO,KAAK,EAGV,iBAAiB,EACjB,wBAAwB,EAGzB,MAAM,OAAO,CAAC;AAgDf,gBAAgB;AAChB,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,SAAgB,MAAM,EAAE,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwC;IAC3E,SAAgB,kBAAkB,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;gBAEhE,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC;IAYvD,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,mCAAmC;YAqC7B,WAAW;YAgCX,gBAAgB;IAW9B,OAAO,CAAC,aAAa;YA4BP,qBAAqB;YAgIrB,uBAAuB;YAiCvB,mBAAmB;IA0GpB,YAAY,CACvB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,cAAc,EAAE,wBAAwB,EACxC,iBAAiB,CAAC,EAAE,eAAe,GAAG,MAAM,GAC3C,OAAO,CAAC,sBAAsB,CAAC;IAwBrB,YAAY,CACvB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,cAAc,EAAE,wBAAwB,EAExC,cAAc,EAAE,sBAAsB,EACtC,iBAAiB,CAAC,EAAE,eAAe,GAAG,MAAM,GAC3C,OAAO,CAAC,sBAAsB,CAAC;CAOnC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EAEvB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAYjB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMzC,OAAO,KAAK,EAGV,iBAAiB,EACjB,wBAAwB,EAGzB,MAAM,OAAO,CAAC;AAsDf,0CAA0C;AAC1C,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,YAAY,CAAC,GACvD,MAAM,GAAG,SAAS,CAmBpB;AAeD,gBAAgB;AAChB,qBAAa,qBAAsB,YAAW,iBAAiB;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,SAAgB,MAAM,EAAE,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,SAAgB,kBAAkB,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAIrB;gBAEU,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC;IAevD,OAAO,CAAC,YAAY;IAkDpB,OAAO,CAAC,UAAU;IAsBX,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAUnC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,cAAc;YAMR,aAAa;YAsCb,WAAW;YAkCX,gBAAgB;IAa9B,OAAO,CAAC,uBAAuB;IAwE/B,OAAO,CAAC,cAAc;YAkBR,qBAAqB;YAwGrB,uBAAuB;YA4BvB,mBAAmB;IA0GpB,YAAY,CACvB,cAAc,EAAE,aAAa,EAC7B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,iBAAiB,CAAC;CA+B9B"}