Who can configure it
The SSO tab is shown only to super admins. Saving also requires themanage_sso permission, which super admins always have. Org Owners and Admins hold manage_sso too but do not see the tab, so ask one of your platform’s super admins to set SSO up.
Before you start: create the Okta app
In the Okta admin console:1
Create an OIDC web application
Create an app integration with sign-in method OIDC - OpenID Connect and application type Web Application. Use the Authorization Code grant and client authentication with a client secret.
2
Add the sign-in redirect URI
Copy it from the bottom of the SSO tab (Copy redirect URI). It is built from the address you are using, so for AgentHub it is:If your people also sign in to ModelHub through SSO, add ModelHub’s callback as a second redirect URI:
3
Send groups in the ID token
To map Okta groups to roles, configure a
groups claim on the ID token. AgentHub requests the groups scope only when your authorization server advertises it, and reads groups from the ID token.4
Assign people
Assign the users or groups who should sign in to the app. People who are not assigned are turned away by Okta.
openid, profile, and email, plus groups when supported. The ID token must include an email; if it does not, AgentHub fetches it from Okta’s userinfo endpoint.
Fields
Okta application
“Credentials from the OIDC web app you created in the Okta admin console.”
When the domain has no
/oauth2/... path, AgentHub uses your Okta org authorization server, and falls back to /oauth2/default if that does not answer.
Role provisioning
“How members are assigned a role the first time they sign in through Okta.”
Example mapping:
Enforce SSO
A checkbox: Enforce SSO, “Disable email/password login for members of this organization.” Ticking it and saving shows an inline confirmation: “Enforce SSO? Members will no longer be able to sign in with email and password for this organization.” Select Enforce and save or Cancel. You cannot enforce SSO unless the organization has at least one Owner or Admin who already signs in through Okta, or you are an Owner or Admin yourself. Otherwise the save fails with “Cannot enforce SSO without at least one admin who can sign in via Okta”. Once enforced, anyone who is a member of the organization, or has a pending invite to it, can no longer request an email code. The sign-in page hides the code button and says “Your organization requires single sign-on.” This applies to that email everywhere, including other organizations they belong to.Saving
Select Save SSO configuration. The footer shows “Last updated<date and time>” or “Not configured yet.” Changes are recorded in the organization’s audit log.
How people sign in
SSO discovery
The SSO button appears only when the typed email is already a member of an organization with SSO configured, or has a pending, unexpired invite to one. AgentHub does not match by email domain. If the email matches several such organizations, one button per organization appears, labelled SSO:<org name>. The check runs about 400 ms after you stop typing.
Because discovery needs a membership or an invite, a brand-new colleague who has neither will not see the SSO button. Invite them first, or give them the direct link
https://pillarforge.corepillar.ai/auth/sso/okta/login?org_slug=<your-org-slug>.Just-in-time provisioning
On a successful Okta sign-in, AgentHub:- Resolves a role. The highest mapped Okta group wins. With no matching group, a pending invite’s role is used, and otherwise the default role.
- Finds or creates the account. It looks for a profile linked to the Okta user’s subject ID, then for one with the same email (and links it), and otherwise creates a new, already-confirmed account.
- Creates or updates the membership.
- A new member gets the resolved role, and any pending invite for that email is marked accepted.
- An existing member’s role changes only if one of their Okta groups is mapped. The default role never demotes an existing Owner or Admin.
- Starts a session and sends them to the page they originally asked for, or the home page.
Troubleshooting
Everyone lands as the default role, groups are ignored
Everyone lands as the default role, groups are ignored
Groups are not reaching AgentHub. Add a
groups claim to the ID token in Okta, make sure the authorization server supports the groups scope, and check that the names in your mapping match the Okta group names exactly.An existing admin was not demoted after removing their Okta group
An existing admin was not demoted after removing their Okta group
Roles of existing members only change when a mapped group applies. Losing a group does not lower a role. Change it in User Management.
People can't get a sign-in code any more
People can't get a sign-in code any more
SSO is enforced for an organization they belong to or are invited to. They must use the SSO button.