Skip to content

Set up SSO for a customer

Say "set up SSO for a customer" and their IT admin gets a setup link; their people sign in through it once a test passes.

A larger customer's IT team wants its people to sign in through its own identity provider. Their admin gets a setup link, and the SSO Connection turns on once a test sign-in passes.

Needs Let customers sign in

What you get

  • 1setup link sent to the customer’s IT adminTenant
  • 1single sign-on connection, on once a test sign-in passesSSO Connection

Your agent does

Tenant.requestSetup → SSOConnection.activate
You, to your agent

Set up SSO with Okta for Harbor Properties.

Their IT team wants single sign-on through Okta.

Set up SAML for a customer.

# 1. Tenant.requestSetup
curl -X POST https://api.sb/leaseline.app/tenants/tenant_harbor/requestSetup \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"admin":"person_maria","intent":"sso"}'

# 2. SSOConnection.activate
curl -X POST https://api.sb/leaseline.app/sso-connections/sso_harbor/activate \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

await $.Tenant.requestSetup({ tenant: 'tenant_harbor', admin: 'person_maria', intent: 'sso' })
await $.SSOConnection.activate({ connection: 'sso_harbor' })
npx startup-builder do Tenant.requestSetup --json '{"tenant":"tenant_harbor","admin":"person_maria","intent":"sso"}'
npx startup-builder do SSOConnection.activate --json '{"connection":"sso_harbor"}'
{
  "name": "do",
  "arguments": {
    "code": "await $.Tenant.requestSetup({ tenant: 'tenant_harbor', admin: 'person_maria', intent: 'sso' })\nreturn await $.SSOConnection.activate({ connection: 'sso_harbor' })"
  }
}

Change it

  • Sync their directory too.
  • Require it for every Harbor member.

Under the hood

Systems
Customer access
Nouns
Tenant, SSO Connection
Events
Tenant.setupRequested, SSOConnection.activated