@oslokommune/auth-bff 1.6.0-beta1 → 1.6.0-beta3

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.
@@ -158,7 +158,7 @@ export class OidcMiddleware {
158
158
  console.log(`Front channel logout: params iss=${iss}, sid=${redact(sid)}`);
159
159
  if (sid) {
160
160
  try {
161
- yield ((_a = req.destroySessionByIdTokenSid) === null || _a === void 0 ? void 0 : _a.call(req, sid));
161
+ yield ((_a = req.destroySessionByIdpSid) === null || _a === void 0 ? void 0 : _a.call(req, sid));
162
162
  }
163
163
  catch (e) {
164
164
  console.error("Failed to destroy session", e);
@@ -18,7 +18,7 @@ export function proxyRoutes(config, oidcMiddleware) {
18
18
  proxyReq.removeHeader("Cookie");
19
19
  },
20
20
  proxyRes: (proxyRes, req, res) => {
21
- console.log(`proxyied ${req.originalUrl}: ${proxyRes.statusCode}`);
21
+ console.log(`Proxied ${req.originalUrl}: ${proxyRes.statusCode}`);
22
22
  }
23
23
  }
24
24
  }));
@@ -0,0 +1,2 @@
1
+ export function dynamoDbSessionStore(config?: {}): any;
2
+ //# sourceMappingURL=dynamoDbSessionStore.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamoDbSessionStore.d.mts","sourceRoot":"","sources":["../../../src/middleware/sessions/dynamoDbSessionStore.mjs"],"names":[],"mappings":"AA6BA,uDAcC"}
@@ -0,0 +1,46 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { DeleteItemCommand, DynamoDBClient, QueryCommand } from "@aws-sdk/client-dynamodb";
11
+ import dynamoDbStore from "connect-dynamodb";
12
+ import session from "express-session";
13
+ import { redact } from "../../utils.js";
14
+ const destroyByIdpSid = (config, client) => {
15
+ return (idpSid) => __awaiter(void 0, void 0, void 0, function* () {
16
+ console.log(`Front channel logout: deleting session(s) with idp-sid=${redact(idpSid)}`);
17
+ const query = new QueryCommand({
18
+ TableName: config.table,
19
+ IndexName: "idp-sid-index",
20
+ ExpressionAttributeValues: { ":sid": { S: idpSid } },
21
+ ExpressionAttributeNames: { "#k": "idp-sid" },
22
+ KeyConditionExpression: "#k = :sid",
23
+ ProjectionExpression: "id"
24
+ });
25
+ const res = yield client.send(query);
26
+ yield Promise.all(res.Items.map((item) => {
27
+ var _a;
28
+ console.log(`Front channel logout: deleting session ${redact((_a = item.id) === null || _a === void 0 ? void 0 : _a.S, 10)}`);
29
+ return client.send(new DeleteItemCommand({
30
+ TableName: config.table,
31
+ Key: { id: item.id }
32
+ }));
33
+ }));
34
+ console.log(`Front channel logout: completed. ${res.Count} session(s) deleted`);
35
+ });
36
+ };
37
+ export function dynamoDbSessionStore(config = {}) {
38
+ const client = new DynamoDBClient({});
39
+ const DynamoDbStore = dynamoDbStore({ session });
40
+ const sessionStoreConfig = Object.assign(Object.assign({}, config), { client, specialKeys: [
41
+ { name: "idp-sid", type: "S" }
42
+ ], skipThrowMissingSpecialKeys: true });
43
+ const sessionStore = new DynamoDbStore(sessionStoreConfig);
44
+ sessionStore.destroyByIdpSid = destroyByIdpSid(config, client);
45
+ return sessionStore;
46
+ }
@@ -0,0 +1,2 @@
1
+ export function memorySessionStore(config?: {}): any;
2
+ //# sourceMappingURL=memorySessionStore.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memorySessionStore.d.mts","sourceRoot":"","sources":["../../../src/middleware/sessions/memorySessionStore.mjs"],"names":[],"mappings":"AAQA,qDAIC"}
@@ -0,0 +1,11 @@
1
+ import session from "express-session";
2
+ import { redact } from "../../utils.js";
3
+ const destroyByIdpSid = (idpSid) => {
4
+ // This is not supposed to be used outside localhost, so it is not implemented
5
+ console.log(`Pretending to destroyByIdpSid. idp-sid=${redact(idpSid)}`);
6
+ };
7
+ export function memorySessionStore(config = {}) {
8
+ const sessionStore = new session.MemoryStore(config);
9
+ sessionStore.destroyByIdpSid = destroyByIdpSid;
10
+ return sessionStore;
11
+ }
@@ -0,0 +1,2 @@
1
+ export function sessions(config: any): any[];
2
+ //# sourceMappingURL=sessions.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.mts","sourceRoot":"","sources":["../../../src/middleware/sessions/sessions.mjs"],"names":[],"mappings":"AAIA,6CAiCC"}
@@ -0,0 +1,40 @@
1
+ import session from "express-session";
2
+ import { dynamoDbSessionStore } from "./dynamoDbSessionStore.mjs";
3
+ import { memorySessionStore } from "./memorySessionStore.mjs";
4
+ export function sessions(config) {
5
+ var _a, _b;
6
+ let sessionStore;
7
+ if (config.sessionStoreType === 'memory') {
8
+ const sessionStoreOptions = (_a = config.sessionStoreOptions) !== null && _a !== void 0 ? _a : {};
9
+ sessionStore = memorySessionStore(sessionStoreOptions);
10
+ }
11
+ else if (config.sessionStoreType === 'dynamodb') {
12
+ const sessionStoreOptions = (_b = config.sessionStoreOptions) !== null && _b !== void 0 ? _b : {};
13
+ sessionStore = dynamoDbSessionStore(sessionStoreOptions);
14
+ }
15
+ else if (config.sessionStoreType) {
16
+ throw Error(`unknown sessionStoreType ${config.sessionStoreType}`);
17
+ }
18
+ else {
19
+ throw Error('missing sessionStoreType');
20
+ }
21
+ return [
22
+ session({
23
+ secret: config.sessionSecret,
24
+ store: sessionStore,
25
+ resave: false,
26
+ saveUninitialized: false,
27
+ cookie: config.cookie || {
28
+ httpOnly: true,
29
+ path: config.cookiePath,
30
+ secure: config.cookieSecure,
31
+ sameSite: config.cookieSameSite
32
+ },
33
+ }),
34
+ (req, _, next) => {
35
+ // make this function available to request handlers
36
+ req.destroySessionByIdpSid = sessionStore === null || sessionStore === void 0 ? void 0 : sessionStore.destroyByIdpSid;
37
+ next();
38
+ }
39
+ ];
40
+ }
package/dist/server.mjs CHANGED
@@ -5,10 +5,11 @@ import { loadConfig } from './config.mjs';
5
5
  import { proxyRoutes } from "./middleware/proxy-routes.mjs";
