Skip to content

feat: SAML 2.0 SP-initiated SSO (optional saml feature) - #111

Merged
Manuthor merged 20 commits into
developfrom
feat/saml-integration
Oct 15, 2026
Merged

Manuthor merged 20 commits into
developfrom
feat/saml-integration

Conversation

@charming-wicket-5502

@charming-wicket-5502 charming-wicket-5502 commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds optional SAML 2.0 single sign-on (SP-initiated) as a new realm auth method.

  • Server: new saml cargo feature (samael + statically bundled xmlsec); SP-initiated login, ACS and SP metadata endpoints; SAML realm settings validation; server SP signing key; hardened SAML request store (DB-backed data layer).
  • Admin UI: configure SAML realms with metadata preview and field-level validation.
  • Build/packaging: separate SAML Nix build variant, package creation, Helm chart for default and SAML configurations.
  • Tests/CI: SAML flow, IdP, and request-store tests; CORS and admin/super-admin API test updates; automated e2e pipeline and manual test plan.
  • Docs: SAML SSO guide, endpoint/config docs, fixed Mermaid diagrams; ADR-0003 moved to server/documentation/adr.

@Manuthor Manuthor changed the title Feat/saml integration feat: SAML2 integration Oct 12, 2026
@Manuthor Manuthor changed the title feat: SAML2 integration feat: SAML 2.0 SP-initiated SSO (optional saml feature) Oct 12, 2026
- Scope the SAML assertion replay cache per realm (trait, SQLite, PostgreSQL,
  MySQL and Redis keys), so one realm's IdP cannot use up assertion IDs that
  another realm will receive.
- Refuse SAML settings on the admin realm `_`: SAML is never an administrator
  credential.
- Issue the `_ea_saml` request cookie with `Path=/`, so an ACS behind a
  path-prefixing reverse proxy still receives it.
- Remove the stale `report/ISSUES_CHECKLIST.md` review artifact.
- Tests: ACS-level assertion replay and cross-realm tests, a per-realm replay
  store test and an admin-realm API test.
- Docs: SAML tables and extra pool when `auto_init_schema = false`, the
  multi-tab cause of the "not started from this browser" 401, the `sa` scheme
  in the scheme lists, keying identities on realm + scheme + subject; fix a
  pre-existing markdownlint heading and yamlfmt drift in openapi.yaml.
…026-0349

Unblocks the cargo-deny advisories check. Also moves spin off the yanked
0.9.8 release.
@Manuthor
Manuthor merged commit a3ce4d2 into develop Oct 15, 2026
97 checks passed
@Manuthor
Manuthor deleted the feat/saml-integration branch October 15, 2026 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants