@marxbiotech/signet-integration 0.1.0 → 0.1.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/README.md CHANGED
@@ -109,3 +109,21 @@ issues), `startJwksServer()`, `FIXTURE_OPTIONS` and `FIXTURE_DEVELOPMENT_PROFILE
109
109
  - `iat` is not required and no `maxTokenAge` is applied; `client_id` is required (RFC 9068 §2.2, Signet issues it always).
110
110
  - JWKS options are fixed: 3 s timeout, 30 s cooldown, 10 min cache.
111
111
  - The guard's decision log line is `metric reason <your logFields> clientId environment`; the fixed keys are reserved.
112
+
113
+ ## Development and release
114
+
115
+ ```sh
116
+ pnpm install
117
+ pnpm lint && pnpm typecheck && pnpm test && pnpm build
118
+ ```
119
+
120
+ Releases are cut by tag. Write the `CHANGELOG.md` entry, bump `version` in
121
+ `package.json` on `main`, then push the matching tag:
122
+
123
+ ```sh
124
+ git tag v0.1.2 && git push origin v0.1.2
125
+ ```
126
+
127
+ `.github/workflows/publish.yml` refuses a tag that does not equal
128
+ `v<package.json version>`, runs lint, tests and build, and publishes with npm
129
+ trusted publishing (OIDC). Nothing is published from a developer machine.
@@ -78,8 +78,8 @@ function resolveDeploymentProfile(options, input) {
78
78
  // obtain a profile it should not have: it throws here instead.
79
79
  //
80
80
  // A consumer that wants `profile.environment` typed as its own union
81
- // subclasses this and re-declares `profile` with the narrower type; the DI
82
- // token cannot carry the type parameter.
81
+ // subclasses this, re-declares `profile` with the narrower type and checks
82
+ // it in its constructor; the DI token cannot carry the type parameter.
83
83
  let SignetDeploymentProfileService = class SignetDeploymentProfileService {
84
84
  profile;
85
85
  constructor(configService, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"deployment-profile.js","sourceRoot":"","sources":["../src/deployment-profile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAqCA,4DAyDC;AA9FD,2CAAoD;AACpD,2CAA+C;AAE/C,uCAKmB;AA0BnB,uEAAuE;AACvE,mEAAmE;AACnE,4CAA4C;AAC5C,SAAgB,wBAAwB,CACtC,OAAoC,EACpC,KAA6B;IAE7B,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC/C,MAAM,EAAE,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,GACnE,OAAO,CAAC,GAAG,CAAC;IACd,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtD,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;YAC7B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,GAAG,YAAY,QAAQ,WAAW,6BAA6B;aACxE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE;gBACP,GAAG,OAAO,CAAC,kBAAkB;gBAC7B,WAAW,EAAE,iCAAuB;aACrC;SACF,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACtD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG,YAAY,QAAQ,WAAW,8BAA8B;SACzE,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GACT,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CACxC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG,YAAY,6EAA6E;SACrG,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;IACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,KAAK,gBAAgB,EAAE,CAAC;QAClC,sEAAsE;QACtE,oEAAoE;QACpE,iCAAiC;QACjC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,GAAG,WAAW,mBAAmB,YAAY,IAAI,SAAS,cAAc,gBAAgB,GAAG;SACpG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACP,iBAAiB,EAAE,gBAAgB;YACnC,WAAW;YACX,IAAI;YACJ,SAAS;SACV;KACF,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,sEAAsE;AACtE,8EAA8E;AAC9E,+DAA+D;AAC/D,EAAE;AACF,qEAAqE;AACrE,2EAA2E;AAC3E,yCAAyC;AAElC,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAChC,OAAO,CAA8B;IAE9C,YACE,aAA4B,EACQ,OAAiC;QAErE,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,EAAE;YACnD,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAS,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YAC5D,SAAS,EAAE,aAAa,CAAC,GAAG,CAAS,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YACrE,OAAO,EAAE,aAAa,CAAC,GAAG,CAAS,UAAU,CAAC;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACpC,CAAC;CACF,CAAA;AAjBY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,oCAA0B,CAAC,CAAA;qCADpB,sBAAa;GAJnB,8BAA8B,CAiB1C"}
1
+ {"version":3,"file":"deployment-profile.js","sourceRoot":"","sources":["../src/deployment-profile.ts"],"names":[],"mappings":"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"}
package/dist/guard.js CHANGED
@@ -63,6 +63,7 @@ function requirePrincipalResolver() {
63
63
  // resolver throws PrincipalStoreUnavailableError → 503, fail closed
64
64
  // resolver throws an HttpException → its own status
65
65
  // resolver throws anything else → 500, the error under its own name
66
+ // resolver logFields reuses a fixed key → 500, resolver_contract_error
66
67
  // Passport passed but attached no user → 500, programming error
67
68
  //
68
69
  // None of these are 401: the token was valid. The 403 messages distinguish
@@ -151,8 +152,10 @@ let SignetBearerGuard = class SignetBearerGuard extends (0, passport_1.AuthGuard
151
152
  throw new common_1.ForbiddenException(this.signetOptions.principalRefusalMessage ??
152
153
  'this identity holds no authorization in this service');
153
154
  }
154
- this.logDecision('authorized', identity.clientId, environment, resolution);
155
+ // Attached before the decision line: an assignment that throws must not
156
+ // leave an "authorized" line behind.
155
157
  request[this.signetOptions.requestPrincipalKey] = resolution.principal;
158
+ this.logDecision('authorized', identity.clientId, environment, resolution);
156
159
  return true;
157
160
  }
158
161
  // The one rendering of this guard's authorization DECISION: the line that
@@ -171,8 +174,9 @@ let SignetBearerGuard = class SignetBearerGuard extends (0, passport_1.AuthGuard
171
174
  const consumerFields = Object.entries(resolution.logFields ?? {});
172
175
  for (const [key] of consumerFields) {
173
176
  if (RESERVED_LOG_KEYS.has(key)) {
174
- // A programming error in the resolver, not a decision: surfaces as
175
- // a 500 under its own name rather than a forged log line.
177
+ // A programming error in the resolver, not a decision: one alertable
178
+ // line, then a 500 under its own name rather than a forged log line.
179
+ this.logFailure('resolver logFields invalid', 'resolver_contract_error', 'Error');
176
180
  throw new Error(`resolver logFields must not use the reserved key ${key}`);
177
181
  }
178
182
  }
package/dist/guard.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,11 @@ function createScopeVocabulary(input) {
16
16
  if (actionByScope.size !== new Set(input.actions).size) {
17
17
  throw new Error('scope vocabulary: tokenScopeFor must map actions to distinct scopes');
18
18
  }
19
+ for (const scope of actionByScope.keys()) {
20
+ if (scope === '' || /[\s"\\]/.test(scope)) {
21
+ throw new Error(`scope vocabulary: ${JSON.stringify(scope)} is not a scope token (no space, quote or backslash)`);
22
+ }
23
+ }
19
24
  if (actionByScope.has(input.admissionScope)) {
20
25
  throw new Error(`scope vocabulary: an action is spelled as the admission scope ${input.admissionScope}`);
21
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scope-vocabulary.js","sourceRoot":"","sources":["../src/scope-vocabulary.ts"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;;AAkDzE,sDAoDC;AApDD,SAAgB,qBAAqB,CACnC,KAA8B;IAE9B,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,MAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,aAAa,GAA2B,IAAI,GAAG,CACnD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAC/D,CAAC;IACF,sEAAsE;IACtE,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,iBAAiB;IACjB,IAAI,aAAa,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,iEAAiE,KAAK,CAAC,cAAc,EAAE,CACxF,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,aAAa;QACb,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAK,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3C,CAAC;QACD,eAAe,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,eAAe,EAAE;YACf,KAAK,CAAC,cAAc;YACpB,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;SACpC;QACD,aAAa;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"scope-vocabulary.js","sourceRoot":"","sources":["../src/scope-vocabulary.ts"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,yEAAyE;AACzE,yEAAyE;;AAkDzE,sDA2DC;AA3DD,SAAgB,qBAAqB,CACnC,KAA8B;IAE9B,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,MAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,aAAa,GAA2B,IAAI,GAAG,CACnD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAC/D,CAAC;IACF,sEAAsE;IACtE,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,iBAAiB;IACjB,IAAI,aAAa,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,KAAK,KAAK,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,sDAAsD,CACjG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,iEAAiE,KAAK,CAAC,cAAc,EAAE,CACxF,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,aAAa;QACb,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAK,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3C,CAAC;QACD,eAAe,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,eAAe,EAAE;YACf,KAAK,CAAC,cAAc;YACpB,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;SACpC;QACD,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -4,8 +4,9 @@ exports.FIXTURE_DEVELOPMENT_PROFILE = exports.FIXTURE_OPTIONS = void 0;
4
4
  // A complete options object for a fictional second service, for tests of
5
5
  // the mechanism and for consumers' tests that need "some other service".
6
6
  // Its canonical resource keeps a PATH (`/mcp`) so every derived path and URL
7
- // differs from a bare-origin consumer's; a test that needs the bare-origin
8
- // shape spreads over it with `canonicalResourceFor: (h) => \`https://${h}\``.
7
+ // differs from a bare-origin consumer's. A test that needs the bare-origin
8
+ // shape overrides `canonicalResourceFor` AND `developmentProfile.canonicalResource`
9
+ // together; the options validation refuses profiles whose paths differ.
9
10
  exports.FIXTURE_OPTIONS = {
10
11
  admissionScope: 'acme:access',
11
12
  canonicalResourceFor: (host) => `https://${host}/mcp`,
@@ -1 +1 @@
1
- {"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../src/testing/fixture.ts"],"names":[],"mappings":";;;AAEA,yEAAyE;AACzE,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,8EAA8E;AACjE,QAAA,eAAe,GAExB;IACF,cAAc,EAAE,aAAa;IAC7B,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,MAAM;IACrD,gBAAgB,EAAE;QAChB,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE;QAClE,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,cAAc,EAAE;KACrE;IACD,kBAAkB,EAAE;QAClB,iBAAiB,EAAE,sBAAsB;QACzC,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,aAAa;KACzB;IACD,GAAG,EAAE;QACH,mBAAmB,EAAE,2BAA2B;QAChD,WAAW,EAAE,mBAAmB;QAChC,kBAAkB,EAAE,4BAA4B;QAChD,SAAS,EAAE,iBAAiB;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,mBAAmB,EAAE,qBAAqB;QAC1C,aAAa,EAAE,qBAAqB;KACrC;IACD,KAAK,EAAE,MAAM;IACb,mBAAmB,EAAE,WAAW;IAChC,eAAe,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,eAAe,CAAC;CAClE,CAAC;AAEW,QAAA,2BAA2B,GAAG;IACzC,GAAG,uBAAe,CAAC,kBAAkB;IACrC,WAAW,EAAE,aAAsB;CACpC,CAAC"}
1
+ {"version":3,"file":"fixture.js","sourceRoot":"","sources":["../../src/testing/fixture.ts"],"names":[],"mappings":";;;AAEA,yEAAyE;AACzE,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,oFAAoF;AACpF,wEAAwE;AAC3D,QAAA,eAAe,GAExB;IACF,cAAc,EAAE,aAAa;IAC7B,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,IAAI,MAAM;IACrD,gBAAgB,EAAE;QAChB,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE;QAClE,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,cAAc,EAAE;KACrE;IACD,kBAAkB,EAAE;QAClB,iBAAiB,EAAE,sBAAsB;QACzC,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,aAAa;KACzB;IACD,GAAG,EAAE;QACH,mBAAmB,EAAE,2BAA2B;QAChD,WAAW,EAAE,mBAAmB;QAChC,kBAAkB,EAAE,4BAA4B;QAChD,SAAS,EAAE,iBAAiB;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,mBAAmB,EAAE,qBAAqB;QAC1C,aAAa,EAAE,qBAAqB;KACrC;IACD,KAAK,EAAE,MAAM;IACb,mBAAmB,EAAE,WAAW;IAChC,eAAe,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,eAAe,CAAC;CAClE,CAAC;AAEW,QAAA,2BAA2B,GAAG;IACzC,GAAG,uBAAe,CAAC,kBAAkB;IACrC,WAAW,EAAE,aAAsB;CACpC,CAAC"}
@@ -8,9 +8,12 @@ const options_1 = require("./options");
8
8
  */
