@frontmcp/auth 1.8.2 → 1.8.4

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.
Files changed (50) hide show
  1. package/authorities/authorities.engine.d.ts +25 -2
  2. package/authorities/authorities.engine.d.ts.map +1 -1
  3. package/authorities/authorities.validation.d.ts +27 -0
  4. package/authorities/authorities.validation.d.ts.map +1 -0
  5. package/authorities/index.d.ts +1 -0
  6. package/authorities/index.d.ts.map +1 -1
  7. package/authorization/dcr-client.registry.d.ts +13 -0
  8. package/authorization/dcr-client.registry.d.ts.map +1 -1
  9. package/esm/index.mjs +530 -91
  10. package/esm/package.json +5 -5
  11. package/index.d.ts +4 -4
  12. package/index.d.ts.map +1 -1
  13. package/index.js +615 -166
  14. package/jwks/jwks.service.d.ts +4 -1
  15. package/jwks/jwks.service.d.ts.map +1 -1
  16. package/options/app-auth.schema.d.ts +4 -0
  17. package/options/app-auth.schema.d.ts.map +1 -1
  18. package/options/interfaces.d.ts +48 -7
  19. package/options/interfaces.d.ts.map +1 -1
  20. package/options/orchestrated.schema.d.ts +8 -0
  21. package/options/orchestrated.schema.d.ts.map +1 -1
  22. package/options/schema.d.ts +4 -0
  23. package/options/schema.d.ts.map +1 -1
  24. package/options/shared.schemas.d.ts +2 -0
  25. package/options/shared.schemas.d.ts.map +1 -1
  26. package/package.json +5 -5
  27. package/session/authorization.store.d.ts +19 -3
  28. package/session/authorization.store.d.ts.map +1 -1
  29. package/session/federated-auth.session.d.ts +16 -0
  30. package/session/federated-auth.session.d.ts.map +1 -1
  31. package/session/index.d.ts +4 -0
  32. package/session/index.d.ts.map +1 -1
  33. package/session/pending-login.d.ts +23 -0
  34. package/session/pending-login.d.ts.map +1 -0
  35. package/session/signin-binding.d.ts +39 -0
  36. package/session/signin-binding.d.ts.map +1 -0
  37. package/ui/base-layout.d.ts +26 -0
  38. package/ui/base-layout.d.ts.map +1 -1
  39. package/ui/index.d.ts +2 -2
  40. package/ui/index.d.ts.map +1 -1
  41. package/ui/local-login.helper.d.ts +9 -2
  42. package/ui/local-login.helper.d.ts.map +1 -1
  43. package/ui/templates.d.ts +5 -4
  44. package/ui/templates.d.ts.map +1 -1
  45. package/utils/index.d.ts +2 -0
  46. package/utils/index.d.ts.map +1 -1
  47. package/utils/redirect-uri.utils.d.ts +16 -0
  48. package/utils/redirect-uri.utils.d.ts.map +1 -0
  49. package/utils/scope-grant.utils.d.ts +21 -0
  50. package/utils/scope-grant.utils.d.ts.map +1 -0
@@ -5,7 +5,7 @@
5
5
  * built-in evaluators, custom evaluators, and combinators.
6
6
  */
7
7
  import type { AuthoritiesEvaluatorRegistry, AuthoritiesProfileRegistry } from './authorities.registry';
8
- import type { AuthoritiesEvaluationContext, AuthoritiesMetadata, AuthoritiesResult } from './authorities.types';
8
+ import type { AuthoritiesEvaluationContext, AuthoritiesMetadata, AuthoritiesPolicyMetadata, AuthoritiesResult } from './authorities.types';
9
9
  /**
10
10
  * The main evaluation engine.
11
11
  *
@@ -19,15 +19,32 @@ import type { AuthoritiesEvaluationContext, AuthoritiesMetadata, AuthoritiesResu
19
19
  export declare class AuthoritiesEngine {
20
20
  private readonly profiles;
21
21
  private readonly evaluators;
22
+ /** Problems found per rule object, so a rule is validated once however often it is evaluated. */
23
+ private readonly ruleProblems;
22
24
  constructor(profiles: AuthoritiesProfileRegistry, evaluators: AuthoritiesEvaluatorRegistry);