6
6
  import { staticRoutes } from "./middleware/static-routes.mjs";
7
7
  import { securityHeaders } from "./middleware/security-headers.mjs";
8
- import { sessions } from "./middleware/sessions.mjs";
8
+ import { sessions } from "./middleware/sessions/sessions.mjs";
9
9
  import { oidcRoutes } from "./middleware/oidc-routes.mjs";
10
10
  import { OidcMiddleware } from "./middleware/oidc.mjs";
11
11
  import commandLineArgs from "command-line-args";
12
+ import packageJson from "../package.json" with { type: 'json' };
12
13
  const options = commandLineArgs({ name: 'configFile' });
13
14
  const config = await loadConfig(options.configFile);
14
15
  const port = process.env.port || config.port || 8080;
@@ -32,7 +33,7 @@ app.use(requestLogger); //NB, må stå her for å ikke logge auth-requestene ove
32
33
  app.use(basePath, proxyRoutes(config, oidcMiddleware));
33
34
  app.use(basePath, staticRoutes(config));
34
35
  const server = app.listen(port, () => {
35
- console.log(`Server started on port ${port}`);
36
+ console.log(`auth-bff ${packageJson.version} started on port ${port}`);
36
37
  });
37
38
  process.on('SIGTERM', () => {
38
39
  console.log('SIGTERM received. Closing...');
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.d.mts","sourceRoot":"","sources":["../src/vite-plugin.mjs"],"names":[],"mappings":"AAyBA;;;;;;;;GAQG;AACH,kDAPa;IACT,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,CAAC,CAAC,CAAS,IAAgB,EAAhB;QAAC,WAAW,EAAE,GAAC,CAAA;KAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,GAAC,CAAC,CAAC;IACjE,sBAAsB,EAAE,CAAC,CAAC,CAAS,IAAgB,EAAhB;QAAC,WAAW,EAAE,GAAC,CAAA;KAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,GAAC,CAAC,CAAA;CACvE,CASH"}
1
+ {"version":3,"file":"vite-plugin.d.mts","sourceRoot":"","sources":["../src/vite-plugin.mjs"],"names":[],"mappings":"AAwBA;;;;;;;;GAQG;AACH,kDAPa;IACT,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,CAAC,CAAC,CAAS,IAAgB,EAAhB;QAAC,WAAW,EAAE,GAAC,CAAA;KAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,GAAC,CAAC,CAAC;IACjE,sBAAsB,EAAE,CAAC,CAAC,CAAS,IAAgB,EAAhB;QAAC,WAAW,EAAE,GAAC,CAAA;KAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAC,GAAC,CAAC,CAAA;CACvE,CASH"}
@@ -14,7 +14,7 @@ function configureServer(configFile) {
14
14
  return (_a) => __awaiter(this, [_a], void 0, function* ({ middlewares }) {
15
15
  const { oidcRoutes } = yield import("./middleware/oidc-routes.mjs");
16
16
  const { proxyRoutes } = yield import("./middleware/proxy-routes.mjs");
17
- const { sessions } = yield import("./middleware/sessions.mjs");
17
+ const { sessions } = yield import("./middleware/sessions/sessions.mjs");
18
18
  const config = yield loadConfig(configFile);
19
19
  const oidcMiddleware = yield OidcMiddleware.create(config);
20
20
  const basePath = config.basePath || "/";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oslokommune/auth-bff",
3
- "version": "1.6.0-beta1",
3
+ "version": "1.6.0-beta3",
4
4
  "repository": "https://github.com/oslokommune/auth-bff.git",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -37,8 +37,8 @@
37
37
  "command-line-args": "^6.0.1",
38
38
  "compression": "^1.8.0",
39
39
  "connect-dynamodb": "^3.0.5",
40
- "express": "^4.21.2",
41
- "express-session": "^1.18.1",
40
+ "express": "4.21.2",
41
+ "express-session": "1.18.2",
42
42
  "find-up": "^7.0.0",
43
43
  "helmet": "^8.1.0",
44
44
  "http-proxy-middleware": "^3.0.5",