Deep nesting fixture
This fixture stresses the IntersectionObserver per-block contract and the section-keying layer with deeply nested heading hierarchy and multi-level lists.
H1 — OAuth foundations
Top-level discussion of OAuth as a delegated authorization framework. OAuth 2.1 consolidates the field.
H2 — Flows
H3 — Authorization Code
H4 — With PKCE
Use PKCE for public clients. The flow:
H5 — Loopback redirects
Native apps register a loopback redirect (http://127.0.0.1). The state parameter binds the redirect to the originating session.
H6 — Bonus depth
This H6 exists to test that a host's CSS reset doesn't collapse heading hierarchy past H4. The term nonce appears here once.
H4 — Refresh token rotation
The refresh token rotates on each use. The old token is invalidated; the new one is paired with a fresh access token.
H3 — Client Credentials
Server-to-server. No user. scope is the only restriction. mTLS or DPoP binds the token.
H3 — Device Code
For headless devices. User completes the flow on a second device. The verification URI carries a short code.
H2 — Tokens
H3 — JWT family
A JWT is the encoded form. A JWS is a signed JWT. A JWE is an encrypted JWT. An ID token is always a JWS (and optionally a JWE).
H3 — Bearer vs PoP
A bearer token grants access to whoever holds it. DPoP binds the token to a key the holder must prove possession of.
H2 — Endpoints
H3 — Discovery
.well-known/oauth-authorization-server lists:
H3 — Token endpoint
POST granttype=authorizationcode with the PKCE verifier. Server returns an access token, an optional refresh token, and (for OIDC) an ID token.
H1 — Hardening
H2 — Threats
Re-using OAuth across the section to ensure cross-section term repetition works under deep nesting:
H2 — Mitigations
H1 — Closing prose
OAuth's complexity is a tax. PKCE, DPoP, PAR, and mTLS each address a specific historical failure. Use OAuth 2.1 defaults and accept the boilerplate. The terms OAuth, OAuth 2.1, PKCE, scope, refresh token, access token, ID token, JWT, JWS, JWE, nonce, state, client, resource server, authorization server, bearer, DPoP, mTLS, PAR, and introspection all appear at least once in this fixture and should each get at least one mark in the post-hydration DOM.