Update Endpoint Auth
Configure how visitors authenticate to an endpoint at the edge — before traffic ever reaches the agent. An endpoint has exactly one of three auth modes:
- none — public, no auth (the default).
- basic — callers sign in as one of the endpoint's Access Control clients: with a username and password (the
username_passwordmethod) and/or the client's own token, sent asAuthorization: BearerorX-Tunnel-Token(thebearer_tokenmethod). - sso — visitors sign in with Google, GitHub or your OIDC provider through the endpoint's OAuth providers. It is stored as
basicwith theoauth_ssomethod turned on, so GET /v1/endpoints/{uuid}/settings reads it back as"mode": "basic"withenabled_auth_methods.oauth_sso: true.
Any other mode returns 400. The former token mode was removed (per-caller tokens are Access Control clients), and header and cookie were never enforced. JWT validation is not an auth mode: to check JWTs your callers already send, add a jwt-validation traffic policy rule (phase on_http_request) and keep the endpoint's mode none, basic or sso. The old PUT /v1/endpoints/{uuid}/settings/jwt is retired and returns 410.
An endpoint still stored with an unsupported mode (from before these changes) refuses every request at the edge until you set none, basic or sso here.
The handler uses strict JSON decoding — unknown fields return 400. mode and enforce_https are written on every call (a missing mode means none; a missing enforce_https means false), so send both each time. session_ttl_seconds and enabled_auth_methods keep their current values when omitted, and config is merged into the existing config.
Path parameters
Request body
none | basic | sso (case-insensitive). sso is stored as basic + oauth_sso. token, header, cookie, jwt and anything else return 400.false when omitted. Recommended true on any auth-enabled endpoint.{"username_password": bool, "bearer_token": bool, "oauth_sso": bool}. Kept as is when omitted. With mode: "sso", oauth_sso is turned on (sending it false returns 400) and the other methods are the ones you send, else the endpoint's current ones. Turning all three off leaves the endpoint open, whatever the mode.basic / sso: the login page (title, message, button_label), which paths need a sign-in (protect_all, protected_paths) and registration (self-registration and the headers forwarded after sign-in, also set by PUT …/rbac/registration-policy). Merged into the existing config.There is no field for credentials: usernames, passwords and tokens belong to Access Control clients. Set the mode and methods here first — a client is refused a password or token whose method isn't enabled — then create the clients.
Response (200 OK)
Returns the stored settings — same shape as GET /v1/endpoints/{uuid}/settings, including endpoint_uuid.
Deprecated: until the sunset this response also carries the legacy integer endpoint_id. Don't use it; read endpoint_uuid.
Errors
mode other than none, basic or sso (the message says what to use instead — for jwt, the jwt-validation rule); mode: "sso" with oauth_sso: false; a non-empty tokens list (it belonged to the removed token mode); or session_ttl_seconds ≤ 0.endpoints:update.quota_paused: the endpoint is paused over your plan's limits and is read-only.