@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.
- package/dist/.esm-wrapper.mjs +1 -0
- package/dist/api.d.ts +45 -9
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +15 -5
- package/dist/api.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/log-hook.d.ts +17 -0
- package/dist/log-hook.d.ts.map +1 -0
- package/dist/log-hook.js +109 -0
- package/dist/log-hook.js.map +1 -0
- package/dist/plugin.d.ts +13 -6
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +241 -129
- package/dist/plugin.js.map +1 -1
- package/dist/rfc-8252-http-server.d.ts.map +1 -1
- package/dist/rfc-8252-http-server.js +4 -0
- package/dist/rfc-8252-http-server.js.map +1 -1
- package/dist/types.d.ts +23 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +2 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +24 -1
- package/dist/util.js.map +1 -1
- package/index.d.ts +94 -29
- package/package.json +15 -8
- package/dist/webdriverio.js +0 -0
package/dist/.esm-wrapper.mjs
CHANGED
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
|
|
128
|
-
*
|
|
129
|
-
*
|
|
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":";;AAAA,OAAO,KAAK,EACV,eAAe,IAAI,mBAAmB,EACtC,cAAc,IAAI,kBAAkB,EACrC,MAAM,MAAM,CAAC;
|
|
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
|
|
11
|
-
*
|
|
12
|
-
*
|
|
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
|
-
|
|
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;
|
|
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,
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/log-hook.js
ADDED
|
@@ -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,
|
|
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
|
|
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
|
|
20
|
+
private getOIDCClient;
|
|
14
21
|
private openBrowser;
|
|
15
22
|
private notifyDeviceFlow;
|
|
16
|
-
private
|
|
23
|
+
private updateStateWithTokenSet;
|
|
24
|
+
private verifyValidUrl;
|
|
17
25
|
private authorizationCodeFlow;
|
|
18
26
|
private deviceAuthorizationFlow;
|
|
19
27
|
private initiateAuthAttempt;
|
|
20
|
-
requestToken(
|
|
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
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,
|
|
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"}
|