How a client proves who it is: the handshake auth paths, device identity and pairing signatures, and TLS pinning.

Auth

Owner page: Gateway authentication — auth modes, token/password setup, and the operator-facing policy this wire contract enforces.

Device identity and pairing

Owner page: Gateway pairing — the approval flow, device records, and CLI surfaces behind these fields.

Device auth migration diagnostics

For legacy clients that still use pre-challenge signing behavior, connect returns DEVICE_AUTH_* detail codes under error.details.code with a stable error.details.reason.

Common migration failures:

Message details.code details.reason Meaning
device nonce required DEVICE_AUTH_NONCE_REQUIRED device-nonce-missing Client omitted device.nonce (or sent blank).
device nonce mismatch DEVICE_AUTH_NONCE_MISMATCH device-nonce-mismatch Client signed with a stale/wrong nonce.
device signature invalid DEVICE_AUTH_SIGNATURE_INVALID device-signature Signature payload does not match v2 payload.
device signature expired DEVICE_AUTH_SIGNATURE_EXPIRED device-signature-stale Signed timestamp is outside allowed skew.
device identity mismatch DEVICE_AUTH_DEVICE_ID_MISMATCH device-id-mismatch device.id does not match public key fingerprint.
device public key invalid DEVICE_AUTH_PUBLIC_KEY_INVALID device-public-key Public key format/canonicalization failed.

Migration target:

TLS and pinning

Owner page: Remote access — configuring gateway.tls and obtaining the fingerprint clients pin.