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 (Android) Bootstrap

Agent runs on Android with a StrongBox-backed key. The PS authenticates the user and issues a bootstrap_token; the agent obtains an attestation nonce from the agent provider, generates a Play Integrity 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 / Android
UserAgent (Android App)Agent ProviderPerson Server1Generate StrongBox key + ep…2002POST /bootstrap (hwk, agent…3User authenticates and appr…4Agent polls PS — receives b…5GET attestation nonce from …6Play Integrity + jkt-jwt cr…7POST bootstrap_endpoint (jk…8Announce agent identity to …9Bootstrap complete
LOCAL Android Keystore (StrongBox) + local key gen200

Android Keystore generates (or retrieves existing) P-256 key pair in StrongBox HSM — hardware-bound, unexportable.

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

The StrongBox 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 StrongBox key + ephemeral key

Request / response
LOCALAndroid Keystore (StrongBox) + local key gen

No headers