Okta & SCIM

Set up Okta for single sign-on (OIDC) and optional SCIM provisioning from the Harriet app in the Okta Integration Network, so people are created, updated, and deactivated automatically, and Okta can assign Harriet roles.

⚠️

SCIM provisioning does not work until the Okta integration has been created in Harriet. Add Harriet from the catalog, complete the OIDC setup below, and select Save first. Then configure SCIM on the same Okta app.

Before you start

Add Harriet from the Okta Integration Network

One catalog app covers sign-on and provisioning. Add it once, then configure OIDC and SCIM in the sections below.

  1. Open the catalog. In the Okta Admin Console, go to Applications → Applications and select Browse App Catalog.
  2. Find Harriet. Search for Harriet, open the listing, and select Add Integration.
  3. Select features. If Okta asks which capabilities to enable, select OpenID Connect for single sign-on and SCIM 2.0 for provisioning. You can enable both on this one app.
  4. Finish the add flow and assign the people or groups who should use Harriet.

Supported features

OIDC

SCIM

Leave Sync Password off. Harriet does not use Okta passwords.

OIDC (single sign-on)

Copy credentials from the Harriet app you just added, then paste them into Harriet.

  1. Open the Harriet app in Okta and go to the Sign On or General tab. Confirm the sign-on method is OpenID Connect.
  2. Copy the credentials Okta issued for this catalog app: Client ID, Client secret, and your Okta org domain (for example company.okta.com).
  3. Confirm the sign-in redirect URI is https://harriethq.com/bots/okta/callback/. If people also start sign-in on hrharriet.com, add https://hrharriet.com/bots/okta/callback/ as well.
  4. (Optional) Enable IdP-initiated login so people can open Harriet from the Okta dashboard. Set Login initiated by to Either Okta or App, and set Initiate Login URI to https://harriethq.com/bots/okta/login/ or https://harriethq.com/bots/okta/idp/ (or the same path on your custom Harriet domain). Okta appends ?iss= your org URL; Harriet starts SSO from that issuer.
  5. (Optional) Enable Single Logout. Add https://harriethq.com/accounts/login/ (or your custom Harriet domain) to Sign-out redirect URIs. When someone who signed in via Okta logs out of Harriet, Harriet ends their Okta session and returns them to the login page.
  6. Open Company settings → Integrations in Harriet and add or open the Okta integration.
  7. Fill in the fields from the OIN app. Domain: your email domain (for example acme.com). Client ID: from the Harriet app in Okta. Login Domain: your Okta org domain. Secret key: the OIN app client secret, not your Harriet API token.
  8. (Optional) Enable Disable other login methods (SSO only) if people should sign in only via Okta, and not with a password or the Slack, Google, or Microsoft buttons.
  9. (Optional) Enable Complete sign-in on the starting domain if you registered both harriethq.com and hrharriet.com redirect URIs. Untick Single Logout on this form if Harriet logout should stay local.
  10. Select Save. This creates the integration record SCIM needs.
  11. Test it. Open the Harriet login page, choose Okta, and sign in with a work email on your domain.

If Create account for workspace users is enabled in company settings (the default), Harriet can create the person after a successful Okta login. Turn that off to require SCIM or invites only. If you see No user found with this email, the account is not in Harriet yet: provision it via SCIM, invite them, or turn that setting on.

SCIM (provisioning)

Configure provisioning on the same Harriet catalog app. No extra SCIM fields are required on the Harriet Okta integration page.

  1. Create a Harriet API token from My preferences → Manage API tokens. Copy it when shown; the full secret is not visible again later.
  2. Connect the API. In the Harriet app in Okta, go to Provisioning → Integration, enable API integration, paste the Harriet API token into API Token, and select Save. Use Test API Credentials if Okta offers it.
  3. Select To App features. Under Provisioning → To App, enable Create Users, Update User Attributes, and Deactivate Users.
  4. Assign people (if you have not already) so provisioning runs for the right population.

Import role attributes from the SCIM schema

After the API connection is saved, Okta can import Harriet's SCIM schema and show boolean role attributes on the Harriet app profile. This is the preferred way to assign Harriet roles from Okta.

  1. Open Profile Editor for the Harriet app (from Directory → Profile Editor, or from Provisioning → To App mappings).
  2. Refresh or import attributes from the connected application so the Harriet role fields appear. If they are missing, confirm the API token is a Harriet API token and try the refresh again.
  3. Map or set the boolean attributes on people or group assignments so provisioning writes them to Harriet.