25
+ /**
26
+ * Problems with an `authorities` value declared on an entry (see {@link findAuthoritiesRuleProblems}),
27
+ * and each profile name it uses that no registered profile has. The server reports them when it
28
+ * starts; {@link evaluate} denies such a value (an unknown profile as `profile '…' is not registered`).
29
+ */
30
+ findRuleProblems(authorities: unknown): string[];
31
+ /**
32
+ * Problems with every registered profile's rule (see {@link findAuthoritiesRuleProblems}).
33
+ * The server reports them when it starts.
34
+ */
35
+ findProfileProblems(): string[];
23
36
  /**
24
37
  * Evaluate an AuthoritiesMetadata value (string, string[], or policy object).
38
+ *
39
+ * A value that is malformed or checks nothing (see {@link findAuthoritiesRuleProblems}) is denied.
25
40
  */
26
41
  evaluate(authorities: AuthoritiesMetadata, ctx: AuthoritiesEvaluationContext): Promise<AuthoritiesResult>;
27
42
  /**
28
43
  * Resolve and evaluate a single named profile.
29
44
  */
30
45
  private evaluateProfile;
46
+ /** Validate a rule, reusing the result for a rule object seen before. */
47
+ private problemsOf;
31
48
  /**
32
49
  * Evaluate an array of profile names (AND semantics).
33
50
  */
@@ -46,7 +63,8 @@ export declare class AuthoritiesEngine {
46
63
  private evaluateCustom;
47
64
  /**
48
65
  * Evaluate async guard functions in sequence.
49
- * Each guard returns true (granted) or a string (denial message).
66
+ * Only `true` grants. A string is the denial message; anything else (`false`, but also
67
+ * `undefined` from a guard that forgot to return, `null`, `0` or an object) denies.
50
68
  */
51
69
  private evaluateGuards;
52
70
  /**
@@ -61,5 +79,10 @@ export declare class AuthoritiesEngine {
61
79
  * not combinator — inverts the nested policy result.
62
80
  */
63
81
  private evaluateNot;
82
+ /**
83
+ * The policy a profile name stands for when `evaluate()` is given that name, or `undefined`
84
+ * when no such profile is registered. Lets callers inspect a named rule without evaluating it.
85
+ */
86
+ resolveProfile(name: string): AuthoritiesPolicyMetadata | undefined;
64
87
  }
65
88
  //# sourceMappingURL=authorities.engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.engine.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,KAAK,EACV,4BAA4B,EAC5B,mBAAmB,EAEnB,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAoB7B;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,QAAQ,EAAE,0BAA0B,EACpC,UAAU,EAAE,4BAA4B;IAG3D;;OAEG;IACG,QAAQ,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAe/G;;OAEG;YACW,eAAe;IAsB7B;;OAEG;YACW,oBAAoB;IAclC;;OAEG;YACW,cAAc;IA+C5B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;YACW,cAAc;IA2B5B;;;OAGG;YACW,cAAc;IAoB5B;;OAEG;YACW,aAAa;IAiB3B;;OAEG;YACW,aAAa;IAwB3B;;OAEG;YACW,WAAW;CAa1B"}
