@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/plugin.js
CHANGED
|
@@ -22,16 +22,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.MongoDBOIDCPluginImpl = void 0;
|
|
26
|
+
exports.MongoDBOIDCPluginImpl = exports.automaticRefreshTimeoutMS = void 0;
|
|
30
27
|
const types_1 = require("./types");
|
|
31
28
|
const util_1 = require("./util");
|
|
32
29
|
const openid_client_1 = require("openid-client");
|
|
30
|
+
const openid_client_2 = require("openid-client");
|
|
33
31
|
const rfc_8252_http_server_1 = require("./rfc-8252-http-server");
|
|
34
|
-
const open_1 = __importDefault(require("open"));
|
|
35
32
|
const util_2 = require("util");
|
|
36
33
|
const crypto_1 = require("crypto");
|
|
37
34
|
const events_1 = require("events");
|
|
@@ -55,24 +52,119 @@ async function getDefaultOpenBrowser() {
|
|
|
55
52
|
}
|
|
56
53
|
// Otherwise, use open() from npm.
|
|
57
54
|
return async ({ url }) => {
|
|
58
|
-
|
|
55
|
+
// 'open' 9.x+ is ESM-only.
|
|
56
|
+
const open = (await Promise.resolve().then(() => __importStar(require('open')))).default;
|
|
57
|
+
const child = await open(url);
|
|
59
58
|
child.unref();
|
|
60
59
|
return child;
|
|
61
60
|
};
|
|
62
61
|
}
|
|
62
|
+
/** @internal Exported for testing only */
|
|
63
|
+
function automaticRefreshTimeoutMS(tokenSet) {
|
|
64
|
+
// If the tokens expire in more than 1 minute, automatically register
|
|
65
|
+
// a refresh handler. (They should not expire in less; however,
|
|
66
|
+
// if we didn't handle that case, we'd run the risk of refreshing very
|
|
67
|
+
// frequently.) Refresh the token 5 minutes before expiration or
|
|
68
|
+
// halfway between now and the expiration time, whichever comes later
|
|
69
|
+
// (expires in 1 hour -> refresh in 55 min, expires in 5 min -> refresh in 2.5 min).
|
|
70
|
+
if (tokenSet.refresh_token &&
|
|
71
|
+
tokenSet.expires_in &&
|
|
72
|
+
tokenSet.expires_in >= 60 /* 1 minute */) {
|
|
73
|
+
return (Math.max(tokenSet.expires_in - 300 /* 5 minutes */, tokenSet.expires_in / 2) * 1000);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.automaticRefreshTimeoutMS = automaticRefreshTimeoutMS;
|
|
63
77
|
const kEnableFallback = Symbol.for('@@mdb.oidcplugin.kEnableFallback');
|
|
78
|
+
function allowFallbackIfFailed(promise) {
|
|
79
|
+
return promise.catch((err) => {
|
|
80
|
+
// Tell the outer logic here to fallback to device auth flow if it is
|
|
81
|
+
// available if any of the steps above failed.
|
|
82
|
+
if (Object.isExtensible(err)) {
|
|
83
|
+
err[kEnableFallback] = true;
|
|
84
|
+
}
|
|
85
|
+
throw err;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
64
88
|
/** @internal */
|
|
65
89
|
class MongoDBOIDCPluginImpl {
|
|
66
90
|
constructor(options) {
|
|
67
|
-
this.
|
|
91
|
+
this.mapIdpToAuthState = new Map();
|
|
68
92
|
this.options = options;
|
|
69
93
|
this.logger = options.logger ?? new events_1.EventEmitter();
|
|
70
94
|
this.mongoClientOptions = {
|
|
71
95
|
authMechanismProperties: {
|
|
72
96
|
REQUEST_TOKEN_CALLBACK: this.requestToken.bind(this),
|
|
73
|
-
REFRESH_TOKEN_CALLBACK: this.
|
|
97
|
+
REFRESH_TOKEN_CALLBACK: this.requestToken.bind(this),
|
|
74
98
|
},
|
|
75
99
|
};
|
|
100
|
+
this.timers = { setTimeout, clearTimeout };
|
|
101
|
+
if (options.serializedState) {
|
|
102
|
+
this._deserialize(options.serializedState);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
_deserialize(serialized) {
|
|
106
|
+
try {
|
|
107
|
+
let original;
|
|
108
|
+
try {
|
|
109
|
+
original = JSON.parse(Buffer.from(serialized, 'base64').toString('utf8'));
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
throw new types_1.MongoDBOIDCError(`Stored OIDC data could not be deserialized: ${err.message}`);
|
|
113
|
+
}
|
|
114
|
+
if (original.oidcPluginStateVersion !== 0) {
|
|
115
|
+
throw new types_1.MongoDBOIDCError(`Stored OIDC data could not be deserialized because of a version mismatch (got ${JSON.stringify(original.oidcPluginStateVersion)}, expected 0)`);
|
|
116
|
+
}
|
|
117
|
+
for (const [key, serializedState] of original.state) {
|
|
118
|
+
const state = {
|
|
119
|
+
serverOIDCMetadata: { ...serializedState.serverOIDCMetadata },
|
|
120
|
+
currentAuthAttempt: null,
|
|
121
|
+
currentTokenSet: null,
|
|
122
|
+
lastIdTokenClaims: serializedState.lastIdTokenClaims
|
|
123
|
+
? { ...serializedState.lastIdTokenClaims }
|
|
124
|
+
: undefined,
|
|
125
|
+
};
|
|
126
|
+
this.updateStateWithTokenSet(state, new openid_client_1.TokenSet(serializedState.currentTokenSet.set));
|
|
127
|
+
this.mapIdpToAuthState.set(key, state);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
this.logger.emit('mongodb-oidc-plugin:deserialization-failed', {
|
|
132
|
+
error: err.message,
|
|
133
|
+
});
|
|
134
|
+
// It's not necessary to throw by default here since failure to
|
|
135
|
+
// deserialize previous state means that, at worst, users will have
|
|
136
|
+
// to re-authenticate.
|
|
137
|
+
if (this.options.throwOnIncompatibleSerializedState)
|
|
138
|
+
throw err;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Separate method so we can re-use the inferred return type in _deserialize()
|
|
142
|
+
_serialize() {
|
|
143
|
+
return {
|
|
144
|
+
oidcPluginStateVersion: 0,
|
|
145
|
+
state: [...this.mapIdpToAuthState]
|
|
146
|
+
.filter(([, state]) => !!state.currentTokenSet)
|
|
147
|
+
.map(([key, state]) => {
|
|
148
|
+
return [
|
|
149
|
+
key,
|
|
150
|
+
{
|
|
151
|
+
serverOIDCMetadata: { ...state.serverOIDCMetadata },
|
|
152
|
+
currentTokenSet: {
|
|
153
|
+
set: { ...state.currentTokenSet?.set },
|
|
154
|
+
},
|
|
155
|
+
lastIdTokenClaims: state.lastIdTokenClaims
|
|
156
|
+
? { ...state.lastIdTokenClaims }
|
|
157
|
+
: undefined,
|
|
158
|
+
},
|
|
159
|
+
];
|
|
160
|
+
}),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
serialize() {
|
|
164
|
+
// Wrap the result using JS-to-JSON-to-UTF8-to-Base64. We could probably
|
|
165
|
+
// omit the base64 encoding, but this makes it clearer that it's an opaque
|
|
166
|
+
// value that's not intended to be inspected or modified.
|
|
167
|
+
return Promise.resolve(Buffer.from(JSON.stringify(this._serialize()), 'utf8').toString('base64'));
|
|
76
168
|
}
|
|
77
169
|
// Is this flow supported and allowed?
|
|
78
170
|
isFlowAllowed(flow) {
|
|
@@ -86,16 +178,16 @@ class MongoDBOIDCPluginImpl {
|
|
|
86
178
|
}
|
|
87
179
|
// Return the current state for a given [server, username] configuration,
|
|
88
180
|
// or create a new one if none exists.
|
|
89
|
-
getAuthState(serverMetadata
|
|
181
|
+
getAuthState(serverMetadata) {
|
|
90
182
|
if (!serverMetadata.clientId) {
|
|
91
183
|
throw new types_1.MongoDBOIDCError('No clientId passed in server OIDC metadata object');
|
|
92
184
|
}
|
|
93
|
-
principalName ?? (principalName = null);
|
|
94
185
|
const key = JSON.stringify({
|
|
95
|
-
|
|
96
|
-
|
|
186
|
+
// If any part of the server metadata changes, we should probably use
|
|
187
|
+
// a new cache entry.
|
|
188
|
+
...(0, util_1.normalizeObject)(serverMetadata),
|
|
97
189
|
});
|
|
98
|
-
const existing = this.
|
|
190
|
+
const existing = this.mapIdpToAuthState.get(key);
|
|
99
191
|
if (existing)
|
|
100
192
|
return existing;
|
|
101
193
|
const newState = {
|
|
@@ -103,7 +195,7 @@ class MongoDBOIDCPluginImpl {
|
|
|
103
195
|
currentAuthAttempt: null,
|
|
104
196
|
currentTokenSet: null,
|
|
105
197
|
};
|
|
106
|
-
this.
|
|
198
|
+
this.mapIdpToAuthState.set(key, newState);
|
|
107
199
|
return newState;
|
|
108
200
|
}
|
|
109
201
|
getRedirectURI() {
|
|
@@ -112,33 +204,34 @@ class MongoDBOIDCPluginImpl {
|
|
|
112
204
|
// TODO(MONGOSH-1394): Properly standardize a port
|
|
113
205
|
return this.options.redirectURI ?? 'http://localhost:27097/redirect';
|
|
114
206
|
}
|
|
115
|
-
|
|
207
|
+
async getOIDCClient(state) {
|
|
208
|
+
const serverMetadata = state.serverOIDCMetadata;
|
|
209
|
+
const scope = [
|
|
210
|
+
...new Set([
|
|
211
|
+
'openid',
|
|
212
|
+
'offline_access',
|
|
213
|
+
...(serverMetadata.requestScopes ?? []),
|
|
214
|
+
]),
|
|
215
|
+
].join(' ');
|
|
216
|
+
if (state.client) {
|
|
217
|
+
return {
|
|
218
|
+
scope,
|
|
219
|
+
issuer: state.client.issuer,
|
|
220
|
+
client: state.client,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
const issuer = await openid_client_2.Issuer.discover(serverMetadata.issuer);
|
|
224
|
+
const client = new issuer.Client({
|
|
225
|
+
client_id: serverMetadata.clientId,
|
|
226
|
+
redirect_uris: [this.getRedirectURI()],
|
|
227
|
+
response_types: ['code'],
|
|
228
|
+
token_endpoint_auth_method: 'none',
|
|
229
|
+
});
|
|
230
|
+
state.client = client;
|
|
116
231
|
return {
|
|
117
|
-
scope
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
'offline_access',
|
|
121
|
-
...(serverMetadata.requestScopes ?? []),
|
|
122
|
-
]),
|
|
123
|
-
].join(' '),
|
|
124
|
-
issuerParams: {
|
|
125
|
-
authorization_endpoint: serverMetadata.authorizationEndpoint,
|
|
126
|
-
token_endpoint: serverMetadata.tokenEndpoint,
|
|
127
|
-
device_authorization_endpoint: serverMetadata.deviceAuthorizationEndpoint,
|
|
128
|
-
// Required by the TS definitions, but we just don't have this data
|
|
129
|
-
// at this point. We re-define it later where necessary.
|
|
130
|
-
issuer: '',
|
|
131
|
-
},
|
|
132
|
-
clientParams: {
|
|
133
|
-
client_id: serverMetadata.clientId,
|
|
134
|
-
client_secret: serverMetadata.clientSecret,
|
|
135
|
-
redirect_uris: [this.getRedirectURI()],
|
|
136
|
-
response_types: ['code'],
|
|
137
|
-
// At least Okta requires this:
|
|
138
|
-
token_endpoint_auth_method: serverMetadata.clientSecret
|
|
139
|
-
? 'client_secret_post'
|
|
140
|
-
: 'none',
|
|
141
|
-
},
|
|
232
|
+
scope,
|
|
233
|
+
issuer,
|
|
234
|
+
client,
|
|
142
235
|
};
|
|
143
236
|
}
|
|
144
237
|
async openBrowser(options) {
|
|
@@ -149,7 +242,7 @@ class MongoDBOIDCPluginImpl {
|
|
|
149
242
|
});
|
|
150
243
|
if (this.options.openBrowser === false) {
|
|
151
244
|
// We should never really get to this point
|
|
152
|
-
throw new
|
|
245
|
+
throw new types_1.MongoDBOIDCError('Cannot open browser if `openBrowser` is false');
|
|
153
246
|
}
|
|
154
247
|
if (typeof this.options.openBrowser === 'function') {
|
|
155
248
|
return await this.options.openBrowser(options);
|
|
@@ -168,47 +261,98 @@ class MongoDBOIDCPluginImpl {
|
|
|
168
261
|
child.unref();
|
|
169
262
|
return child;
|
|
170
263
|
}
|
|
171
|
-
throw new
|
|
264
|
+
throw new types_1.MongoDBOIDCError('Unknown format for `openBrowser`');
|
|
172
265
|
}
|
|
173
266
|
async notifyDeviceFlow(deviceFlowInformation) {
|
|
174
267
|
if (!this.options.notifyDeviceFlow) {
|
|
175
268
|
// Should never happen.
|
|
176
|
-
throw new
|
|
269
|
+
throw new types_1.MongoDBOIDCError('notifyDeviceFlow() requested but not provided');
|
|
177
270
|
}
|
|
178
271
|
this.logger.emit('mongodb-oidc-plugin:notify-device-flow');
|
|
179
272
|
await this.options.notifyDeviceFlow(deviceFlowInformation);
|
|
180
273
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
this.logger.emit('mongodb-oidc-plugin:refresh-failed', {
|
|
199
|
-
error: (0, util_1.errorString)(err),
|
|
200
|
-
});
|
|
274
|
+
updateStateWithTokenSet(state, tokenSet) {
|
|
275
|
+
// We intend to be able to pass plugin instances to multiple MongoClient
|
|
276
|
+
// instances that are connecting to the same MongoDB endpoint.
|
|
277
|
+
// We need to prevent a scenario in which a requestToken callback is called
|
|
278
|
+
// for client A, the token expires before it is requested again by client A,
|
|
279
|
+
// then the plugin is passed to client B which requests a token, and we
|
|
280
|
+
// receive mismatching tokens for different users or different audiences.
|
|
281
|
+
const idTokenClaims = tokenSet.claims();
|
|
282
|
+
if (state.lastIdTokenClaims) {
|
|
283
|
+
for (const claim of ['aud', 'sub']) {
|
|
284
|
+
const normalize = (value) => {
|
|
285
|
+
return JSON.stringify(Array.isArray(value) ? [...value].sort() : value);
|
|
286
|
+
};
|
|
287
|
+
const knownClaim = normalize(state.lastIdTokenClaims[claim]);
|
|
288
|
+
const newClaim = normalize(idTokenClaims[claim]);
|
|
289
|
+
if (knownClaim !== newClaim) {
|
|
290
|
+
throw new types_1.MongoDBOIDCError(`Unexpected '${claim}' field in id token: Expected ${knownClaim}, saw ${newClaim}`);
|
|
201
291
|
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
state.lastIdTokenClaims = {
|
|
295
|
+
aud: idTokenClaims.aud,
|
|
296
|
+
sub: idTokenClaims.sub,
|
|
297
|
+
};
|
|
298
|
+
const timerDuration = automaticRefreshTimeoutMS(tokenSet);
|
|
299
|
+
let timer = timerDuration
|
|
300
|
+
? this.timers.setTimeout(() => void tryRefresh(), timerDuration).unref()
|
|
301
|
+
: undefined;
|
|
302
|
+
const tryRefresh = (0, util_1.withLock)(async () => {
|
|
303
|
+
if (timer) {
|
|
304
|
+
this.timers.clearTimeout(timer);
|
|
305
|
+
timer = undefined;
|
|
306
|
+
}
|
|
307
|
+
// Only refresh this token set if it is the one currently
|
|
308
|
+
// being used.
|
|
309
|
+
if (state.currentTokenSet?.set !== tokenSet)
|
|
202
310
|
return false;
|
|
203
|
-
|
|
311
|
+
try {
|
|
312
|
+
this.logger.emit('mongodb-oidc-plugin:refresh-started');
|
|
313
|
+
const { client } = await this.getOIDCClient(state);
|
|
314
|
+
const refreshedTokens = await client.refresh(tokenSet);
|
|
315
|
+
// Check again to avoid race conditions.
|
|
316
|
+
if (state.currentTokenSet?.set === tokenSet) {
|
|
317
|
+
this.logger.emit('mongodb-oidc-plugin:refresh-succeeded');
|
|
318
|
+
this.updateStateWithTokenSet(state, refreshedTokens);
|
|
319
|
+
return true;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
catch (err) {
|
|
323
|
+
this.logger.emit('mongodb-oidc-plugin:refresh-failed', {
|
|
324
|
+
error: (0, util_1.errorString)(err),
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
return false;
|
|
328
|
+
});
|
|
329
|
+
state.currentTokenSet = {
|
|
330
|
+
set: tokenSet,
|
|
331
|
+
tryRefresh,
|
|
204
332
|
};
|
|
333
|
+
this.logger.emit('mongodb-oidc-plugin:state-updated');
|
|
334
|
+
}
|
|
335
|
+
verifyValidUrl(serverOIDCMetadata, key) {
|
|
336
|
+
// Verify that `key` refers to a valid URL. This is currently
|
|
337
|
+
// *not* an error that we allow to fall back from.
|
|
338
|
+
const value = serverOIDCMetadata[key];
|
|
339
|
+
if (!value || typeof value !== 'string') {
|
|
340
|
+
throw new types_1.MongoDBOIDCError(`'${key}' is missing`);
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
try {
|
|
344
|
+
new URL(value);
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
throw new types_1.MongoDBOIDCError(`'${key}' is invalid: ${value}}`);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
205
350
|
}
|
|
206
351
|
async authorizationCodeFlow(state, signal) {
|
|
207
|
-
|
|
208
|
-
const
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
let client = new issuer.Client(clientParams);
|
|
352
|
+
this.verifyValidUrl(state.serverOIDCMetadata, 'issuer');
|
|
353
|
+
const { scope, client } = await this.getOIDCClient(state);
|
|
354
|
+
const codeVerifier = openid_client_2.generators.codeVerifier();
|
|
355
|
+
const codeChallenge = openid_client_2.generators.codeChallenge(codeVerifier);
|
|
212
356
|
const oidcStateParam = (await (0, util_2.promisify)(crypto_1.randomBytes)(16)).toString('hex');
|
|
213
357
|
const server = new rfc_8252_http_server_1.RFC8252HTTPServer({
|
|
214
358
|
redirectUrl: this.getRedirectURI(),
|
|
@@ -217,10 +361,18 @@ class MongoDBOIDCPluginImpl {
|
|
|
217
361
|
oidcStateParam,
|
|
218
362
|
});
|
|
219
363
|
let paramsUrl = '';
|
|
220
|
-
let enableFallback = true;
|
|
221
364
|
try {
|
|
222
365
|
await (0, util_1.withAbortCheck)(signal, async ({ signalCheck, signalPromise }) => {
|
|
223
|
-
|
|
366
|
+
// We mark the operations that we want to allow to result in a fallback
|
|
367
|
+
// to potentially less secure flows explicitly.
|
|
368
|
+
// Specifically, we only do so if we cannot open a local HTTP server
|
|
369
|
+
// or a local browser. Once we have done that, we do not want to fall
|
|
370
|
+
// back to another flow anymore, and any error from there on is most likely
|
|
371
|
+
// a genuine authentication error.
|
|
372
|
+
await Promise.race([
|
|
373
|
+
allowFallbackIfFailed(server.listen()),
|
|
374
|
+
signalPromise,
|
|
375
|
+
]);
|
|
224
376
|
const authCodeFlowUrl = client.authorizationUrl({
|
|
225
377
|
scope,
|
|
226
378
|
code_challenge: codeChallenge,
|
|
@@ -232,7 +384,7 @@ class MongoDBOIDCPluginImpl {
|
|
|
232
384
|
// Handle errors from opening a browser but do not await the Promise
|
|
233
385
|
// in case it only resolves when the browser exits (which is the case
|
|
234
386
|
// for the default `open` handler).
|
|
235
|
-
const browserStatePromise = new Promise((resolve, reject) => {
|
|
387
|
+
const browserStatePromise = allowFallbackIfFailed(new Promise((resolve, reject) => {
|
|
236
388
|
this.openBrowser({ url: localUrl, signal })
|
|
237
389
|
.then((browserHandle) => {
|
|
238
390
|
browserHandle?.once('error', (err) => reject(err));
|
|
@@ -242,12 +394,12 @@ class MongoDBOIDCPluginImpl {
|
|
|
242
394
|
});
|
|
243
395
|
})
|
|
244
396
|
.catch(reject);
|
|
245
|
-
});
|
|
246
|
-
const timeout = new Promise((resolve, reject) => {
|
|
397
|
+
}));
|
|
398
|
+
const timeout = allowFallbackIfFailed(new Promise((resolve, reject) => {
|
|
247
399
|
if (this.options.openBrowserTimeout !== 0) {
|
|
248
400
|
setTimeout(reject, this.options.openBrowserTimeout ?? api_1.kDefaultOpenBrowserTimeout, new types_1.MongoDBOIDCError('Opening browser timed out')).unref();
|
|
249
401
|
}
|
|
250
|
-
});
|
|
402
|
+
}));
|
|
251
403
|
browserStatePromise.catch(() => {
|
|
252
404
|
/* squelch UnhandledPromiseRejectionWarning */
|
|
253
405
|
});
|
|
@@ -260,65 +412,26 @@ class MongoDBOIDCPluginImpl {
|
|
|
260
412
|
browserStatePromise,
|
|
261
413
|
signalPromise,
|
|
262
414
|
]);
|
|
263
|
-
// If we reached this point, we know that we have successfully opened
|
|
264
|
-
// a server listening on a local port and a browser and that the
|
|
265
|
-
// browser accessed the server. We do not want to fall back to another
|
|
266
|
-
// flow anymore, any error from here on is most likely a genuine
|
|
267
|
-
// authentication error.
|
|
268
|
-
enableFallback = false;
|
|
269
415
|
paramsUrl = await server.waitForOIDCParamsAndClose({ signal });
|
|
270
416
|
});
|
|
271
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
272
|
-
}
|
|
273
|
-
catch (err) {
|
|
274
|
-
// Tell the outer logic here to fallback to device auth flow if it is
|
|
275
|
-
// available if any of the steps above failed.
|
|
276
|
-
if (Object.isExtensible(err)) {
|
|
277
|
-
err[kEnableFallback] = enableFallback;
|
|
278
|
-
}
|
|
279
|
-
throw err;
|
|
280
417
|
}
|
|
281
418
|
finally {
|
|
282
419
|
await server.close();
|
|
283
420
|
}
|
|
284
421
|
const params = client.callbackParams(paramsUrl);
|
|
285
|
-
// The oidc-client library requires `issuer` to be set here; we did not
|
|
286
|
-
// set it when we assembled the original `issuerParams` (because it was
|
|
287
|
-
// not available as information), but we should have received it from the
|
|
288
|
-
// callback parameters and can set it here.
|
|
289
|
-
issuerParams.issuer = String(params.iss);
|
|
290
|
-
issuer = new openid_client_1.Issuer(issuerParams);
|
|
291
|
-
client = new issuer.Client(clientParams);
|
|
292
|
-
client.validateIdToken = () => {
|
|
293
|
-
// Do not attempt to validate the ID token. The client library would
|
|
294
|
-
// do this by default, but we do not have access to the necessary
|
|
295
|
-
// JWKS here. This is in direct conflict with the OIDC spec (!!)
|
|
296
|
-
// https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation:
|
|
297
|
-
//
|
|
298
|
-
// > Clients MUST validate the ID Token in the Token Response in the following manner: [...]
|
|
299
|
-
//
|
|
300
|
-
// We accept this because for the purposes of this plugin, we do not
|
|
301
|
-
// interact with the identity token, nor do we actually consume the
|
|
302
|
-
// access token. We leave it to the the server to validate that the token is
|
|
303
|
-
// valid, refers to the right identity, and comes from the right source.
|
|
304
|
-
};
|
|
305
422
|
const tokenSet = await client.callback(this.getRedirectURI(), params, {
|
|
306
423
|
code_verifier: codeVerifier,
|
|
307
424
|
state: oidcStateParam,
|
|
308
425
|
});
|
|
309
|
-
this.
|
|
426
|
+
this.updateStateWithTokenSet(state, tokenSet);
|
|
310
427
|
}
|
|
311
428
|
async deviceAuthorizationFlow(state, signal) {
|
|
312
|
-
|
|
313
|
-
const
|
|
314
|
-
const client = new issuer.Client(clientParams);
|
|
315
|
-
client.validateIdToken = () => {
|
|
316
|
-
/* see above */
|
|
317
|
-
};
|
|
429
|
+
this.verifyValidUrl(state.serverOIDCMetadata, 'issuer');
|
|
430
|
+
const { scope, client } = await this.getOIDCClient(state);
|
|
318
431
|
await (0, util_1.withAbortCheck)(signal, async ({ signalCheck, signalPromise }) => {
|
|
319
432
|
const deviceFlowHandle = await Promise.race([
|
|
320
433
|
client.deviceAuthorization({
|
|
321
|
-
client_id:
|
|
434
|
+
client_id: client.metadata.client_id,
|
|
322
435
|
scope,
|
|
323
436
|
}),
|
|
324
437
|
signalPromise,
|
|
@@ -329,7 +442,7 @@ class MongoDBOIDCPluginImpl {
|
|
|
329
442
|
verificationUrl: deviceFlowHandle.verification_uri,
|
|
330
443
|
});
|
|
331
444
|
const tokenSet = await deviceFlowHandle.poll({ signal });
|
|
332
|
-
this.
|
|
445
|
+
this.updateStateWithTokenSet(state, tokenSet);
|
|
333
446
|
});
|
|
334
447
|
}
|
|
335
448
|
async initiateAuthAttempt(state, driverAbortSignal) {
|
|
@@ -435,8 +548,11 @@ class MongoDBOIDCPluginImpl {
|
|
|
435
548
|
expiresInSeconds: 0,
|
|
436
549
|
};
|
|
437
550
|
}
|
|
438
|
-
async requestToken(
|
|
439
|
-
|
|
551
|
+
async requestToken(serverMetadata, context) {
|
|
552
|
+
if (context.version !== 0) {
|
|
553
|
+
throw new types_1.MongoDBOIDCError(`OIDC MongoDB driver protocol mismatch: unknown version ${context.version}`);
|
|
554
|
+
}
|
|
555
|
+
const state = this.getAuthState(serverMetadata);
|
|
440
556
|
if (state.currentAuthAttempt) {
|
|
441
557
|
return await state.currentAuthAttempt;
|
|
442
558
|
}
|
|
@@ -444,9 +560,10 @@ class MongoDBOIDCPluginImpl {
|
|
|
444
560
|
// for Node.js 14.x) to pass in an actual AbortSignal here. For
|
|
445
561
|
// compatibility with the 5.x driver/AbortSignal-less-Node.js, we accept
|
|
446
562
|
// a timeout in milliseconds as well.
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
563
|
+
const driverAbortSignal = context.timeoutContext ??
|
|
564
|
+
(context.timeoutSeconds
|
|
565
|
+
? (0, util_1.timeoutSignal)(context.timeoutSeconds * 1000)
|
|
566
|
+
: undefined);
|
|
450
567
|
const newAuthAttempt = this.initiateAuthAttempt(state, driverAbortSignal);
|
|
451
568
|
state.currentAuthAttempt = newAuthAttempt;
|
|
452
569
|
newAuthAttempt.finally(() => {
|
|
@@ -455,11 +572,6 @@ class MongoDBOIDCPluginImpl {
|
|
|
455
572
|
});
|
|
456
573
|
return newAuthAttempt;
|
|
457
574
|
}
|
|
458
|
-
async refreshToken(principalName, serverMetadata,
|
|
459
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
460
|
-
previousResult, driverAbortSignal) {
|
|
461
|
-
return await this.requestToken(principalName, serverMetadata, driverAbortSignal);
|
|
462
|
-
}
|
|
463
575
|
}
|
|
464
576
|
exports.MongoDBOIDCPluginImpl = MongoDBOIDCPluginImpl;
|
|
465
577
|
//# sourceMappingURL=plugin.js.map
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rfc-8252-http-server.d.ts","sourceRoot":"","sources":["../src/rfc-8252-http-server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EACV,4BAA4B,EAE7B,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;IACpD,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;CAC7D;AAED,gBAAgB;AAChB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA+B;IACrE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IACpE,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;IAIJ,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IACpD,OAAO,CAAC,iBAAiB,CAAC,CAA2B;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAoC;IAG7D,OAAO,CAAC,UAAU,CAAqB;gBAE3B,OAAO,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"rfc-8252-http-server.d.ts","sourceRoot":"","sources":["../src/rfc-8252-http-server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EACV,4BAA4B,EAE7B,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;IACpD,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;CAC7D;AAED,gBAAgB;AAChB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA+B;IACrE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IACpE,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;IAIJ,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkB;IACpD,OAAO,CAAC,iBAAiB,CAAC,CAA2B;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAoC;IAG7D,OAAO,CAAC,UAAU,CAAqB;gBAE3B,OAAO,EAAE,wBAAwB;IAyC7C,OAAO,CAAC,cAAc,CAcpB;IAEF,OAAO,CAAC,yBAAyB,CAiB/B;IAEF,OAAO,CAAC,mBAAmB,CAmHzB;IAEF,OAAO,CAAC,gBAAgB,CAYtB;IAEF;;OAEG;IACU,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACnD,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KAC3B,CAAC;IAgBF;;;OAGG;IACH,IAAW,aAAa,IAAI,MAAM,GAAG,SAAS,CAa7C;IAED;;;;OAIG;IACH,IAAW,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAMpD;IAED;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA6GpC,OAAO,CAAC,qBAAqB;IAoB7B;;;OAGG;IACU,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjD;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC;;;OAGG;IACU,yBAAyB,CAAC,EACrC,MAAM,GACP,GAAE;QACD,MAAM,CAAC,EAAE,eAAe,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;CASzB"}
|
|
@@ -158,6 +158,10 @@ class RFC8252HTTPServer {
|
|
|
158
158
|
options.redirectServerRequestHandler ?? defaultRedirectServerHandler;
|
|
159
159
|
this.logger = options.logger ?? new events_1.EventEmitter();
|
|
160
160
|
this.oidcParamsPromise = new Promise((resolve, reject) => ([this.oidcParamsResolve, this.oidcParamsReject] = [resolve, reject]));
|
|
161
|
+
// Errors are handled by the caller of this instance.
|
|
162
|
+
this.oidcParamsPromise.catch(() => {
|
|
163
|
+
/* Suppress UnhandledPromiseRejectionWarning */
|
|
164
|
+
});
|
|
161
165
|
this.expressApp = (0, express_1.default)();
|
|
162
166
|
// Identity providers are not strictly required to use the query string to
|
|
163
167
|
// pass tokens and can also use the body as a form POST, even though the
|