cx-platform-identity
sessions, did:web, authz-store, vc-revocation
Why reach for it
Who is asking, as a value. cx-platform-identity turns a
verified token into a session bound to a principal and a tenant,
maps claims to that principal deterministically, resolves did:web
identifiers, keeps authorization rows in the store and answers
whether a credential has been revoked.
A session is attached from a token checked against the issuer's keys,
and every question about it is answered as a value: an unattached
request, an unknown session id, an unknown client are all absence you
can ask about with [?else], never an exception. The claim mapping is
pure — the same claims map to the same principal every time — so a
policy written against a principal can be tested without a token in
hand.
The rest of the repository is the identity fabric around the session:
did:web resolution refuses to reach the network until it is granted
and refuses a self-describing document; the authorization store keeps
grants as rows the engine can query and replay; credential revocation
is an append to a journal and a fold over one — a fact that outlives
the process and is visible to a second party. The single sign-on
protocols themselves live one repository over, in the sso module.
What it gives you
Four modules of the platform group: the session layer, the
authorization store, did:web resolution and credential revocation.
Each links to its reference page, projected from the module's own
documentation.
| module | import it as | where it lives | reference |
|---|---|---|---|
authz-store
|
[?lib 'cx-platform/authz-store']
|
Ring 1 · the platform group | authz-store reference |
did-web
|
[?lib 'cx-platform/did-web']
|
Ring 1 · the platform group | did-web reference |
session
|
[?lib 'cx-platform/session']
|
Ring 1 · the platform group | session reference |
vc-revocation
|
[?lib 'cx-platform/vc-revocation']
|
Ring 1 · the platform group | vc-revocation reference |
Try it
A claims document mapped to a principal with no session in hand — the
tenant from tid, the identity from sub, and the same answer every
time it is asked.
prog.cx
[?lib 'cx-platform/session']
[$session:map-claims [claims tid="acme" sub="dana"] {}]
$ cx prog.cx
[principal id=dana [tenant id=acme]]
Fixture session-005-map-claims-pure in deps/cx-platform-identity/conformance/platform/session.cxd — replayed against this cx when the page was built.
Status
The identity repository builds on the store, the wire and the session layer, and the application host builds on it; the front door compiles its V module from the pin.
| fact | as the registry records it |
|---|---|
| ships as |
binary
|
| status | extracted |
| pinned at |
952cd692e
|
| builds on | cx-platform-store, cx-platform-net, cx-platform-xsp |
| built on by | cx-platform-fabric, cx-platform-xap, cx-platform-sso |
| bundled modules | 4 |
cx-platform-identity plugs into: the repositories it builds on (left), the modules it ships (centre), the repositories that build on it (right) · drawn from registry/repos.cxd, deps.cxd and registry/modules.cxd when this page was builtLinks
- github.com/cx-home/cx-platform-identity — the repository
- README — what it is, how to install it, what it pins
-
spec/03-approved— the specification, the only truth -
spec/03-approved/platform— the specification, the only truth -
conformance— the conformance corpus, the executable truth -
conformance/platform— the conformance corpus, the executable truth