9
9
  const RESERVED_REQUEST_KEYS = new Set([
10
10
  'app',
11
+ 'baseUrl',
11
12
  'body',
12
13
  'cookies',
14
+ 'fresh',
13
15
  'headers',
16
+ 'host',
14
17
  'hostname',
15
18
  'ip',
16
19
  'ips',
@@ -23,9 +26,20 @@ const RESERVED_REQUEST_KEYS = new Set([
23
26
  'rawHeaders',
24
27
  'res',
25
28
  'route',
29
+ 'secure',
30
+ 'session',
26
31
  'signedCookies',
32
+ 'socket',
33
+ 'stale',
34
+ 'subdomains',
27
35
  'url',
36
+ 'xhr',
28
37
  ]);
38
+ /**
39
+ * A scope token as RFC 6749 §3.3 spells it: no space (the list separator)
40
+ * and nothing that breaks out of the quoted `scope="…"` parameter.
41
+ */
42
+ const SCOPE_BREAKERS = /[\s"\\]/;
29
43
  /**
30
44
  * Characters that would break out of the quoted value in a
31
45
  * `WWW-Authenticate` parameter (RFC 7235 quoted-string).
@@ -51,6 +65,14 @@ function validateSignetIntegrationOptions(options) {
51
65
  if (!options.scopesSupported.includes(options.admissionScope)) {
52
66
  fail(`scopesSupported must include the admission scope ${options.admissionScope}`);
53
67
  }
68
+ for (const scope of options.scopesSupported) {
69
+ if (scope === '' || SCOPE_BREAKERS.test(scope)) {
70
+ fail(`scopesSupported entry ${JSON.stringify(scope)} is not a scope token (no space, quote or backslash)`);
71
+ }
72
+ }
73
+ if (options.requestPrincipalKey === '') {
74
+ fail('requestPrincipalKey must be non-empty');
75
+ }
54
76
  if (RESERVED_REQUEST_KEYS.has(options.requestPrincipalKey)) {
55
77
  fail(`requestPrincipalKey ${options.requestPrincipalKey} is a request property Express or Nest already uses`);
56
78
  }
@@ -70,7 +92,13 @@ function validateSignetIntegrationOptions(options) {
70
92
  // same path with no query or fragment: the metadata route is mounted once,
71
93
  // on that path, and the challenge points at it.
72
94
  const resourcePath = (resource, label) => {
73
- const url = new URL(resource);
95
+ let url;
96
+ try {
97
+ url = new URL(resource);
98
+ }
99
+ catch {
100
+ return fail(`${label} is not a URL: ${resource}`);
101
+ }
74
102
  if (url.search !== '' || url.hash !== '') {
75
103
  fail(`${label} must not carry a query or fragment: ${resource}`);
76
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate-options.js","sourceRoot":"","sources":["../src/validate-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-options.js","sourceRoot":"","sources":["../src/validate-options.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@marxbiotech/signet-integration",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Signet (OAuth 2.1 / OIDC) resource-server integration for NestJS: Bearer verification, RFC 6750 challenges, RFC 9728 metadata, deployment profile.",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/marxbiotech/ordersync-marxbio-tech.git",
9
- "directory": "packages/signet-integration"
8
+ "url": "git+https://github.com/marxbiobuilder/signet-integration.git"
10
9
  },
11
10
  "publishConfig": {
12
11
  "access": "public",
13
12
  "registry": "https://registry.npmjs.org"
14
13
  },
14
+ "packageManager": "pnpm@9.1.1",
15
15
  "main": "dist/index.js",
16
16
  "types": "dist/index.d.ts",
17
17
  "exports": {