OpenAgent ID supports two day-one authentication paths:
  • 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

The SDK searches the request for:
  1. Authorization: OpenAgent <token>,
  2. Authorization: Bearer <token>,
  3. X-OpenAgent-Token,
  4. detached signature headers.
It verifies the credential, checks scope and policy where configured, and returns a context object for handlers.

HTTP challenge-response

1

Server challenges

A protected route without valid auth returns 401 and WWW-Authenticate: OpenAgent challenge="<base64url>".
2

Agent signs

The agent decodes the challenge, applies JSON Canonicalization Scheme (JCS), and signs the canonical bytes.
3

Agent retries

The agent resends the original request with Authorization: OpenAgent <signature>.<public_key>.
4

Server verifies

The server checks the signature, consumes the nonce, derives the DID, calls AEGIS as needed, and returns session headers.

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: