Skip to main content

SSO Configuration

FieldValue
Document IDASCEND-ENT-007
Version1.0.0
Last UpdatedDecember 19, 2025
AuthorAscend Engineering Team
PublisherOW-KAI Technologies Inc.
ClassificationEnterprise Client Documentation
ComplianceSOC 2 CC6.1/CC6.2, PCI-DSS 7.1/8.3, HIPAA 164.312, NIST 800-53 AC-2/SI-4

Reading Time: 8 minutes | Skill Level: Advanced

Overview

ASCEND supports enterprise Single Sign-On (SSO) via SAML 2.0 and OpenID Connect (OIDC). SSO enables users to authenticate using their corporate identity provider.

Supported Protocols

ProtocolVersionUse Case
SAML 2.0Full supportEnterprise IdPs (Okta, Azure AD, OneLogin)
OIDC1.0Modern IdPs, OAuth 2.0 integration

Prerequisites

Before configuring SSO:

  1. Admin Access - Organization admin or super_admin role
  2. IdP Access - Administrator access to your identity provider
  3. Domain Verification - Verify ownership of your email domain
  4. SSL Certificate - HTTPS required for all SSO endpoints

Configuration Steps

Step 1: Verify Domain

curl -X POST "https://pilot.owkai.app/api/sso/domains/verify" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"domain": "company.com",
"verification_method": "dns_txt"
}'

Response:

{
"domain": "company.com",
"verification_record": "ascend-verify=abc123xyz",
"record_type": "TXT",
"instructions": "Add this TXT record to your DNS configuration"
}

Step 2: Create SSO Configuration

curl -X POST "https://pilot.owkai.app/api/sso/configure" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"protocol": "saml",
"domain": "company.com",
"idp_metadata_url": "https://idp.company.com/metadata.xml",
"default_role": "viewer",
"auto_provision_users": true,
"jit_provisioning": true
}'

Step 3: Get Service Provider Metadata

curl "https://pilot.owkai.app/api/sso/sp-metadata" \
-H "Authorization: Bearer <admin_jwt>"

Response:

{
"entity_id": "https://pilot.owkai.app/sso/saml/company.com",
"acs_url": "https://pilot.owkai.app/sso/saml/callback",
"slo_url": "https://pilot.owkai.app/sso/saml/logout",
"certificate": "-----BEGIN CERTIFICATE-----\n...",
"metadata_url": "https://pilot.owkai.app/sso/saml/metadata/company.com"
}

Step 4: Test SSO

curl -X POST "https://pilot.owkai.app/api/sso/test" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"domain": "company.com"
}'

Step 5: Enable SSO

curl -X PUT "https://pilot.owkai.app/api/sso/company.com/enable" \
-H "Authorization: Bearer <admin_jwt>"

SAML Configuration

IdP Configuration Requirements

Configure your IdP with these ASCEND settings:

SettingValue
Entity IDhttps://pilot.owkai.app/sso/saml/{domain}
ACS URLhttps://pilot.owkai.app/sso/saml/callback
SLO URLhttps://pilot.owkai.app/sso/saml/logout
NameID Formaturn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
Signature AlgorithmRSA-SHA256

Required SAML Attributes

AttributeDescriptionRequired
emailUser email addressYes
firstNameUser first nameNo
lastNameUser last nameNo
groupsGroup membershipsNo
roleASCEND roleNo

Attribute Mapping

curl -X PUT "https://pilot.owkai.app/api/sso/company.com/attributes" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"attribute_mapping": {
"email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"firstName": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
"lastName": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
"groups": "http://schemas.microsoft.com/ws/2008/06/identity/claims/groups"
}
}'

OIDC Configuration

Configure OIDC

curl -X POST "https://pilot.owkai.app/api/sso/configure" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"protocol": "oidc",
"domain": "company.com",
"issuer": "https://idp.company.com",
"client_id": "ascend-client-id",
"client_secret": "client-secret-here",
"authorization_endpoint": "https://idp.company.com/oauth2/authorize",
"token_endpoint": "https://idp.company.com/oauth2/token",
"userinfo_endpoint": "https://idp.company.com/oauth2/userinfo",
"jwks_uri": "https://idp.company.com/.well-known/jwks.json",
"scopes": ["openid", "email", "profile", "groups"]
}'

OIDC Redirect URIs

Configure these redirect URIs in your IdP:

https://pilot.owkai.app/sso/oidc/callback
https://dashboard.owkai.app/auth/callback

Role Mapping

Configure Group-to-Role Mapping

curl -X PUT "https://pilot.owkai.app/api/sso/company.com/role-mapping" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"role_mapping": {
"ascend-admins": "admin",
"ascend-managers": "manager",
"ascend-analysts": "analyst",
"ascend-viewers": "viewer"
},
"default_role": "viewer",
"require_group_membership": true
}'

Role Hierarchy

RolePermissions
super_adminFull system access
adminOrganization admin
managerApprove actions, manage agents
analystView and analyze
viewerRead-only access

Just-In-Time Provisioning

Configure JIT

curl -X PUT "https://pilot.owkai.app/api/sso/company.com/jit" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"enabled": true,
"auto_create_users": true,
"auto_update_attributes": true,
"auto_deactivate_on_removal": true,
"default_role": "viewer",
"allowed_domains": ["company.com", "subsidiary.company.com"]
}'

Session Management

Configure Session Settings

curl -X PUT "https://pilot.owkai.app/api/sso/company.com/session" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"session_duration_minutes": 480,
"idle_timeout_minutes": 30,
"require_reauthentication": true,
"reauthentication_interval_hours": 24,
"single_logout_enabled": true
}'

Multi-IdP Support

Configure Multiple IdPs

curl -X POST "https://pilot.owkai.app/api/sso/configure" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"protocol": "saml",
"domain": "subsidiary.company.com",
"idp_metadata_url": "https://idp.subsidiary.company.com/metadata.xml",
"parent_organization": "company.com"
}'

Troubleshooting

View SSO Logs

curl "https://pilot.owkai.app/api/sso/company.com/logs?days=7" \
-H "Authorization: Bearer <admin_jwt>"

Common Issues

IssueCauseSolution
Invalid signatureCertificate mismatchRe-download SP metadata
User not foundJIT disabledEnable JIT provisioning
Role not assignedMissing group claimCheck attribute mapping
Session expiredShort IdP timeoutAlign session durations

Test SAML Response

curl -X POST "https://pilot.owkai.app/api/sso/debug/saml" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"saml_response": "base64-encoded-response"
}'

Security Best Practices

1. Certificate Management

  • Use certificates with at least 2048-bit RSA keys
  • Rotate certificates annually
  • Configure certificate rollover before expiration

2. Encryption

curl -X PUT "https://pilot.owkai.app/api/sso/company.com/security" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"require_signed_assertions": true,
"require_encrypted_assertions": true,
"signature_algorithm": "RSA-SHA256",
"digest_algorithm": "SHA256"
}'

3. Access Controls

  • Require group membership for access
  • Use specific groups rather than "all users"
  • Regular access reviews

Next Steps


Document Version: 1.0.0 | Last Updated: December 2025