SCIM attributeHarriet role
role_ownerAccount owner
role_super_adminPermissions administrator
role_hrAdmin (legacy)
role_supportSupport operator
role_access_personal_dataAccess personal data
role_access_pay_dataAccess pay data
role_manage_usersManage users
role_manage_knowledgeManage knowledge base
role_manage_workflowsManage workflows
role_manage_embedsManage embeds
role_access_billingAccess billing
role_manage_integrationsManage integrations
role_export_dataExport data
role_view_analyticsView analytics
role_manage_api_keysManage API keys
role_manage_skillsManage skill group access
role_review_skillsReview shared skills and MCPs
role_financeManage finance
role_provisioner_viewView Harriet Endpoint AI
role_provisioner_assignManage Harriet Endpoint AI
role_provisioner_view_auditView Endpoint AI audit and usage
role_provisioner_debug_tool_usageView Endpoint AI tool debug data
role_provisioner_manage_budgetsManage LLM budgets
disallow_personal_data_accessDisallow personal data access

See Roles & permissions for what each role grants.

Magic groups

You can also push Okta groups with these exact names (spaces and capitalization matter). Any other group name creates a matching team in Harriet without a special role, which is useful for profiles. After membership changes, use Push Now if people or roles do not update immediately.

If you use attributes and magic groups together, Harriet treats each role as OR: removing a group does not clear the role while the matching attribute is still true, and unsetting an attribute does not clear the role while the person is still in the magic group.

Okta group nameHarriet role
Harriet Owner GroupAccount owner
Harriet Super Admin GroupPermissions administrator
Harriet Admin GroupAdmin (legacy)
Harriet Support GroupSupport operator
Harriet Access Personal Data GroupAccess personal data
Harriet Access Pay Data GroupAccess pay data
Harriet Manage Users GroupManage users
Harriet Manage Knowledge GroupManage knowledge base
Harriet Manage Workflows GroupManage workflows
Harriet Manage Embeds GroupManage embeds
Harriet Access Billing GroupAccess billing
Harriet Manage Integrations GroupManage integrations
Harriet Export Data GroupExport data
Harriet View Analytics GroupView analytics
Harriet Manage API Keys GroupManage API keys
Harriet Manage Skill Group Access GroupManage skill group access
Harriet Review Shared Skills and MCPs GroupReview shared skills and MCPs
Harriet Finance GroupManage finance
Harriet Provisioner View GroupView Harriet Endpoint AI
Harriet Provisioner Assign GroupManage Harriet Endpoint AI
Harriet Provisioner View Audit GroupView Endpoint AI audit and usage
Harriet Provisioner Debug Tool Usage GroupView Endpoint AI tool debug data
Harriet Provisioner Manage Budgets GroupManage LLM budgets
Harriet Restricted Access GroupDisallow personal data access

What happens on deactivation

With Deactivate Users enabled, deactivating a person in Okta (or removing their assignment to the Harriet app) deactivates their Harriet account through SCIM. They can no longer sign in, including with any non-Okta method. This is the offboarding path: leavers lose Harriet access when they lose Okta access, with no separate checklist step.

Troubleshooting

SymptomWhat to check
SCIM never creates usersThe Harriet Okta integration was saved before SCIM was enabled in Okta; the token in Okta is a Harriet API token, not the OIDC client secret.
SSO redirect errorThe sign-in redirect URI on the Harriet catalog app matches https://harriethq.com/bots/okta/callback/ (and the hrharriet.com URI if you use that hostname).
No Okta integration found for this domainDomain in Harriet matches the email domain people type at login.
No user found with this emailThe person exists in Harriet with that email (via SCIM, invite, or Create account for workspace users). Email matching is not case-sensitive.
Role attributes missing in Profile EditorAPI integration is saved; the token is a Harriet API token; refresh or import the Harriet app profile from SCIM.
Wrong roles after group pushOkta group names match the magic group table exactly.
Role still present after removing a groupThe matching SCIM attribute is still true, or the person is still in the magic group. Harriet treats attribute and group as OR.

For the other ways people sign in, see Single sign-on.