Expand description
Embedded HTTP server.
environmentd embeds an HTTP server for introspection into the running process. At the moment, its primary exports are Prometheus metrics, heap profiles, and catalog dumps.
§Authentication flow
The server supports several authentication modes, controlled by the
configured AuthenticatorKind. The general flow is:
-
Identity resolution. An authentication middleware runs on every protected request and resolves the caller’s identity via one of:
- Credentials in headers. The caller supplies a username/password or
token in the request headers. Supported by all
AuthenticatorKinds. - Session reuse. If the caller has an active authenticated session
(established via
POST /api/login) and has not supplied credentials in the request headers, the session is reused. Only available forAuthenticatorKind::PasswordandAuthenticatorKind::Oidc. - Trusted header injection. A trusted upstream proxy (e.g. Teleport)
may inject the caller’s identity into the request headers. Only available
for
AuthenticatorKind::None.
- Credentials in headers. The caller supplies a username/password or
token in the request headers. Supported by all
-
Session initialization. Once the caller’s identity is known, an adapter session is opened on their behalf. This happens as part of request processing, after all middleware has run.
-
Request handling. The handler executes the request (e.g. runs SQL) using the initialized adapter session.
§WebSocket
The WebSocket flow is identical to the HTTP flow with two differences:
- Credentials are not read from request headers. Instead, the first message sent by the client is treated as the authentication message.
- Session initialization (step 2) happens inside the WebSocket handler itself, rather than as a separate middleware step.
Modules§
- catalog 🔒
- Catalog introspection HTTP endpoints.
- cluster 🔒
- HTTP proxy for cluster replica endpoints.
- console 🔒
- Console Impersonation HTTP endpoint.
- mcp 🔒
- Model Context Protocol (MCP) HTTP handlers.
- memory 🔒
- metrics 🔒
- Metrics tracked for
environmentds HTTP servers. - metrics_
viz 🔒 - probe 🔒
- Health check HTTP endpoints.
- prometheus 🔒
- root 🔒
- HTTP endpoints for the homepage and static files.
- sql 🔒
- webhook 🔒
- Helpers for handling events from a Webhook source.
Structs§
- Authed
Client - Authed
User - Http
Config - Http
Server - Internal
Route Config - Login
Credentials - Metrics
- SqlResponse
- The response to a
SqlRequest. - Tower
Session Data - Webhook
State - WsState
Enums§
Constants§
- MAX_
REQUEST_ SIZE - Maximum allowed size for a request.
- PROFILING_
API_ 🔒ENDPOINTS - SESSION_
DURATION 🔒
Traits§
- Default
Layers 🔒 - Default layers that should be applied to all routes, and should get applied to both the internal http and external http routers.
Functions§
- auth 🔒
- check_
role_ 🔒allowed - ensure_
session_ 🔒unexpired - Ensures the session is still valid by checking for expiration, and returns the associated user if the session remains active.
- get_
authenticator 🔒 - handle_
leader_ promote - handle_
leader_ skip_ catchup - handle_
leader_ status - handle_
load_ 🔒error - Glue code to make
towerwork withaxum. - handle_
login - handle_
logout - http_
auth 🔒 - init_ws 🔒
- maybe_
get_ 🔒authenticated_ session - Attempts to retrieve session data from a
TowerSession, if available. Session data is present only if an authenticated session has been established viahandle_login. - x_
materialize_ 🔒user_ header_ auth
Type Aliases§
- Delayed 🔒