Skip to main content
ZEDEDA supports OIDC (OpenID Connect), a wrapper over Open Authorization (OAuth), for third-party authentication alongside local user authentication. Authentication is the basis for authorization. An authentication server provides a network service that Edge Infrastructure Services uses to authenticate credentials. Throughout this document, Edge Infrastructure Services acts as the Service Provider and your authentication server acts as the Identity Provider (IdP). Diagram showing that Edge Infrastructure Services acts as the Service Provider and your authentication server acts as the Identity Provider (IdP).

Configuration Concepts

Realms

A realm is the domain of a user’s email address. Edge Infrastructure Services uses the realm to decide whether a user must authenticate through SSO. Enter realms as bare domain names, without a leading @ or any other prefix: A value containing @ fails domain-name validation.
  • When a realm is configured on an enterprise, Edge Infrastructure Services redirects users whose email address belongs to that domain to the configured Identity Provider. Only OAuth users belonging to a configured realm can log in to the enterprise.
  • You can configure multiple realms for one enterprise, for example zededa.com, zededa.dev, and zededa.net.
  • All realms in an enterprise resolve to the same Identity Provider, because only one authorization profile can be active per enterprise.

Authorization profiles

An authorization profile determines which Identity Provider validates user credentials. In the Edge Infrastructure Services console, this is presented as the External Authentication Profile; in the API and in ZCLI (the ZEDEDA command-line interface) the object is an authorization profile (zcli auth-profile).
  • You can use any OIDC-compliant Identity Provider. ZEDEDA provides dedicated profile types for Azure AD and Google; other providers, including Okta, are configured as a custom OAuth profile using their client ID, client secret, and OpenID Connect endpoint.
  • An enterprise can hold more than one authorization profile, but only one profile can be active at a time. Because only one profile is active, only one Identity Provider is in effect: you cannot run Azure AD and Google simultaneously for the same enterprise.
  • Mark a profile --test-only to stage it without putting it into service, and --active to make it the profile in effect.
  • The profile type is fixed when the profile is created. zcli auth-profile update cannot change it; create a new profile instead.

Enterprise inheritance

SSO configuration applies at the enterprise level. When SSO is enabled for an enterprise, every user in that enterprise authenticates through SSO. SSO cannot be enabled or disabled per user. A child enterprise can inherit its authorization profile from its parent. The --inherit-auth setting controls this.
  • Inheritance enabled: the child enterprise uses the parent’s configuration. You cannot configure a separate profile for that child.
  • Inheritance disabled: you can configure a specific authorization profile for that child enterprise.
  • Changing the setting later: you can only turn inheritance on, never off: If an enterprise must be able to stop inheriting, do not enable inheritance in the first place.
  • Self-signup enterprises cannot inherit authentication from a parent, regardless of the --inherit-auth value.

User permissions and roles

SSO handles authentication (verifying identity), not authorization (access rights).
  • Users who sign in through SSO are recognized as OAuth users.
  • An administrator must grant roles to those users before they can do anything. The system-defined roles are SysAdmin, SysManager, SysOperator, and SysMonitor; you can also use user-defined roles.
  • An authenticated SSO user with no role assignment cannot access enterprise resources.
  • Roles must already exist in ZEDEDA. The Identity Provider only selects which existing role a user receives; it cannot create roles. See Role Management.

Configuration methods

Both the UI and ZCLI can manage SSO:
  • Edge Infrastructure Services console: enable and configure the external authentication profile and manage realms.
  • ZCLI: full lifecycle management of realms (zcli realm) and authorization profiles (zcli auth-profile), plus the enterprise-level --inherit-auth setting on zcli enterprise create and zcli enterprise update. See Manage SSO with ZCLI.

Before You Begin

Register Edge Infrastructure Services as a client on your authentication server. The user or resource owner must complete the client registration process. Provider documentation:

Callback URL

Configure this callback (redirect) URL at your Identity Provider:
For example: https://zedcontrol.zededa.net/oauth/callback Include the https:// scheme. Identity Providers reject redirect URIs that omit it.

Attributes to collect

Obtain the following from your Identity Provider before you start. This is a one-time exercise.
  • Client ID
  • Client Secret
  • OpenID Connect endpoint

Enable OAuth for Your ZEDEDA Enterprise

