Visual RFC.
ALL RFCs / RFC 7800
Read the RFC ↗
RFC 7800 / JWT PROOF-OF-POSSESSION KEYS

Resolve a key identifier or a key-set URL

04

kid names a key in an application context; jku locates a public JWK Set and may need a matching kid.

RFC 7800 · § 3.4EXAMPLE
4 / 4
Resolve a key identifier or a key-set URLSeparate reference examples show a context-specific kid resolving to known public key A, an unknown kid stopping, a HTTPS JWK Set with keys A and B where matching cnf.kid selects B, and a multi-key set with missing cnf.kid stopping selection. GET requires TLS and validated server identity. A reference string itself is neither key possession nor an instruction to fetch arbitrary destinations.Resolve a reference before checking proof"cnf": {"jku":"https://keys.example.net/pop.json"}JWK kid: key-AJWK kid: key-Bmultiple keys · no kidMissing required selection → rejectDo not choose an arbitrary JWK
04
Reject an ambiguous multi-key reference.

Separate invalid case: cnf.jku references multiple keys but cnf.kid is absent. Do not choose an arbitrary key.

Source for this drawing: RFC 7800 · Read RFC section 3.4 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A key is different from permission.

An app, a person, and a server have different roles. Follow who asks, who grants permission, and who checks the credential. A key in the drawing is an analogy, not a literal protocol field.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

A key reference needs a trusted resolution path and an unambiguous selection.

  • cnf.kid can identify the key instead of carrying it, provided the recipient can obtain that key. Its content is application specific: it is not necessarily a URL, thumbprint, globally unique name or proof.
  • cnf.jku is a URI for a set of public JWKs. If the referenced set contains multiple keys, cnf.kid MUST also appear and the selected JWK MUST contain the same kid value.
  • Acquiring the resource MUST provide integrity protection. HTTP GET MUST use TLS, and the server’s identity MUST be validated. A supplied URL does not itself establish issuer trust or safe application access policy.
DETAILS

All URLs and identifiers are fictional examples. A reference is not a command to fetch an arbitrary URL without application security policy. No live key URL is fetched by this educational guide.

Read the RFC section ↗

All chapters in RFC 7800

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