Concepts
Authentication
How a client proves its identity to a NYXDB node — Ed25519 bearers, sessions, password and API-key issuers, revocation and redaction.
Every request to a node runs under a session, and a session is opened from an Ed25519 bearer. Passwords and API keys do not replace the bearer: they are issuers that check a secret and issue a short-lived bearer for its principal.
One verifier, several issuers
- The bearer is the only credential
POST /auth/sessionaccepts, and the only proof a session revalidates. POST /auth/passwordtakes a user name and password;POST /auth/api-keytakes an API key. Both answer with a bearer.GET /auth/issuerslists the issuers the node offers. A node without an issuer key (gateway.issuer.ed25519_private_key_file) lists none and answers the issuing routes with 404.- Passwords are stored as Argon2id verifiers. An API key's secret is returned
once, in the result of
CREATE API KEY, and is never shown again.
Sessions
POST /auth/session exchanges a bearer for a session token. GET /auth/session reports the session, POST /auth/session/refresh renews it and
DELETE /auth/session closes it; a closed session's token answers 401.
A WebSocket session presents the session token in its first frame, never in the
URL. See Protocol.
Users and keys are SQL
Users and API keys are created and changed with SQL statements on an account
session: CREATE USER, ALTER USER, DROP USER, CREATE API KEY,
ALTER API KEY and DROP API KEY. A password is passed as a bound parameter
(PASSWORD ?), so it never appears in statement text.
See Users and API keys.
Revocation
- Disabling or dropping an API key makes its secret fail, and the sessions it opened end on their next operation.
- Dropping a user ends every session of that user;
ALTER USER … ENABLErestores the logins. - Rotating a password with
ALTER USER … PASSWORD ?makes the old password fail and ends the session it opened.
Failed logins
A wrong password and an unknown user receive the same 401 body. Repeated
failures are throttled: by default the eleventh failure for one credential
within a minute is answered 429 with a Retry-After header.
Redaction
Credential statements are classified before query history. History and traces
record only a redacted form, for example
CREATE USER "analyst" KIND HUMAN PASSWORD <redacted>, and no plaintext secret
reaches a log line, an error, a system relation or the data directory.
Authorization
A new user starts with no permission, and a role grants it reads, writes and
subscriptions. Roles, role bindings and data grants are administered with
GRANT and REVOKE and with typed administrative commands. See
Governance.