AAuth Explorer

Pre-rewrite scenario. This walkthrough was written against an earlier draft of draft-hardt-aauth-bootstrap. As of -01 the document is informational AP-side enrollment guidance; the PS /bootstrap endpoint, bootstrap_token, and aa-bootstrap+jwthave been removed. PS-binding now happens lazily on the agent's first interaction with the PS. See the bootstrap overview for current framing.

bootstrap

Mobile (iOS) Bootstrap

Agent runs on iOS with a Secure Enclave key. The PS authenticates the user and issues a bootstrap_token; the agent obtains an attestation nonce from the agent provider, generates an App Attest attestation, then POSTs to the agent provider's bootstrap_endpoint using the jkt-jwt signature scheme. The agent provider verifies the attestation, records the enclave key thumbprint as the device credential, and issues an agent token. The agent then announces its identity to the PS.

§ Bootstrap / iOS
UserAgent (iOS App)Agent ProviderPerson Server1Generate enclave key + ephe…2002POST /bootstrap (hwk, agent…3User authenticates and appr…4Agent polls PS — receives b…5GET attestation nonce from …6App Attest + jkt-jwt creati…7POST bootstrap_endpoint (jk…8Announce agent identity to …9Bootstrap complete
LOCAL Secure Enclave + local key gen200

Secure Enclave generates (or retrieves existing) P-256 key pair — hardware-bound, unexportable.

Agent also generates an ephemeral Ed25519 signing key in memory for HTTP message signatures.

The enclave key has a stable JWK thumbprint: urn:jkt:sha-256:<thumbprint>.

Per spec: durable key lifetime is bounded by the application install (months to years).

Ephemeral key lifetime is bounded by the agent token (hours to a day).

1 / 9
speed

Step 1: Generate enclave key + ephemeral key

Request / response
LOCALSecure Enclave + local key gen

No headers