- the SDK facade, which verifies tokens and signatures through
OpenAgent.authenticate(request); - the SDK-free HTTP challenge-response protocol, which lets any external agent prove key possession with Ed25519.
SDK facade
Authorization: OpenAgent <token>,Authorization: Bearer <token>,X-OpenAgent-Token,- detached signature headers.
HTTP challenge-response
Server challenges
A protected route without valid auth returns
401 and WWW-Authenticate: OpenAgent challenge="<base64url>".Agent signs
The agent decodes the challenge, applies JSON Canonicalization Scheme (JCS), and signs the canonical bytes.
Agent retries
The agent resends the original request with
Authorization: OpenAgent <signature>.<public_key>.Canonical authorization header
Session headers
Transport posture
HTTP is the normative launch binding. The v1.1.0 protocol defines abstract messages for additional transports, but Weave and WebSocket bindings are later-phase unless a deployment explicitly enables them.Errors
Authentication failures use stable machine-readable codes. Common cases:| Code | Meaning |
|---|---|
invalid_signature | Signature does not verify against the provided public key |
expired_challenge | Nonce or timestamp is outside the accepted window |
unknown_nonce | Server did not issue the nonce |
invalid_session | Bearer or OpenAgent session token is invalid |
insufficient_trust | Route requires a higher trust tier |
rate_limited | Trust-tier or policy rate limit was exceeded |