@backstage/plugin-auth-backend 0.18.3-next.1 → 0.18.3-next.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/CHANGELOG.md +8 -0
- package/dist/index.cjs.js +85 -24
- package/dist/index.cjs.js.map +1 -1
- package/migrations/20230428155633_sessions.js +52 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
package/dist/index.cjs.js
CHANGED
|
@@ -30,12 +30,14 @@ var catalogClient = require('@backstage/catalog-client');
|
|
|
30
30
|
var catalogModel = require('@backstage/catalog-model');
|
|
31
31
|
var luxon = require('luxon');
|
|
32
32
|
var uuid = require('uuid');
|
|
33
|
-
var backendCommon = require('@backstage/backend-common');
|
|
34
33
|
var firestore = require('@google-cloud/firestore');
|
|
35
34
|
var lodash = require('lodash');
|
|
36
35
|
var session = require('express-session');
|
|
36
|
+
var connectSessionKnex = require('connect-session-knex');
|
|
37
37
|
var passport = require('passport');
|
|
38
38
|
var minimatch = require('minimatch');
|
|
39
|
+
var backendCommon = require('@backstage/backend-common');
|
|
40
|
+
var config = require('@backstage/config');
|
|
39
41
|
|
|
40
42
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
41
43
|
|
|
@@ -69,6 +71,7 @@ var Auth0InternalStrategy__default = /*#__PURE__*/_interopDefaultLegacy(Auth0Int
|
|
|
69
71
|
var fetch__default = /*#__PURE__*/_interopDefaultLegacy(fetch);
|
|
70
72
|
var NodeCache__default = /*#__PURE__*/_interopDefaultLegacy(NodeCache);
|
|
71
73
|
var session__default = /*#__PURE__*/_interopDefaultLegacy(session);
|
|
74
|
+
var connectSessionKnex__default = /*#__PURE__*/_interopDefaultLegacy(connectSessionKnex);
|
|
72
75
|
var passport__default = /*#__PURE__*/_interopDefaultLegacy(passport);
|
|
73
76
|
|
|
74
77
|
const defaultScopes = ["offline_access", "read:me"];
|
|
@@ -3212,10 +3215,6 @@ class TokenFactory {
|
|
|
3212
3215
|
}
|
|
3213
3216
|
}
|
|
3214
3217
|
|
|
3215
|
-
const migrationsDir = backendCommon.resolvePackagePath(
|
|
3216
|
-
"@backstage/plugin-auth-backend",
|
|
3217
|
-
"migrations"
|
|
3218
|
-
);
|
|
3219
3218
|
const TABLE = "signing_keys";
|
|
3220
3219
|
const parseDate = (date) => {
|
|
3221
3220
|
const parsedDate = typeof date === "string" ? luxon.DateTime.fromSQL(date, { zone: "UTC" }) : luxon.DateTime.fromJSDate(date);
|
|
@@ -3227,17 +3226,6 @@ const parseDate = (date) => {
|
|
|
3227
3226
|
return parsedDate.toJSDate();
|
|
3228
3227
|
};
|
|
3229
3228
|
class DatabaseKeyStore {
|
|
3230
|
-
static async create(options) {
|
|
3231
|
-
var _a;
|
|
3232
|
-
const { database } = options;
|
|
3233
|
-
const client = await database.getClient();
|
|
3234
|
-
if (!((_a = database.migrations) == null ? void 0 : _a.skip)) {
|
|
3235
|
-
await client.migrate.latest({
|
|
3236
|
-
directory: migrationsDir
|
|
3237
|
-
});
|
|
3238
|
-
}
|
|
3239
|
-
return new DatabaseKeyStore(client);
|
|
3240
|
-
}
|
|
3241
3229
|
constructor(client) {
|
|
3242
3230
|
this.client = client;
|
|
3243
3231
|
}
|
|
@@ -3377,15 +3365,12 @@ class KeyStores {
|
|
|
3377
3365
|
*/
|
|
3378
3366
|
static async fromConfig(config, options) {
|
|
3379
3367
|
var _a;
|
|
3380
|
-
const { logger, database } = options
|
|
3368
|
+
const { logger, database } = options;
|
|
3381
3369
|
const ks = config.getOptionalConfig("auth.keyStore");
|
|
3382
3370
|
const provider = (_a = ks == null ? void 0 : ks.getOptionalString("provider")) != null ? _a : "database";
|
|
3383
|
-
logger
|
|
3371
|
+
logger.info(`Configuring "${provider}" as KeyStore provider`);
|
|
3384
3372
|
if (provider === "database") {
|
|
3385
|
-
|
|
3386
|
-
throw new Error("This KeyStore provider requires a database");
|
|
3387
|
-
}
|
|
3388
|
-
return await DatabaseKeyStore.create({ database });
|
|
3373
|
+
return new DatabaseKeyStore(await database.get());
|
|
3389
3374
|
}
|
|
3390
3375
|
if (provider === "memory") {
|
|
3391
3376
|
return new MemoryKeyStore();
|
|
@@ -3571,6 +3556,73 @@ class CatalogAuthResolverContext {
|
|
|
3571
3556
|
}
|
|
3572
3557
|
}
|
|
3573
3558
|
|
|
3559
|
+
var __accessCheck = (obj, member, msg) => {
|
|
3560
|
+
if (!member.has(obj))
|
|
3561
|
+
throw TypeError("Cannot " + msg);
|
|
3562
|
+
};
|
|
3563
|
+
var __privateGet = (obj, member, getter) => {
|
|
3564
|
+
__accessCheck(obj, member, "read from private field");
|
|
3565
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
3566
|
+
};
|
|
3567
|
+
var __privateAdd = (obj, member, value) => {
|
|
3568
|
+
if (member.has(obj))
|
|
3569
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
3570
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
3571
|
+
};
|
|
3572
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
3573
|
+
__accessCheck(obj, member, "write to private field");
|
|
3574
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
3575
|
+
return value;
|
|
3576
|
+
};
|
|
3577
|
+
var _database, _promise;
|
|
3578
|
+
const migrationsDir = backendCommon.resolvePackagePath(
|
|
3579
|
+
"@backstage/plugin-auth-backend",
|
|
3580
|
+
"migrations"
|
|
3581
|
+
);
|
|
3582
|
+
const _AuthDatabase = class {
|
|
3583
|
+
constructor(database) {
|
|
3584
|
+
__privateAdd(this, _database, void 0);
|
|
3585
|
+
__privateAdd(this, _promise, void 0);
|
|
3586
|
+
__privateSet(this, _database, database);
|
|
3587
|
+
}
|
|
3588
|
+
static create(database) {
|
|
3589
|
+
return new _AuthDatabase(database);
|
|
3590
|
+
}
|
|
3591
|
+
/** @internal */
|
|
3592
|
+
static forTesting() {
|
|
3593
|
+
const config$1 = new config.ConfigReader({
|
|
3594
|
+
backend: {
|
|
3595
|
+
database: {
|
|
3596
|
+
client: "better-sqlite3",
|
|
3597
|
+
connection: ":memory:",
|
|
3598
|
+
useNullAsDefault: true
|
|
3599
|
+
}
|
|
3600
|
+
}
|
|
3601
|
+
});
|
|
3602
|
+
const database = backendCommon.DatabaseManager.fromConfig(config$1).forPlugin("auth");
|
|
3603
|
+
return new _AuthDatabase(database);
|
|
3604
|
+
}
|
|
3605
|
+
static async runMigrations(knex) {
|
|
3606
|
+
await knex.migrate.latest({
|
|
3607
|
+
directory: migrationsDir
|
|
3608
|
+
});
|
|
3609
|
+
}
|
|
3610
|
+
get() {
|
|
3611
|
+
var _a;
|
|
3612
|
+
(_a = __privateGet(this, _promise)) != null ? _a : __privateSet(this, _promise, __privateGet(this, _database).getClient().then(async (client) => {
|
|
3613
|
+
var _a2;
|
|
3614
|
+
if (!((_a2 = __privateGet(this, _database).migrations) == null ? void 0 : _a2.skip)) {
|
|
3615
|
+
await _AuthDatabase.runMigrations(client);
|
|
3616
|
+
}
|
|
3617
|
+
return client;
|
|
3618
|
+
}));
|
|
3619
|
+
return __privateGet(this, _promise);
|
|
3620
|
+
}
|
|
3621
|
+
};
|
|
3622
|
+
let AuthDatabase = _AuthDatabase;
|
|
3623
|
+
_database = new WeakMap();
|
|
3624
|
+
_promise = new WeakMap();
|
|
3625
|
+
|
|
3574
3626
|
async function createRouter(options) {
|
|
3575
3627
|
const {
|
|
3576
3628
|
logger,
|
|
@@ -3585,7 +3637,11 @@ async function createRouter(options) {
|
|
|
3585
3637
|
const router = Router__default["default"]();
|
|
3586
3638
|
const appUrl = config.getString("app.baseUrl");
|
|
3587
3639
|
const authUrl = await discovery.getExternalBaseUrl("auth");
|
|
3588
|
-
const
|
|
3640
|
+
const authDb = AuthDatabase.create(database);
|
|
3641
|
+
const keyStore = await KeyStores.fromConfig(config, {
|
|
3642
|
+
logger,
|
|
3643
|
+
database: authDb
|
|
3644
|
+
});
|
|
3589
3645
|
const keyDurationSeconds = 3600;
|
|
3590
3646
|
const tokenIssuer = new TokenFactory({
|
|
3591
3647
|
issuer: authUrl,
|
|
@@ -3598,12 +3654,17 @@ async function createRouter(options) {
|
|
|
3598
3654
|
if (secret) {
|
|
3599
3655
|
router.use(cookieParser__default["default"](secret));
|
|
3600
3656
|
const enforceCookieSSL = authUrl.startsWith("https");
|
|
3657
|
+
const KnexSessionStore = connectSessionKnex__default["default"](session__default["default"]);
|
|
3601
3658
|
router.use(
|
|
3602
3659
|
session__default["default"]({
|
|
3603
3660
|
secret,
|
|
3604
3661
|
saveUninitialized: false,
|
|
3605
3662
|
resave: false,
|
|
3606
|
-
cookie: { secure: enforceCookieSSL ? "auto" : false }
|
|
3663
|
+
cookie: { secure: enforceCookieSSL ? "auto" : false },
|
|
3664
|
+
store: new KnexSessionStore({
|
|
3665
|
+
createtable: false,
|
|
3666
|
+
knex: await authDb.get()
|
|
3667
|
+
})
|
|
3607
3668
|
})
|
|
3608
3669
|
);
|
|
3609
3670
|
router.use(passport__default["default"].initialize());
|