@lilaquadrat/studio 10.6.0 → 10.7.0

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.
@@ -1,6 +1,6 @@
1
1
  import { FastifyPluginAsync } from 'fastify';
2
- import { isM2M } from './isM2M.js';
3
- export { isM2M };
2
+ import { tokenRoles } from './tokenRoles.js';
3
+ export { tokenRoles };
4
4
  type OAuthJwtUser = {
5
5
  given_name: string;
6
6
  family_name: string;
@@ -18,8 +18,17 @@ type OAuthJwtUser = {
18
18
  email_verified: boolean;
19
19
  gty?: string;
20
20
  scope?: string;
21
+ /** legacy Auth0 RBAC claim. Keycloak carries authorisation in realm_access/resource_access instead. */
21
22
  permissions?: string[];
22
23
  azp?: string;
24
+ client_id?: string;
25
+ preferred_username?: string;
26
+ realm_access?: {
27
+ roles?: string[];
28
+ };
29
+ resource_access?: Record<string, {
30
+ roles?: string[];
31
+ }>;
23
32
  customerInternalId?: any;
24
33
  };
25
34
  declare module '@fastify/jwt' {
@@ -3,9 +3,9 @@ import fp from 'fastify-plugin';
3
3
  import fastifyJwt from '@fastify/jwt';
4
4
  import jwksRsa from 'jwks-rsa';
5
5
  import respondCode from '../functions/respondCode.js';
6
+ import { tokenRoles } from './tokenRoles.js';
6
7
  import auth0config from './auth0config.js';
7
- import { isM2M } from './isM2M.js';
8
- export { isM2M };
8
+ export { tokenRoles };
9
9
  const TRANSIENT_NETWORK_CODES = new Set([
10
10
  'ETIMEDOUT', 'ECONNRESET', 'ECONNREFUSED', 'ENOTFOUND', 'EAI_AGAIN', 'ECONNABORTED',
11
11
  ]);
@@ -106,13 +106,23 @@ const authPlugin = async (fastify) => {
106
106
  return respondCode(upstream ? "SERVICE_UNAVAILABLE" : "UNAUTHORIZED", reply);
107
107
  }
108
108
  });
