SCIM Provisioning
SCIM (System for Cross-domain Identity Management) enables automatic user provisioning and deprovisioning synchronized with your identity provider.
Overview
SCIM provides:
- Automatic user creation on hire
- Automatic deactivation on termination
- Group/team synchronization
- Real-time updates
How SCIM Works
Identity Provider (IdP)
↓
SCIM API
↓
Containment.AI
↓
User Created/Updated/Removed
- User added in IdP → SCIM creates user
- User updated in IdP → SCIM updates user
- User removed in IdP → SCIM deactivates user
Supported Identity Providers
Native Support
- Okta
- Azure AD / Entra ID
- OneLogin
- JumpCloud
- Ping Identity
- Google Workspace
Generic SCIM 2.0
Any SCIM 2.0 compliant system
Setup Guide
Prerequisites
- Enterprise plan
- SSO configured (recommended)
- IdP admin access
- Containment.AI admin access
Step 1: Enable SCIM
- Go to Settings > Enterprise > SCIM
- Click Enable SCIM
- Note your:
- SCIM Base URL:
https://app.containment.ai/scim/v2 - Bearer Token: Generated on enable
- SCIM Base URL:
warning
Copy the bearer token immediately - it's only shown once.
Step 2: Configure Your IdP
Okta
- Go to your SAML app > Provisioning
- Click Configure API Integration
- Enter:
- SCIM connector base URL
- Bearer token
- Click Test API Credentials
- Enable provisioning features:
- Create Users
- Update User Attributes
- Deactivate Users
Azure AD / Entra ID
- Go to your Enterprise App > Provisioning
- Set mode to Automatic
- Enter Admin Credentials:
- Tenant URL: SCIM Base URL
- Secret Token: Bearer token
- Click Test Connection
- Configure attribute mappings
- Enable provisioning
OneLogin
- Go to your SAML app > Provisioning
- Enable provisioning
- Enter:
- SCIM Base URL
- SCIM Bearer Token
- Configure user provisioning rules
- Save
Step 3: Configure Attribute Mapping
Map IdP attributes to Containment.AI:
| SCIM Attribute | Containment.AI | Required |
|---|---|---|
userName | Yes | |
emails[primary] | Yes | |
name.givenName | First name | Yes |
name.familyName | Last name | Yes |
active | Account status | Yes |
groups | Team membership | No |
Step 4: Configure Groups (Optional)
Sync IdP groups to Containment.AI teams:
- Enable group push in IdP
- In Containment.AI, map groups to teams
- Users automatically inherit team membership
SCIM Operations
User Provisioning
When user is assigned in IdP:
- IdP sends SCIM POST request
- Containment.AI creates user
- User receives welcome email
- User is active immediately
User Updates
When user is modified in IdP:
- IdP sends SCIM PATCH/PUT request
- Containment.AI updates user
- Changes effective immediately
User Deprovisioning
When user is unassigned/terminated:
- IdP sends SCIM PATCH (active=false)
- Containment.AI deactivates user
- User loses access immediately
- Data retained per policy
Group Sync
When group membership changes:
- IdP sends group update
- Containment.AI updates team membership
- Policies apply per new teams
Token Management
Rotating Tokens
- Go to Settings > Enterprise > SCIM
- Click Rotate Token
- Copy new token
- Update in IdP immediately
- Old token invalidated
Token Security
- Tokens are encrypted at rest
- Transmitted only over HTTPS
- Audit logged when used
- Rotate periodically (recommended: quarterly)
Monitoring SCIM
SCIM Logs
View SCIM operations:
- Go to Activity
- Filter by source: SCIM
- See all provisioning events
Status Dashboard
SCIM status shows:
- Last sync time
- Users provisioned
- Errors/failures
- Pending operations
Alerts
Configure alerts for:
- SCIM authentication failures
- Provisioning errors
- Token near expiration
Troubleshooting
User Not Provisioned
-
Check IdP assignment
- User assigned to app?
- Group assigned if using groups?
-
Check attribute mapping
- Email attribute mapped?
- Required attributes present?
-
Check SCIM logs
- Look for error messages
- Verify request received
Authentication Failed
-
Verify token
- Token copied correctly?
- No extra whitespace?
- Token not rotated?
-
Verify URL
- Base URL correct?
- No trailing slash issues?
Sync Delays
-
Check IdP settings
- Provisioning enabled?
- Sync interval configured?
-
Force sync
- Trigger manual sync in IdP
- Check for queued operations
Best Practices
Security
- Rotate tokens quarterly
- Monitor SCIM logs
- Use IP allowlisting if available
- Enable SSO alongside SCIM
Implementation
- Start with small test group
- Verify attribute mapping
- Test deprovisioning works
- Document configuration
Maintenance
- Monitor sync status
- Review logs periodically
- Update mappings as needed
- Test after IdP changes
Related Topics
- SSO Configuration - Authentication setup
- Admin Management - Manual user management
- Permissions - Role configuration