@rodit/rodit-auth-be 9.12.0 → 9.13.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
2
2
 
3
3
  All notable changes to `@rodit/rodit-auth-be` are documented here.
4
4
 
5
+ ## [9.13.0] — 2026-07-15
6
+
7
+ ### Added
8
+
9
+ - **Federated login across APIs in the same SR/CR family.** A client RODiT
10
+ issued for API A can log into API B via
11
+ `login_server({ apiEndpoint: '<federated URL>' })`. Mutual auth remains
12
+ optional; federation is login → remint a local JWT (foreign JWTs are not
13
+ accepted without re-login).
14
+ - **JWT claim `rodit_subjectuniqueidentifier_url` (always present).** Same
15
+ unset-as-`null` rule as `config_*` in 9.12:
16
+ - Same-API login: claim is `null`; `iss` = receiving server URL
17
+ - Federated login: claim = federated API URL; `iss` = client home
18
+ `subjectuniqueidentifier_url`
19
+ - Server validation treats non-empty claim strings as federated JWTs
20
+ (`isNonEmptyUrlClaim`); renewal always copies/normalizes to `null` or the
21
+ URL (9.12 tokens without the claim renew into `null`)
22
+ - **Client MITM check.** After crypto validation, `login_server` verifies that
23
+ a federated JWT's `rodit_subjectuniqueidentifier_url` matches the intended
24
+ `apiEndpoint` and that `iss` matches the client home URL. Failures:
25
+ `FEDERATED_ISSUER_MISSING`, `FEDERATED_ISSUER_MISMATCH`.
26
+ - **Exported helpers:** `normalizeUrlWithoutPort`, `isNonEmptyUrlClaim`,
27
+ `isFederatedRoditLogin`, `validateFederatedLoginTarget`.
28
+
5
29
  ## [9.12.0] — 2026-07-02
6
30
 
7
31
  ### Fixed