authentication #882
Labels
No labels
1week
2weeks
Failed compliance check
IP cameras
NATS
Possible security concern
Review effort 1/5
Review effort 2/5
Review effort 3/5
Review effort 4/5
Review effort 5/5
UI
aardvark
accessibility
amd64
api
arm64
auth
back-end
bgp
blog
bug
build
checkers
ci-cd
cleanup
cnpg
codex
core
dependencies
device-management
documentation
duplicate
dusk
ebpf
enhancement
eta 1d
eta 1hr
eta 3d
eta 3hr
feature
fieldsurvey
github_actions
go
good first issue
help wanted
invalid
javascript
k8s
log-collector
mapper
mtr
needs-triage
netflow
network-sweep
observability
oracle
otel
plug-in
proton
python
question
reddit
redhat
research
rperf
rperf-checker
rust
sdk
security
serviceradar-agent
serviceradar-agent-gateway
serviceradar-web
serviceradar-web-ng
siem
snmp
sysmon
topology
ubiquiti
wasm
wontfix
zen-engine
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
carverauto/serviceradar#882
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Imported from GitHub.
Original GitHub issue: #2542
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/issues/2542
Original created: 2026-01-27T13:03:32Z
Issue: Implement Instance-Level Dynamic Authentication (SSO, OIDC, and SAML)
Description
Currently, the application relies on a single hardcoded admin user. We need to allow instance owners to configure their own Identity Providers (IdP) through the UI. Because each tenant has a dedicated application instance, the authentication configuration will be specific to that instance but stored in the database.
This will enable users to log in via modern OIDC (Google, Azure AD) or legacy Enterprise SAML.
User Story
Technical Requirements
1. Database Schema (Instance-Specific)
We need a table to store the SSO configuration for the current instance in the
platformschemaauth_settingstable:provider_type::oidcor:samlclient_id/client_secret: (Encrypted viacloakor similar)idp_metadata_url: (For OIDC discovery or SAML)saml_issuer: The "Entity ID" for the service provider.is_enabled: Boolean to toggle SSO on/off.2. Runtime Configuration Loader
Since Elixir/Phoenix libraries (like
ueberauth) typically expect compile-time config, we need to load settings from the database at the moment the user initiates a login.auth_settingsfrom the DB and merges them into theUeberauthconfiguration at runtime.userstable, create them and assign default roles.3. Admin Configuration UI (LiveView)
A dedicated settings page for instance administrators.
https://tenant.myapp.com/sso/sp/consume).Client ID,Client Secret, andDiscovery URL.4. The Login Flow
Task List
auth_settingstable.client_secretand SAML private keys are encrypted at rest.ueberauth_samlfor XML-based enterprise auth.ueberauth_oidccfor modern JSON-based enterprise auth.Security Considerations
Userrecord is provisioned into the correct tenant-specific context as defined by the instance's DB connection.Success Criteria
Imported GitHub comment.
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/issues/2542#issuecomment-3809172483
Original created: 2026-01-28T06:02:23Z
ADDENDUM:
Issue: Implement Multi-Mode Authentication (SSO, OIDC, SAML, and Proxy JWT)
Description
We need to support diverse enterprise authentication patterns. While some instances will connect directly to an IdP (OIDC/SAML), others will sit behind an API Gateway (like Kong) that handles authentication upstream and passes a JWT to our application.
Technical Requirements
1. Database Schema Update
Expand the
auth_settingstable to support "Passive" (Proxy) and "Active" (SAML/OIDC) modes.mode: Enum (:activevs:passive)type: Enum (:oidc,:saml,:proxy_jwt)config: JSONB field to store:2. Logic for "Proxy JWT" (Kong Support)
For instances behind a gateway, the app will not redirect to a login page.
exp(expiration) andiss(issuer) claims.suboremail) to the local User record.proxy_jwtis active, the standard login page should be disabled or hidden.3. Logic for "Active SSO" (OIDC/SAML)
For instances connecting directly to an IdP.
ueberauth_oidccto handle the redirect and code exchange.ueberauth_samlto handle the XML-based redirection and assertion consumption.client_idandmetadatafrom the DB at the start of the request.4. Admin UI (LiveView)
Authorization).5. User Provisioning (JIT)
Task List
auth_settingstable.JOSE.AppWeb.Plugs.GatewayAuthto intercept Kong headers.AppWeb.AuthControllerto handle multiple Ueberauth strategies dynamically.Success Criteria
Userrecord is created in the database to track permissions and history.Pro-Tip for the Kong setup:
When Kong is handling auth, it often passes the user's details in a header like
X-User-EmailorX-User-Id. However, always verify the JWT signature inside your Phoenix app. If you just trust the headerX-User-Emailwithout a signature, a clever user could bypass Kong and send that header directly to your app to impersonate anyone.