Skip to content

SAML SSO

HeliosLogs supports SP-initiated SAML 2.0 single sign-on against one trusted identity provider. Configure it under Admin → Users → SSO.

The SAML panel: enable SSO, the IdP entity ID / SSO URL, the pinned signing certificate, and the SP metadata

How it works

  1. A user clicks the SSO button on the login page.
  2. HeliosLogs redirects them to your IdP to authenticate.
  3. The IdP POSTs a signed SAML assertion back to HeliosLogs's ACS URL.
  4. HeliosLogs verifies the signature (against your pinned certificate), the audience, and that the assertion hasn't been replayed, then matches the subject to a HeliosLogs user and issues a session.

Configuration

SettingNotes
EnabledTurns SSO on; the login page shows the SSO button.
IdP entity IDYour IdP's SAML entityID (informational).
IdP SSO URLThe HTTP-Redirect SSO endpoint users are sent to.
IdP signing certificate (PEM)The pin — assertions must be signed by this key. (The UI never echoes it back; it shows a SHA-256 fingerprint and a "set" flag.)
SP entity IDHeliosLogs's identifier, and the expected assertion audience.
ACS URLWhere the IdP POSTs the response: https://<helios>/api/auth/saml/acs.
Match attributeOptional — a SAML attribute name to match users on instead of the <NameID>.
Button labelThe login-page button text (default "Sign in with SSO").
Disable local loginsSSO-only for standard users; admins keep password login as break-glass.

HeliosLogs publishes SP metadata at GET /api/auth/saml/metadata — download it to register HeliosLogs with your IdP.

User matching (no auto-provisioning)

HeliosLogs is match-only: the SAML subject (matched by email, then userid) must already correspond to an existing HeliosLogs user. If there's no match, login fails — HeliosLogs does not create accounts just-in-time. So the workflow is:

  1. Create the user in HeliosLogs (matching the email/userid your IdP will assert).
  2. The user signs in via SSO.

Admin status and the data-access allowlist are managed in HeliosLogs, not derived from SAML attributes.

Break-glass

When local logins are disabled, admins can still sign in with a password at /login?local=1. Keep at least one admin password working so an IdP outage can't lock you out entirely.

Security

  • The signing certificate is pinned — there's no trust-chain walk; assertions must be signed by exactly that key.
  • The audience (SP entity ID) is checked.
  • Assertions are checked for expiry and replay.

Troubleshooting

SSO failures show a generic error to the user; the specific reason (bad signature, audience mismatch, expired/replayed assertion, no matching user) is logged server-side — search the _helioslogs self-log for saml_* events.