ZEDEDA onboards an enterprise with local admin authentication. The user or resource owner enables third-party authentication when needed. Keeping a local administrator account is a deliberate fail-safe: if your Identity Provider is misconfigured or unreachable, a local admin can still sign in and correct the configuration. This separation also suits organizations where the team that runs the authentication server is not the team that administers ZEDEDA. To enable OAuth using local user authentication:
  1. Log in to the Edge Infrastructure Services console.
  2. Select your profile avatar in the top navigation.
  3. From the dropdown, select Enterprise Settings.
  4. In the sidebar, under Security & Access, select Authentication.
  5. In the Single Sign-On card, click Edit.
  6. In the Authentication Provider dropdown, select Custom OIDC.
  7. In the Authentication Type dropdown, select OAuth.
  8. Complete the remaining profile attributes described in Authorization profile attributes, then click Save.

Authorization profile attributes

The Custom OIDC form is organized into four subsections.

Provider settings

Credentials

Token settings

User provisioning

Additional parameters

Extra key-value pairs appended to the authorization request URL, for providers that require non-standard parameters. Click Add to add a parameter.
Default Role for New Users only applies when Auto-create users on first login is enabled. If you disable auto-create, assign roles to users when you create them manually.

Find your OpenID Connect endpoint

You can read the OpenID Connect endpoint from your provider’s OpenID configuration document:
  • Google: https://accounts.google.com/.well-known/openid-configuration
  • Okta: https://<your-okta-domain>/.well-known/openid-configuration, where <your-okta-domain> is the Okta domain issued to your organization.

Role Management

ZEDEDA resolves a role for each OAuth user from the ID token, using custom claims (key-value attributes) configured on your authorization server.

How a role is resolved

  1. ZEDEDA reads the role claim from the ID token. By default it reads the claim named roles. If you set the Scope attribute on the profile, ZEDEDA reads that claim name instead.
  2. The claim value might be a single string or an array of strings. Each value is treated as a candidate role name.
  3. ZEDEDA compares the candidate names against roles that already exist in the enterprise and uses the first match.
  4. If no candidate matches an existing role, or the claim is absent, ZEDEDA assigns the profile’s Default Role for New Users.
The Scope attribute holds a claim name, not an OAuth scope to request. Its value must match the name of the claim as it appears in the ID token.
Roles are never created automatically. They must exist in ZEDEDA before a user signs in, created during enterprise onboarding or afterwards by an administrator. The authorization server only drives which existing role is assigned.

Example: group claims in Okta

Some authorization servers, including Okta, can drive role assignment from group membership:
  1. Create a user group in Okta whose name matches a ZEDEDA role, for example zededa-admin or zededa-users.
  2. Assign the group to the application you registered for Edge Infrastructure Services.
  3. In the Okta authorization server settings, add a custom groups claim.
  4. Confirm the groups claim is included in the id_token sent to ZEDEDA. ZEDEDA uses it to assign roles.
  5. On the ZEDEDA authorization profile, set the Scope attribute to the name of that claim, for example groups.

Manage SSO with ZCLI

Realms

Pass the realm as a bare domain, for example zcli realm create zededa.com --enterprise=acme --title="ZEDEDA".

Authorization profiles

--type is only accepted on create; a profile’s type cannot be changed later.

Enterprise inheritance

You can also supply realms during onboarding:

Switch Between OAuth and Local Authentication

  • Enabling OAuth blocks the creation of new local users. Local user accounts that already existed continue to work: they remain listed and their owners can still sign in and use ZEDEDA while an external profile is configured.
  • Disabling OAuth restores normal local user creation.
Keep at least one local administrator account so you retain access if the Identity Provider becomes unavailable.

Disable SSO

  1. Select your profile avatar in the top navigation and select Enterprise Settings.
  2. In the sidebar, under Security & Access, select Authentication.
  3. In the Single Sign-On card, click Edit.
  4. In the Authentication Provider dropdown, select Local.
  5. Click Save.
Using ZCLI, clear the --active flag by activating a different profile, or delete the profile:
After SSO is disabled, local user creation is available again. Existing OAuth user records remain but can no longer authenticate through the removed profile.

User Logout Behavior

When a user logs out of ZEDEDA, ZEDEDA deletes only that user’s session. The user remains signed in to the Identity Provider. ZEDEDA does not perform RP-initiated logout (an OIDC mechanism where the application signals the Identity Provider to end the user’s session), so signing out of ZEDEDA does not sign the user out of the IdP.
On a shared or public workstation, a user who logs out of ZEDEDA can immediately sign back in without re-entering credentials, because the IdP session is still valid. Instruct users to sign out of the Identity Provider and close the browser when they finish. Where this matters, shorten session lifetimes at the Identity Provider.

Troubleshooting

Next Steps

Manage Users

View auto-provisioned users and adjust their role assignments.

Configure Two-Factor Authentication

Enforce 2FA for all users, including those authenticating through SSO.

Enterprise Settings Overview

The full list of enterprise configuration options.