hermes-agent/website/docs/user-guide
Ben f57ce341dc feat(dashboard-auth): add generic self-hosted OIDC provider
Adds a bundled dashboard-auth provider plugin that authenticates the
web dashboard against any conformant self-hosted OpenID Connect server
(Authentik, Keycloak, Zitadel, Authelia, Auth0, Okta, Google, …) using
standard OIDC — no per-IDP code.

It's a pure drop-in plugin implementing the DashboardAuthProvider
protocol; it touches no core auth/runtime/login paths. Mechanics:

- OIDC discovery from {issuer}/.well-known/openid-configuration
  (cached; issuer pinned; endpoints required HTTPS, loopback http
  allowed for local-dev IDPs)
- authorization-code + PKCE (S256), public client
- verifies the OIDC ID token (RS256/ES256) against the discovered
  jwks_uri with iss/aud pinned to the configured issuer/client_id, and
  maps standard claims (sub/email/name/preferred_username, groups→org)
  onto a Session
- standard refresh_token grant for silent re-auth; RFC 7009 revocation
  on logout when advertised

Verifies the ID token (not the access token) because OIDC guarantees the
ID token is a signed JWT carrying identity, while access-token format is
opaque to the client per spec — the only universally-correct choice
across self-hosted IDPs.

Config via dashboard.oauth.self_hosted.{issuer,client_id,scopes} in
config.yaml or HERMES_DASHBOARD_OIDC_{ISSUER,CLIENT_ID,SCOPES} env vars
(env-wins-config, empty-is-unset — same convention as the nous plugin).
Confidential clients (client_secret) left as a documented TODO seam.

Docs: adds a Self-hosted OIDC section to the web-dashboard guide,
including a copy-paste Keycloak worked example (realm import + docker
run + dashboard wiring + login walkthrough).

Tests: 65 cases covering construction, discovery (incl. issuer
mismatch + https enforcement), start_login/PKCE, complete_login, ID
token verification, refresh/revoke, and env/config precedence.
2026-06-04 03:23:45 -07:00
..
features feat(dashboard-auth): add generic self-hosted OIDC provider 2026-06-04 03:23:45 -07:00
messaging feat(matrix): support bang command aliases 2026-06-03 17:19:27 +05:30
secrets feat(secrets/bitwarden): EU Cloud + self-hosted server URL support (#31378) 2026-05-24 02:19:57 -07:00
skills fix(config): align prefill messages key handling 2026-06-03 23:51:44 -06:00
_category_.json feat: add documentation website (Docusaurus) 2026-03-05 05:24:55 -08:00
checkpoints-and-rollback.md feat(checkpoints): v2 single-store rewrite with real pruning + disk guardrails (#20709) 2026-05-06 05:44:35 -07:00
cli.md fix(docs): add baseUrl prefix to SVG image paths in sessions and CLI pages 2026-05-29 12:06:22 -07:00
configuration.md fix(docs): align fallback provider config examples 2026-05-29 12:06:22 -07:00
configuring-models.md feat(cli): make hermes portal the human-readable Portal onboarding alias 2026-06-04 01:19:28 +05:30
desktop.md feat(dashboard): always enable embedded chat; remove dashboard --tui flag 2026-06-04 03:03:35 -07:00
docker.md feat(dashboard): always enable embedded chat; remove dashboard --tui flag 2026-06-04 03:03:35 -07:00
git-worktrees.md docs(config): deprecate MESSAGING_CWD guidance 2026-05-29 12:06:22 -07:00
multi-profile-gateways.md docs(gateway): add multi-profile gateways operations guide 2026-05-29 04:11:10 -07:00
profile-distributions.md docs(profiles): full user guide for profile distributions (#22017) 2026-05-08 11:13:45 -07:00
profiles.md docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782) 2026-05-28 02:41:36 -07:00
security.md docs(config): deprecate MESSAGING_CWD guidance 2026-05-29 12:06:22 -07:00
sessions.md docs: fix session recap image baseUrl 2026-05-29 12:06:22 -07:00
tui.md feat(cli): configurable default interface (cli vs tui) 2026-06-02 20:49:44 -05:00
windows-native.md docs: drop early-beta framing for native Windows support (#36093) 2026-05-31 15:33:18 -07:00
windows-wsl-quickstart.md docs(windows): add WSL desktop shortcut guide 2026-05-29 04:00:57 -07:00