109
- fastify.decorate('authenticateM2M', async (request, reply) => {
109
+ /**
110
+ * Authorise by ROLE rather than by caller type.
111
+ *
112
+ * Replaces the old `authenticateM2M`, which asked "is this a machine token?" and let any service
113
+ * account through. Classifying the caller was never the security question — what matters is
114
+ * whether this token is entitled to the operation. A service account carries the role via
115
+ * Keycloak realm roles; a user could be granted the same role and pass identically.
116
+ */
117
+ fastify.decorate('authorize', (...roles) => async (request, reply) => {
110
118
  try {
111
119
  await request.jwtVerify();
112
- if (!isM2M(request.user)) {
120
+ request.auth = request.user;
121
+ const granted = tokenRoles(request.user);
122
+ if (!roles.some((single) => granted.includes(single))) {
123
+ request.requestLog?.warn?.('auth.forbidden', { required: roles, granted });
113
124
  return respondCode("FORBIDDEN", reply);
114
125
  }
115
- request.auth = request.user;
116
126
  }
117
127
  catch (err) {
118
128
  const upstream = isTransientAuthError(err);
@@ -145,7 +155,7 @@ const authPlugin = async (fastify) => {
145
155
  email_verified: true
146
156
  };
147
157
  });
148
- fastify.decorate('authenticateM2M', async (request, reply) => {
158
+ fastify.decorate('authorize', (..._roles) => async (request, _reply) => {
149
159
  request.auth = {
150
160
  sub: 'dev-m2m@clients',
151
161
  given_name: 'M2M',
@@ -1 +1 @@
1
- {"version":3,"file":"authPlugin.js","sourceRoot":"","sources":["../../../src/helpers/authPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authPlugin.js","sourceRoot":"","sources":["../../../src/helpers/authPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Every role a token carries, from both realm-level and per-client mappings.
3
+ *
4
+ * Keycloak emits these natively through the default `roles` client scope — no protocol mapper and no
5
+ * realm-specific configuration required. Authorisation is therefore expressed as role assignments in
6
+ * Keycloak rather than as a hardcoded claim on each client.
7
+ *
8
+ * IMPORTANT: this helper must stay dependency-free. It is imported by me.service, which is reachable
9
+ * from non-Fastify NATS workers via the package barrel. It must NOT import authPlugin or anything
10
+ * that pulls in `fastify-plugin`, or those workers crash at import time with ERR_MODULE_NOT_FOUND.
11
+ * (This is why it lives here rather than alongside the Fastify decorator that also uses it.)
12
+ */
13
+ export declare const tokenRoles: (auth: {
14
+ realm_access?: {
15
+ roles?: string[];
16
+ };
17
+ resource_access?: Record<string, {
18
+ roles?: string[];
19
+ }>;
20
+ } | undefined) => string[];
21
+ export default tokenRoles;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Every role a token carries, from both realm-level and per-client mappings.
3
+ *
4
+ * Keycloak emits these natively through the default `roles` client scope — no protocol mapper and no
5
+ * realm-specific configuration required. Authorisation is therefore expressed as role assignments in
6
+ * Keycloak rather than as a hardcoded claim on each client.
7
+ *
8
+ * IMPORTANT: this helper must stay dependency-free. It is imported by me.service, which is reachable
9
+ * from non-Fastify NATS workers via the package barrel. It must NOT import authPlugin or anything
10
+ * that pulls in `fastify-plugin`, or those workers crash at import time with ERR_MODULE_NOT_FOUND.
11
+ * (This is why it lives here rather than alongside the Fastify decorator that also uses it.)
12
+ */
13
+ export const tokenRoles = (auth) => {
14
+ if (!auth)
15
+ return [];
16
+ const realm = auth.realm_access?.roles ?? [];
17
+ const perClient = Object.values(auth.resource_access ?? {}).flatMap((single) => single.roles ?? []);
18
+ return [...new Set([...realm, ...perClient])];
19
+ };
20
+ export default tokenRoles;
21
+ //# sourceMappingURL=tokenRoles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenRoles.js","sourceRoot":"","sources":["../../../src/helpers/tokenRoles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAGd,EAAY,EAAE;IAEzB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAEpG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAEhD,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,11 +1,19 @@
1
1
  /**
2
- * Standalone Auth0/OIDC JWT verification — usable outside Fastify (e.g. the chat
3
- * websocket server, which @fastify/jwt's request-bound jwtVerify can't reach).
2
+ * Standalone OIDC JWT verification — usable outside Fastify (e.g. the chat websocket
3
+ * server, which @fastify/jwt's request-bound jwtVerify can't reach).
4
4
  * Verifies an RS256 token's signature against the IdP JWKS and validates the
5
5
  * standard time/issuer/audience claims. Returns the decoded claims on success;
6
6
  * throws on any failure (bad signature, expired, wrong issuer, unknown kid).
7
7
  *
8
- * Mirrors authPlugin's RS256 + jwks-rsa approach so HTTP and WS trust the same keys.
8
+ * Mirrors authPlugin's RS256 + jwks-rsa approach so HTTP and WS trust the same keys —
9
+ * including its DUAL-ISSUER routing: when no explicit jwksUri is passed, the key set is
10
+ * chosen by the token's own `iss`, so Auth0 and Keycloak tokens both verify. Without this
11
+ * every websocket connection breaks the moment user auth moves to Keycloak, because the
12
+ * defaults (JWT_URL/JWT_ISSUER) only ever describe one issuer.
13
+ *
14
+ * Selecting the key set by the (still unverified) `iss` is safe: the signature is then
15
+ * checked against that issuer's real public key, so a token claiming iss=Keycloak but not
16
+ * signed by Keycloak fails the kid/signature check below.
9
17
  */
10
18
  type JwtClaims = {
11
19
  sub: string;
@@ -26,15 +26,24 @@ function decodeSegment(segment) {
26
26
  return JSON.parse(base64UrlDecode(segment).toString('utf8'));
27
27
  }
28
28
  export default async function verifyToken(token, options = {}) {
29
- const jwksUri = options.jwksUri ?? process.env.JWT_URL;
30
- const issuer = options.issuer ?? process.env.JWT_ISSUER;
31
- if (!jwksUri)
32
- throw new Error('JWKS uri not configured (set JWT_URL or pass jwksUri)');
33
29
  const parts = token.split('.');
34
30
  if (parts.length !== 3)
35
31
  throw new Error('malformed token');
36
32
  const [headerB64, payloadB64, signatureB64] = parts;
37
33
  const header = decodeSegment(headerB64);
34
+ const unverified = decodeSegment(payloadB64);
35
+ // dual-issuer: route the JWKS lookup by the token's own issuer unless a caller pinned one
36
+ const keycloakIssuer = process.env.KEYCLOAK_ISSUER;
37
+ const isKeycloak = !!keycloakIssuer && unverified.iss === keycloakIssuer;
38
+ const jwksUri = options.jwksUri
39
+ ?? (isKeycloak ? process.env.KEYCLOAK_JWT_URL : process.env.JWT_URL);
40
+ const issuer = options.issuer
41
+ ?? (isKeycloak ? keycloakIssuer : process.env.JWT_ISSUER);
42
+ if (!jwksUri) {
43
+ throw new Error(isKeycloak
44
+ ? 'JWKS uri not configured for Keycloak (set KEYCLOAK_JWT_URL)'
45
+ : 'JWKS uri not configured (set JWT_URL or pass jwksUri)');
46
+ }
38
47
  if (header.alg !== 'RS256')
39
48
  throw new Error(`unsupported token alg: ${header.alg}`);
40
49
  if (!header.kid)
@@ -1 +1 @@
1
- {"version":3,"file":"verifyToken.js","sourceRoot":"","sources":["../../../src/helpers/verifyToken.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyToken.js","sourceRoot":"","sources":["../../../src/helpers/verifyToken.ts"],"names":[],"mappings":"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"}
@@ -23,10 +23,23 @@ declare class MeService extends Immutable<Me> {
23
23
  * if company is given, get all project permissions
24
24
  */
25
25
  getPermissions(user: string, company?: string, project?: string): Promise<import("bson").Document[]>;
26
- addUser(userId: string, auth0Config: {
27
- url: string;
28
- id: string;
29
- secret: string;
26
+ /**
27
+ * JIT-creates the `me` document on a user's first authenticated request.
28
+ *
29
+ * Reads the profile straight off the already-verified access token. This used to call the Auth0
30
+ * Management API, because Auth0 access tokens carry no profile claims — Keycloak's do, provided the
31
+ * client requests the `profile` and `email` scopes. That removed the last Auth0 dependency in the
32
+ * request path along with AUTH_URL / AUTH_CLIENT_ID / AUTH_CLIENT_SECRET.
33
+ *
34
+ * Names are truncated to 20 characters because me.model's create schema caps them there; an
35
+ * over-long name from the IdP would otherwise fail validation and leave the user with no `me` doc
36
+ * (which surfaces as USER_NOT_FOUND and an immediate logout).
37
+ */
38
+ addUser(auth: {
39
+ sub: string;
40
+ given_name?: string;
41
+ family_name?: string;
42
+ email?: string;
30
43
  }): Promise<import("@lilaquadrat/interfaces").CreateResult<BasicData<Me>>>;
31
44
  updateUser(user: string, data: Me & {
32
45
  terms?: boolean;
@@ -1,10 +1,9 @@
1
- import { ManagementClient } from 'auth0';
2
1
  import CustomersService from '../services/customers.service.js';
3
2
  import MeModel from '../models/me.model.js';
4
3
  import PermissionsModel from '../models/permissions.model.js';
5
4
  import SettingsModel from '../models/settings.model.js';
6
5
  import Immutable from '../Immutable.class.js';
7
- import { isM2M } from '../helpers/isM2M.js';
6
+ import { tokenRoles } from '../helpers/tokenRoles.js';
8
7
  class MeService extends Immutable {
9
8
  constructor() {
10
9
  super(...arguments);
@@ -151,20 +150,30 @@ class MeService extends Immutable {
151
150
  }
152
151
  return PermissionsModel.db.aggregate(aggregation).toArray();
153
152
  }
154
- addUser(userId, auth0Config) {
155
- const client = new ManagementClient({
156
- domain: auth0Config.url,
157
- clientId: auth0Config.id,
158
- clientSecret: auth0Config.secret,
159
- });
160
- return client.users.get({ id: userId })
161
- .then((user) => {
162
- const newUser = { id: userId };
163
- newUser.prename = user.data.given_name;
164
- newUser.lastname = user.data.family_name;
165
- newUser.email = user.data.email;
166
- return this.create(newUser, 'system', 'system');
167
- });
153
+ /**
154
+ * JIT-creates the `me` document on a user's first authenticated request.
155
+ *
156
+ * Reads the profile straight off the already-verified access token. This used to call the Auth0
157
+ * Management API, because Auth0 access tokens carry no profile claims — Keycloak's do, provided the
158
+ * client requests the `profile` and `email` scopes. That removed the last Auth0 dependency in the
159
+ * request path along with AUTH_URL / AUTH_CLIENT_ID / AUTH_CLIENT_SECRET.
160
+ *
161
+ * Names are truncated to 20 characters because me.model's create schema caps them there; an
162
+ * over-long name from the IdP would otherwise fail validation and leave the user with no `me` doc
163
+ * (which surfaces as USER_NOT_FOUND and an immediate logout).
164
+ */
165
+ addUser(auth) {
166
+ const newUser = { id: auth.sub };
167
+ const prename = auth.given_name?.trim();
168
+ const lastname = auth.family_name?.trim();
169
+ const email = auth.email?.trim().toLowerCase();
170
+ if (prename)
171
+ newUser.prename = prename.slice(0, 20);
172
+ if (lastname)
173
+ newUser.lastname = lastname.slice(0, 20);
174
+ if (email)
175
+ newUser.email = email;
176
+ return this.create(newUser, 'system', 'system');
168
177
  }
169
178
  updateUser(user, data) {
170
179
  let updateObject = { ...data };
@@ -246,18 +255,25 @@ class MeService extends Immutable {
246
255
  */
247
256
  static checkStorageScope(action) {
248
257
  return async (request, reply) => {
249
- let scope;
250
258
  if (!request.auth) {
251
259
  return reply.code(401).send();
252
260
  }
253
- if (isM2M(request.auth)) {
254
- scope = request.auth.permissions;
255
- }
256
- else {
257
- const permission = await MeService.getSinglePermission(request.auth.sub, request.params.company, request.params.project);
258
- scope = permission?.scope;
259
- }
260
- if (!scope) {
261
+ // The entitlement is the UNION of what the token grants and what the database grants.
262
+ //
263
+ // This used to branch on isM2M(): machine tokens took their scope from a `permissions` claim,
264
+ // users from the permissions collection. Classifying the caller was never the security
265
+ // question — the question is whether this token may perform this operation. A service account
266
+ // carries Keycloak realm roles named exactly like the scope strings; a user carries rows in
267
+ // `permissions`. Whoever holds the entitlement passes, and neither can borrow the other's path.
268
+ //
269
+ // No collision risk: Keycloak's default roles (default-roles-*, offline_access,
270
+ // uma_authorization) do not match the `<app>:<action>` shape these checks use.
271
+ const roles = tokenRoles(request.auth);
272
+ const permission = request.auth.sub
273
+ ? await MeService.getSinglePermission(request.auth.sub, request.params.company, request.params.project)
274
+ : undefined;
275
+ const scope = [...new Set([...roles, ...(permission?.scope ?? [])])];
276
+ if (!scope.length) {
261
277
  return reply.code(403).send();
262
278
  }
263
279
  const singlePermission = `${request.params.app}:storage${action.charAt(0).toUpperCase() + action.slice(1)}`;
@@ -1 +1 @@
1
- {"version":3,"file":"me.service.js","sourceRoot":"","sources":["../../../src/services/me.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"me.service.js","sourceRoot":"","sources":["../../../src/services/me.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lilaquadrat/studio",
3
- "version": "10.6.0",
3
+ "version": "10.7.0",
4
4
  "description": "classes and tools for STUDIO",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,24 +0,0 @@
1
- /**
2
- * Is this an authenticated machine-to-machine (service) token?
3
- *
4
- * Two issuers mint M2M tokens during the Auth0 → Keycloak migration:
5
- * - Auth0 marks a client_credentials token with `gty: 'client-credentials'`
6
- * (end-user tokens never carry it).
7
- * - Keycloak service accounts emit NO `gty`. Since end users stay on Auth0,
8
- * any token issued by the configured Keycloak realm is by definition M2M,
9
- * so we recognise it by its issuer.
10
- *
11
- * Both paths expect the caller's granted scopes in a `permissions` string[] claim
12
- * (for Keycloak, add a client "permissions" protocol mapper so the existing
13
- * scope-array logic keeps working unchanged).
14
- *
15
- * IMPORTANT: this helper must stay dependency-free. It is imported by
16
- * me.service (reachable from non-Fastify NATS workers via the package barrel).
17
- * It must NOT import authPlugin or anything that pulls in `fastify-plugin`, or
18
- * those workers crash at import time with ERR_MODULE_NOT_FOUND.
19
- */
20
- export declare const isM2M: (auth: {
21
- gty?: string;
22
- iss?: string;
23
- } | undefined) => boolean;
24
- export default isM2M;
@@ -1,30 +0,0 @@
1
- /**
2
- * Is this an authenticated machine-to-machine (service) token?
3
- *
4
- * Two issuers mint M2M tokens during the Auth0 → Keycloak migration:
5
- * - Auth0 marks a client_credentials token with `gty: 'client-credentials'`
6
- * (end-user tokens never carry it).
7
- * - Keycloak service accounts emit NO `gty`. Since end users stay on Auth0,
8
- * any token issued by the configured Keycloak realm is by definition M2M,
9
- * so we recognise it by its issuer.
10
- *
11
- * Both paths expect the caller's granted scopes in a `permissions` string[] claim
12
- * (for Keycloak, add a client "permissions" protocol mapper so the existing
13
- * scope-array logic keeps working unchanged).
14
- *
15
- * IMPORTANT: this helper must stay dependency-free. It is imported by
16
- * me.service (reachable from non-Fastify NATS workers via the package barrel).
17
- * It must NOT import authPlugin or anything that pulls in `fastify-plugin`, or
18
- * those workers crash at import time with ERR_MODULE_NOT_FOUND.
19
- */
20
- export const isM2M = (auth) => {
21
- if (!auth)
22
- return false;
23
- if (auth.gty === 'client-credentials')
24
- return true;
25
- if (process.env.KEYCLOAK_ISSUER && auth.iss === process.env.KEYCLOAK_ISSUER)
26
- return true;
27
- return false;
28
- };
29
- export default isM2M;
30
- //# sourceMappingURL=isM2M.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isM2M.js","sourceRoot":"","sources":["../../../src/helpers/isM2M.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,IAAgD,EAAW,EAAE;IAEjF,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,IAAI,IAAI,CAAC,GAAG,KAAK,oBAAoB;QAAE,OAAO,IAAI,CAAC;IAEnD,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAEzF,OAAO,KAAK,CAAC;AAEf,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC"}