1
+ {"version":3,"file":"authorities.engine.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,KAAK,EACV,4BAA4B,EAC5B,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AA0B7B;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,iGAAiG;IACjG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;gBAG7C,QAAQ,EAAE,0BAA0B,EACpC,UAAU,EAAE,4BAA4B;IAG3D;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE;IAShD;;;OAGG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAM/B;;;;OAIG;IACG,QAAQ,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkB/G;;OAEG;YACW,eAAe;IAyB7B,yEAAyE;IACzE,OAAO,CAAC,UAAU;IAUlB;;OAEG;YACW,oBAAoB;IAclC;;OAEG;YACW,cAAc;IA+C5B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;YACW,cAAc;IA2B5B;;;;OAIG;YACW,cAAc;IAyB5B;;OAEG;YACW,aAAa;IAiB3B;;OAEG;YACW,aAAa;IAwB3B;;OAEG;YACW,WAAW;IAczB;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS;CAGpE"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Structural validation for authorities rules.
3
+ *
4
+ * The engine evaluates only the fields it knows, so a rule that names no known check
5
+ * (`{}`, `{ roles: {} }`, `allOf: []`, a misspelled `role:`) used to grant everyone.
6
+ * These helpers find such rules so the server can refuse them when it starts, and the
7
+ * engine can deny them when they are evaluated anyway.
8
+ */
9
+ /**
10
+ * Find what is wrong with an `authorities` value: a profile name, a list of profile names,
11
+ * or a rule object. Returns an empty list when the value checks something everywhere.
12
+ *
13
+ * A rule object must name at least one check (roles, permissions, attributes, relationships,
14
+ * custom, guards, allOf, anyOf or not), use only known fields, and leave no check empty;
15
+ * combinators hold rule objects, not profile names.
16
+ *
17
+ * @example
18
+ * findAuthoritiesRuleProblems({ role: { any: ['admin'] } });
19
+ * // ['has an unknown field "role"', 'checks nothing']
20
+ */
21
+ export declare function findAuthoritiesRuleProblems(authorities: unknown): string[];
22
+ /**
23
+ * Same as {@link findAuthoritiesRuleProblems}, for a named profile's rule. Problems read
24
+ * `profile "<name>": <problem>`.
25
+ */
26
+ export declare function findAuthoritiesProfileProblems(name: string, policy: unknown): string[];
27
+ //# sourceMappingURL=authorities.validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorities.validation.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgPH;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,CAY1E;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAEtF"}
@@ -10,6 +10,7 @@ export type { AuthoritiesClaimsMapping, AuthoritiesConfig, AuthoritiesScopeMappi
10
10
  export { resolveRequiredScopes } from './authorities.scope-mapping';
11
11
  export { rbacRolesPolicySchema, rbacPermissionsPolicySchema, abacOperatorSchema, abacConditionSchema, abacPolicySchema, resourceIdRefSchema, rebacPolicySchema, authoritiesPolicySchema, authoritiesMetadataSchema, authoritiesClaimsMappingSchema, authoritiesConfigSchema, } from './authorities.schema';
12
12
  export { AuthoritiesEngine } from './authorities.engine';
13
+ export { findAuthoritiesRuleProblems, findAuthoritiesProfileProblems } from './authorities.validation';
13
14
  export { AuthoritiesContextBuilder, isAnonymousSubject } from './authorities.context';
14
15
  export type { ClaimsResolverFn } from './authorities.context';
15
16
  export { AuthoritiesEvaluatorRegistry, AuthoritiesProfileRegistry } from './authorities.registry';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authorities/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,gCAAgC,CAAC;AAGxC,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGnH,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACtF,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAGlG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authorities/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,gCAAgC,CAAC;AAGxC,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,WAAW,EACX,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGnH,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAGvG,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACtF,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAGlG,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -49,6 +49,19 @@ export interface DcrRegistryConfig {
49
49
  */
50
50
  maxDynamicClients?: number;
51
51
  }
52
+ /**
53
+ * Match `input` against a simple glob where `*` = any run of characters and
54
+ * every other character is matched literally (so a plain string with no `*` is
55
+ * an exact match). Full-string match. Used per-URI-COMPONENT by
56
+ * {@link globMatchRedirectUri} — on its own a `*` here still crosses any
57
+ * character, so it must only ever be applied within a single component.
58
+ *
59
+ * Implemented as a linear two-pointer scan (the classic wildcard-match
60
+ * algorithm) rather than compiling to a RegExp — this avoids the regex engine's
61
+ * backtracking entirely (no `.*.*` ReDoS surface) on the attacker-supplied
62
+ * `redirect_uri` we test allowlist patterns against.
63
+ */
64
+ export declare function globMatch(pattern: string, input: string): boolean;
52
65
  /**
53
66
  * Local-AS DCR client registry. Seeded from `dcr.clients` at construction and
54
67
  * mutated by `POST /oauth/register` at runtime.
@@ -1 +1 @@
1
- {"version":3,"file":"dcr-client.registry.d.ts","sourceRoot":"","sources":["../../src/authorization/dcr-client.registry.ts"],"names":[],"mappings":"AAgBA,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B,EACtB,MAAM,GACN,qBAAqB,GACrB,oBAAoB,GACpB,iBAAiB,GACjB,iBAAiB,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,GAAG,EAAE,OAAO,CAAC;IACb,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;IAChF,UAAU,CAAC,EAAE,KAAK,CAAC,oBAAoB,GAAG,eAAe,CAAC,CAAC;IAC3D,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACrC;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAoHD;;;GAGG;AACH,qBAAa,iBAAiB;IAKhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAExB,MAAM,GAAE,iBAAsB;IAK3D,+EAA+E;IAC/E,OAAO,CAAC,wBAAwB;IAoBhC,yEAAyE;IACzE,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAInD;;;;;;;;;;;;;;;OAeG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS;IAcvG,oDAAoD;IACpD,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAY3C,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,mBAAmB;IAM3B,sDAAsD;IACtD,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAOlD,mDAAmD;IACnD,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAQ5C,wEAAwE;IACxE,0BAA0B,IAAI,OAAO;IAIrC;;;;OAIG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;CAajE"}
1
+ {"version":3,"file":"dcr-client.registry.d.ts","sourceRoot":"","sources":["../../src/authorization/dcr-client.registry.ts"],"names":[],"mappings":"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"}