Skip to main content
We support a variety of Identity Providers to authenticate users in hoop.dev. Integration uses the OIDC (OpenID Connect) or SAML 2.0 protocols. Any OIDC-compliant identity provider should work; the guides below cover providers that have been validated.

Auth0

Okta

Google

Azure

Jump Cloud

AWS Cognito

Users

Users are active and assigned to the default organization when they sign up. A user can be set to an inactive state to prevent access, however it is recommended to manage user state in the identity provider rather than in hoop.dev.
  • The sub claim is used as the main identifier of the user in the platform.
  • The user’s profile is derived from the email and name claims in the ID token.
When a user authenticates for the first time, hoop.dev performs an automatic signup that persists the profile claims along with their unique identifier.

Groups

Groups control who may access or interact with certain resources.
  • For connection resources, groups define which users have access to a connection. This is enforced when the Access Control feature is enabled.
  • For access requests, groups define which users are allowed to approve an execution. This is enforced when the Access Requests feature is enabled.
Groups can be managed manually via the Webapp, or propagated automatically by the identity provider via the ID token. When propagated by the IdP, groups are synced each time a user signs in.

Roles

  • The admin group grants full access to all resources. Assign this to users responsible for managing the Gateway.
  • The auditor group grants read-only access to session resources.
  • All other users are regular users who can access their own resources and interact with connections.
The default role names (admin and auditor) can be changed to match the group names in your identity provider via Integrations > Authentication in the Webapp, or via the admin_role_name / auditor_role_name fields in the API.
Role name changes take effect on the next sign-in. If you change the admin role name and no user belonging to the new group has signed in yet, you may lose admin access. Update the role name before removing yourself from the previous admin group.

Configuration

Configuring the identity provider via the Webapp or API is available beginning with version 1.38.12.
Go to Integrations > Authentication to configure the identity provider.
After saving, the identity provider reloads automatically with the new settings. Any IDP_* environment variables will be ignored once a configuration is saved here.

Troubleshooting

Groups not syncing

  • Confirm the groups_claim field matches the exact claim name your provider includes in the ID token. You can inspect the claim being received by checking the gateway logs when a user signs in.
  • Ensure the claim is configured to be emitted in the ID token (not just the access token). Refer to your provider’s guide for claim configuration.
  • Some providers (e.g. Okta) only include the groups claim when a user belongs to at least one group. Ensure every user has at least one group assigned.

Login fails or callback errors

  • Verify the redirect URI configured in the identity provider exactly matches {API_URL}/api/callback (no trailing slash, correct scheme).
  • For SAML, confirm the ACS URL is set to {API_URL}/api/saml/callback and the Entity ID matches {API_URL}/saml/acs.

Access token validation fails (opaque tokens)

Some providers (e.g. Okta with certain authorization server configurations) issue opaque access tokens that cannot be validated directly. Append ?_userinfo=1 to the Issuer URL to instruct the gateway to authenticate via the userinfo endpoint instead:
https://your-org.okta.com/oauth2/default?_userinfo=1

Locked out after misconfiguration

If an incorrect configuration prevents any user from signing in, connect to the Hoop PostgreSQL database and clear the stored configuration:
-- Remove all IDP configuration (gateway will fall back to environment variables or local auth)
DELETE FROM private.authconfig WHERE org_id = (SELECT id FROM private.orgs);
To update a single field without a full reset:
UPDATE private.authconfig
SET admin_role_name = 'my-new-admin-role-group'
WHERE org_id = (SELECT id FROM private.orgs);