Skip to content

Authentication (OIDC)

uxrr uses OpenID Connect for dashboard authentication. Any standards-compliant OIDC provider works — Keycloak, Auth0, Okta, Google, Azure AD, etc.

Setup

1. Create an OIDC client

In your identity provider, create a new client (application) for uxrr:

  • Client type: Public (SPA)
  • Grant type: Authorization Code with PKCE
  • Redirect URI: https://uxrr.yourcompany.com/auth/callback
  • Silent redirect URI: https://uxrr.yourcompany.com/auth/silent-callback (for token renewal)
  • Post-logout redirect URI: https://uxrr.yourcompany.com/
  • Scopes: openid, profile, email

2. Configure the server

bash
OIDC_ISSUER_URL=https://auth.yourcompany.com/realms/main
OIDC_CLIENT_ID=uxrr

The server fetches the JWKS from {OIDC_ISSUER_URL}/.well-known/openid-configuration to validate tokens.

3. Optional: audience validation

OIDC_AUDIENCE defaults to the value of OIDC_CLIENT_ID. Override it if your provider uses a different aud claim:

bash
OIDC_AUDIENCE=https://api.yourcompany.com

4. Optional: issuer override

If the iss claim in tokens differs from OIDC_ISSUER_URL (common with some providers):

bash
OIDC_ISSUER=https://auth.yourcompany.com

Role-Based Access

By default, new OIDC users receive readonly access. The first user to log in is automatically granted admin. To grant admin access to additional users, you have two options:

Option A: Promote via the admin UI

An existing admin can promote other users from the Users page in the dashboard.

Option B: Use an OIDC claim

Configure uxrr to check a JWT claim for admin status:

bash
OIDC_ADMIN_CLAIM=roles
OIDC_ADMIN_VALUE=uxrr-admin

The claim is looked up as a direct top-level key in the JWT payload. If the claim value is an array, uxrr checks whether it includes the configured value; if it's a string, it checks for an exact match. Users whose token matches the claim are granted admin on first login.

Note: Admin status is stored in the database at user creation time and is not re-evaluated on subsequent logins. To change a user's admin status after creation, use the admin UI.

Dev Mode

For development or quick evaluation:

bash
UXRR_DEV_MODE=true

This disables OIDC entirely — the dashboard is accessible without authentication. Dev mode is ignored when NODE_ENV=production as a safety guard. Never use dev mode in production.

Provider-Specific Notes

Keycloak

  • Create a client in your realm with Client authentication off (public client)
  • Set Valid redirect URIs and Web origins
  • OIDC_ISSUER_URL is typically https://keycloak.example.com/realms/your-realm

Auth0

  • Create a Single Page Application
  • Add your uxrr URL to Allowed Callback URLs and Allowed Logout URLs
  • OIDC_ISSUER_URL is https://your-tenant.auth0.com
  • Set OIDC_AUDIENCE to your API identifier if using custom APIs

Google

  • Create an OAuth 2.0 Client ID (Web application type)
  • OIDC_ISSUER_URL is https://accounts.google.com
  • OIDC_CLIENT_ID is the client ID from Google Cloud Console

Source-available under the uxrr Source Available License.