OKTA SSO Configuration (Legacy)
Documentation for OKTA SSO integration with Twilio Flex.
Current Status: ThreadConnect currently uses Auth0 for SSO. OKTA integration is not actively deployed.
This documentation is preserved for:
- Historical reference
- Future migration path if needed
- Demonstrating ThreadConnect's multi-provider support
🎯 Purpose
This legacy documentation demonstrates that ThreadConnect supports both Auth0 and OKTA as identity providers. The architectural patterns and principles described in this authentication section apply to OKTA as well as Auth0.
Current Recommendation: Use Auth0 Configuration for active deployments.
🏗️ OKTA Architecture Overview
OKTA integration follows the same SAML-based SSO pattern as Auth0:
Key Similarity: Both Auth0 and OKTA use SAML 2.0 for Flex integration.
📋 OKTA vs Auth0 Comparison
| Feature | Auth0 | OKTA | Notes |
|---|---|---|---|
| SAML 2.0 Support | ✅ Yes | ✅ Yes | Both use same protocol |
| Pattern A Support | ✅ Yes | ✅ Yes | Multi-program with teams |
| Pattern B Support | ✅ Yes | ✅ Yes | Isolated organizations |
| Attribute Mapping | Via Actions | Via Attribute Statements | Different implementation |
| User Metadata | app_metadata | Custom Attributes | Different storage |
| Current Deployment | ✅ Active | ⚠️ Not Used | Auth0 preferred currently |
🔧 OKTA Configuration Overview
If migrating to OKTA in the future, the configuration would involve:
1. OKTA Application Setup
- Create SAML 2.0 application in OKTA
- Configure with Flex SAML endpoints
- Set audience and recipient URLs
2. Attribute Mapping
Map OKTA user attributes to Flex requirements:
| Flex Requirement | OKTA Attribute |
|---|---|
email | user.email |
full_name | user.firstName + user.lastName |
roles | user.flexRoles (custom attribute) |
team | user.flexTeam (custom attribute, Pattern A) |
3. Custom Attributes in OKTA
Would need to create:
flexRoles- String array for role assignmentflexTeam- String for team assignment (Pattern A)flexProgram- String for usage tracking (Pattern A)
4. OKTA Groups vs Team Attributes
OKTA offers two approaches:
- Groups: Map OKTA groups to Flex teams
- Custom Attributes: Similar to Auth0 approach
📖 Historical Context
Why Auth0 is Currently Used
ThreadConnect initially evaluated both OKTA and Auth0 for SSO integration. Auth0 was selected for current deployments due to:
- Rapid prototyping and development flexibility
- Simpler custom attribute management via Actions
- Cost structure for nonprofit clients
- Developer experience and documentation
Important: This was a pragmatic choice for current needs, not a permanent commitment. ThreadConnect architecture remains identity-provider agnostic.
🔄 Migration Path: OKTA ↔ Auth0
If future requirements necessitate OKTA:
Auth0 → OKTA Migration
Preparation:
- Audit all Auth0 users and metadata
- Map Auth0
app_metadatato OKTA custom attributes - Document Auth0 Actions logic for OKTA implementation
- Test OKTA configuration in non-production environment
Migration:
- Configure OKTA application with Flex SAML
- Create OKTA users with appropriate attributes
- Update Flex SSO settings to use OKTA metadata
- Test with pilot users
- Cutover during maintenance window
- Monitor for 48 hours
Rollback Plan:
- Keep Auth0 configuration for 30 days post-migration
- Document rollback steps
- Have emergency contacts ready
📊 OKTA Pattern Support
Both Pattern A (Multi-Program) and Pattern B (Isolated Organizations) work with OKTA:
Pattern A with OKTA
Team Segmentation via OKTA:
OKTA Groups:
├── NSS_Admins (no team attribute)
├── NSS_RAMP_Supervisors (team: RAMP)
└── NSS_RAMP_Agents (team: RAMP)
Or via custom attributes:
User: jbuckley@nevadaseniorservices.org
Custom Attributes:
- flexRoles: ["supervisor"]
- flexTeam: "RAMP"
- flexProgram: "RAMP"
Pattern B with OKTA
Separate OKTA Tenants:
Organization A → OKTA Tenant A → Flex Instance A
Organization B → OKTA Tenant B → Flex Instance B
Complete isolation achieved same as Auth0 Pattern B.
🔐 OKTA-Specific Features
Advantages of OKTA
If migrating to OKTA, these features would be available:
Universal Directory:
- Centralized user management across applications
- Automated user provisioning/deprovisioning
- Advanced user lifecycle management
Advanced Security:
- Adaptive Multi-Factor Authentication
- Risk-based authentication
- Detailed security event logging
Enterprise Integration:
- Pre-built integrations with enterprise tools
- Directory integration (Active Directory, LDAP)
- HR system integration (Workday, BambooHR)
Compliance:
- SOC 2, ISO 27001 certified
- HIPAA compliance features
- FedRAMP authorized (government clients)
🆘 OKTA Documentation References
If implementing OKTA in the future:
Official OKTA Docs:
Twilio Flex + OKTA:
📝 OKTA Reference Implementation
For future implementation reference:
OKTA Attribute Statements (SAML)
Pattern A (Multi-Program):
Name: email
Value: user.email
Name: full_name
Value: String.append(user.firstName, " ", user.lastName)
Name: roles
Value: user.flexRoles
Name: team
Value: user.flexTeam
Name: program
Value: user.flexProgram
Pattern B (Isolated Organizations):
Name: email
Value: user.email
Name: full_name
Value: String.append(user.firstName, " ", user.lastName)
Name: roles
Value: user.flexRoles
✅ Validation That OKTA Would Work
ThreadConnect's authentication architecture was designed with provider agnosticism in mind:
Evidence:
- ✅ SAML 2.0 standard protocol (OKTA supports)
- ✅ Pattern A and B are protocol-agnostic
- ✅ Attribute mapping flexible (both providers support)