Skip to Content
MuoCeon Docs
v1auth context

Identity assertion

POST /v1/auth/assertion — a 17-second, single-use assertion bound to the session, used by the consent UI.

The identity assertion is how the consent UI tells the oauth context "this request really comes from this session". It is a signed JWE, not a token: it grants no access on its own, it only carries a proven identity across to another endpoint.

Request

POST /v1/auth/assertion, session token, no body.

{ "success": true, "assertion": "eyJ...", "expires_in": 17 }

Properties

PropertyValueWhy
Lifetime17 secondsEnough for the consent page to hand it over, far too short to be useful if leaked
Single useConsumed on first verificationA replayed assertion would mean a second authorization for one consent click
Session-boundContains the session id and subjectThe oauth side can tell which session and account the assertion belongs to
EncryptedJWEThe payload is not readable by the browser or any intermediary

Why not just pass the session token

The session token is audience auth. Handing it to the oauth context would either require relaxing the audience check — which removes the boundary between contexts — or be rejected. The assertion is a narrowly scoped carrier: it proves identity to exactly the endpoints that accept it, and expires before it can be reused elsewhere.

Rules

RuleNotes
Issued per actionRequest a fresh one for each consent submission; do not cache
Consumed by the receiverpreauthorize and authorize each consume it; one assertion cannot serve both
No max_age requirementThe session is already authenticated; the assertion records the identity, not a fresh verification

On this page