Legal masthead background

SurfaceAI + Okta Configuration Guide

Last updated October 1, 2025

This guide describes how an Okta administrator configures the SurfaceAIintegration to enable Single Sign-On (SSO) for their users via OpenIDConnect (OIDC).

 

Overview: SurfaceAI is the AI agent platform for property operations. SurfaceAI uses the OpenID Connect Authorization Code flow to authenticate users against your Okta org. Once configured, your users sign in to SurfaceAI with their Okta credentials.

1. Supported features

The SurfaceAI OIDC integration supports:

  • Service Provider (SP) initiated SSO — users start at SurfaceAI and click Sign in with Okta.
  • Identity Provider (IdP) initiated SSO — users click the SurfaceAI tile in their Okta End-User Dashboard and land signed-in in SurfaceAI.

The following are not supported:

  • Just-in-Time (JIT) user provisioning. SurfaceAI accounts must be pre-provisioned (see Prerequisites).
  • SCIM provisioning / deprovisioning.
  • Single Logout (SLO).
2. Prerequisites

Before configuring this integration, ensure that:

  1. You have an active Okta org with administrator access sufficient to create OIDC application integrations.
  2. You have an active SurfaceAI tenant.
  3. Each user who will sign in via Okta will need to be provisioned in SurfaceAI before attempting to log in.

Users can be created via SurfaceAI’s self-service user management system.

3. Configuration steps

Step 1 — Create an OIDC application in Okta

1. In the Okta Admin Console, go to Applications → Applications and click Create App Integration.

2. Select OIDC – OpenID Connect as the sign-in method.

3. Select Web Application as the application type and click

Next.

4. Enter the following values:

Field Value
App integration name SurfaceAI
Grant type Authorization Code 
Sign-in redirect URIs  https://app.getsurface.ai/auth/okta
Sign-out redirect URIs (leave blank)   
Initiate login URI  https://app.getsurface.ai/login/okta
Login initiated by Either Okta or App
Application visibility Check Display application icon to users

5. Under Assignments, assign the application to the users or groupswho should be able to sign in to SurfaceAI. Only users that have alsobeen provisioned in SurfaceAI will be able to complete sign-in.

6. Click Save.

Step 2 — Collect the values SurfaceAI needs

From the application’s General tab in Okta, record:

Step 3 — Provide Relevant Information to SurfaceAI

Collect these three values from Okta:

Field Value
Issuer URI Issuer URI from Okta
Client ID Client ID from Okta
Client Secret Client Secret from Okta

Provide this information to the SurfaceAI team using secret-sharing technology of your choosing (for instance, 1Password).

Please provide instructions for how to retrieve the information securely with operations@getsurface.ai or email with any questions.

Step 4 — Required scopes and claims

SurfaceAI requests the following standard OIDC scopes, all of which areenabled by default in Okta:openidemailprofile

SurfaceAI uses the email claim returned from the /userinfo endpoint to look up the user’s pre-provisioned account. Ensure that the email claim issued by your authorization server matches the email address recorded for the user in SurfaceAI.

4. Verify the integration
  1. From SurfaceAI’s sign-in page at https://app.getsurface.ai, clickSign in with Okta. You should be redirected to your Okta org,prompted to authenticate (if not already signed in), and thenredirected back to SurfaceAI signed-in.
  2. From the Okta End-User Dashboard, click the SurfaceAI tile. You should land in SurfaceAI signed-in.
5. Notes and known issues
  • The email claim from Okta is the sole identifier SurfaceAI uses to match an Okta user to a SurfaceAI account. If a user’s email address changes in Okta, their SurfaceAI account email must be updated to match before they can sign in again.
  • Users that have not been pre-provisioned in SurfaceAI will see an authentication error after completing the Okta login. This is expected behavior; contact SurfaceAI support to provision the user.
  • Single Logout (SLO) is not supported. Signing out of SurfaceAI does not end the user’s Okta session, and signing out of Okta does not end the user’s SurfaceAI session.
6. Troubleshooting and support

For help configuring or troubleshooting this integration, contact SurfaceAI support at support@getsurface.ai.

When contacting support, please include:

  • The Okta org domain (for example, your-org.okta.com).
  • The email address of the affected user.
  • The approximate UTC time of the sign-in attempt.
  • Any error message displayed by SurfaceAI or Okta.
Summary