AAuth Explorer
accessPhase 3

PS Authorization Access (3-party)

The resource has no access server. The agent first obtains a person token from its PS, presents it at the resource's authorization endpoint, and gets back a resource token whose aud is the PS URL. The PS resolves the person token the resource token names, applies the person's consent, and issues the auth token itself. The auth token's iss is the PS, and the resource applies its own policy to the claims it asserts.

§ PS Authorization Access (Three-Party)
AgentResourcePerson Server1POST /person {resource} → 2…2002POST /authorize with the pe…3POST resource token to PS /…4Present auth token → 200
POST https://ps.example/person200

The agent signs with its agent token and names the resource it wants a person token for. resource is REQUIRED and becomes the token's aud.

The PS issues aa-person+jwt with a directed sub for that resource and cnf.jwk bound to the agent's signing key.

A person token carries no scope and no account — it identifies the person, it does not authorize anything.

The PS MAY require the person's approval first and return 202 with requirement=interaction.

1 / 4
speed

Step 1: POST /person {resource} → 200 person_token

Request / response
POSThttps://ps.example/person
Host

ps.example

Content-Type?

application/json

Content-Digest

sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:

Signature-KeyAAuth?

sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQ…

Signature-InputAAuth?

sig=("@method" "@authority" "@path" "content-type" "content-digest" "signature-k…

SignatureAAuth?

sig=:U2lnbmF0dXJlQnl0ZXNFeGFtcGxlVmFsdWVGb3JEZW1vbnN0cmF0aW9uUHVycG9zZXNPbmx5:

Body
{
  "resource": "https://api.example"
}
HTTP Signaturescheme=jwt

Covered Components

@method
@authority
@path
content-type
content-digest
signature-key

Signature Base

"@method": POST
"@authority": ps.example
"@path": /person
"content-type": application/json
"content-digest": sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:
"signature-key": sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQrand0In0…"
"@signature-params": ("@method" "@authority" "@path" "content-type" "content-digest" "signature-key");created=1700000000;alg="ed25519"

Signature-Key Header

sig=jwt;jwt="eyJhbGciOiJFZERTQSIsImtpZCI6ImFnZW50LWtleS0xIiwidHlwIjoiYWEtYWdlbnQrand0In0…"

Signature-Input Header

sig=("@method" "@authority" "@path" "content-type" "content-digest" "signature-key");created=1700000000;alg="ed25519"

Person Tokenaa-person+jwt
Header
{
"alg":"EdDSA",
"kid":"ps-key-1",
"typ"?:"aa-person+jwt"
}
Payload
{
"iss"?:"https://ps.example",
"dwk"?:"aauth-person.json",
"aud"?:"https://api.example",
"sub"?:"8f14e45fceea167a5a36dedd4bea2543",
"cnf"?:{
"jwk"?:
}
,
"jti"?:"pt-32d653",
"iat"?:1776222894,
"exp"?:1776226494
}
sig: cGVyc29uVG9rZW5TaWduYXR1cmVJc3N1