Repository navigation
Commit bbf90d4
committed
feat(rstack): generate hosted ThunderID configuration from product identity facts
- `rstack identity generate thunderid` writes hosted ThunderID configuration from each product's own identity facts plus one operator deployment file. `rstack identity check` checks either document offline.
- `bregctl`, `caseworkctl`, `evidencectl` and `messagingctl` each gain `generate identity-facts`, which writes a `registry.identity-facts/v1` document from that product's own configuration.
- Two new platform formats, `registry.identity-facts/v1` and `registry.identity-deployment/v1`, with generated JSON Schemas in `products/platform/schemas`, examples, and editor mappings.
- `caseworkctl generate identity-facts` marks the profiles Casework admits only for a person as requiring a human actor, and refuses a customised human-identity claim; `bregctl` refuses a renamed purpose claim; `evidencectl` refuses a renamed actor-kind, purpose, approver or grant claim, and two task authorities whose issuers derive one assertion issuer id. Hosted generation does not support either.
- Each access profile in the identity facts states the actor kind its product pins (`actorKind`) and lists the claims its product refuses a token without (`requiredClaims`). Generation and `rstack identity check` refuse a machine client or user granted the profile without them, and a browser application that does not project them. On a profile reached by token exchange, `actorKind` applies to the client's own token.
- An explicit actor kind on a client, user or selector must be one the runtimes parse (`human`, `agent` or `service`), whatever the profile states.
- Access profiles may state the actor kinds they admit (`admittedActorKinds`) and the claims that refuse them (`refusedClaims`). Evidence states both, so generation refuses an agent on a standing profile and a principal carrying the actor claim on a profile that is not delegated.
- BReg facts state Action and Proposal profiles and the claims verified-claim lookups read, and `bregctl` refuses a row boundary on a boolean or integer field.
- Every set list in both identity formats refuses a repeated item.
- Release manifests pin external images with an explicit `kind: image-pin`. Every release after 0.45.0 must carry the ThunderID pin.
- The operator guide adds a page: Generate identity configuration.
- Remove the retired Notary config schema (`schemas/registry-notary.config.schema.json`); no gate or product reads it.
BREAKING CHANGE: identity generation derives every principal `sub` from the issuer, in a separate namespace per kind. Every `sub` changes once when a deployment moves to the generator. Update stored `sub` values, token mappings and scope references from `identity-receipt.json`. There is no compatibility shim.
BREAKING CHANGE: `registry-thunderid-tooling` refuses a machine-client JWKS that carries private or symmetric key members, in development mode too.
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>1 parent 588654c commit bbf90d4
122 files changed
Lines changed: 17261 additions & 3613 deletions
File tree
- .github
- scripts
- workflows
- crates
- registry-bregctl
- src
- dev
- tests
- registry-breg/src
- registry-caseworkctl
- src
- dev
- tests/fixtures/identity
- registry-casework
- registry-cli-docs
- src
- registry-evidence-client
- registry-evidence-oid4vci
- registry-evidencectl
- src
- tests
- fixtures/identity
- registry-evidence/src
- registry-messagingctl
- src
- dev
- tests
- registry-platform-config/src
- registry-rstack
- src
- tests
- fixtures/identity
- registry-thunderid-tooling
- examples
- fixtures/identity
- expected
- registry-schema
- agents
- resources
- keys
- src
- docs/site
- scripts
- src/content/docs/operate/advanced
- editors
- tests
- products
- breg
- casework
- contracts/cli
- evidence
- identifiers
- contracts
- generated
- identity/thunderid/fixtures/synthetic-session/registry-schema/agents
- messaging
- platform
- examples/identity
- keys
- schemas
- scripts
- release
- scripts
- schemas
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
| 199 | + | |
199 | 200 | | |
200 | 201 | | |
201 | 202 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
899 | 899 | | |
900 | 900 | | |
901 | 901 | | |
| 902 | + | |
| 903 | + | |
902 | 904 | | |
903 | | - | |
| 905 | + | |
| 906 | + | |
904 | 907 | | |
905 | 908 | | |
906 | 909 | | |
| |||
2244 | 2247 | | |
2245 | 2248 | | |
2246 | 2249 | | |
| 2250 | + | |
2247 | 2251 | | |
2248 | 2252 | | |
2249 | 2253 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
379 | 379 | | |
380 | 380 | | |
381 | 381 | | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
382 | 388 | | |
383 | 389 | | |
384 | 390 | | |
| |||
1991 | 1997 | | |
1992 | 1998 | | |
1993 | 1999 | | |
| 2000 | + | |
| 2001 | + | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
| 2005 | + | |
1994 | 2006 | | |
1995 | 2007 | | |
1996 | 2008 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
69 | 87 | | |
70 | 88 | | |
71 | 89 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2177 | 2177 | | |
2178 | 2178 | | |
2179 | 2179 | | |
2180 | | - | |
2181 | | - | |
2182 | | - | |
2183 | | - | |
2184 | | - | |
2185 | | - | |
2186 | | - | |
2187 | | - | |
2188 | | - | |
2189 | | - | |
2190 | | - | |
2191 | | - | |
2192 | | - | |
2193 | | - | |
2194 | | - | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
2195 | 2183 | | |
2196 | | - | |
2197 | | - | |
| 2184 | + | |
| 2185 | + | |
2198 | 2186 | | |
2199 | 2187 | | |
2200 | 2188 | | |
| |||
0 commit comments