A blazingly fast, lightweight SCIM 2.0 server built in Go that makes identity management simple and scalable π₯
GoSCIM is the fastest and most flexible open-source implementation of the SCIM 2.0 protocol. Built with Go's performance and simplicity in mind, it's designed to handle anything from small startups to enterprise-scale identity management.
- π Blazing Fast: Built in Go for maximum performance and minimal resource usage
- π§ Plug & Play: Works out of the box with dynamic schema loading
- π Universal: Integrates with Active Directory, LDAP, Salesforce, Slack, and more
- π Scalable: From 10 users to 100,000+ with horizontal scaling
- π‘οΈ Secure: Enterprise-grade security with OAuth 2.0 and role-based access control
- π― SCIM 2.0 Compliant: Full RFC 7643/7644 implementation
- π Smart Filtering: Advanced ANTLR-based filter parser for complex queries
- π Observable: Built-in metrics, logging, and health checks
- Startups building their first identity system
- Enterprises replacing expensive identity solutions
- DevOps Teams automating user provisioning
- SaaS Companies needing multi-tenant identity management
- Developers learning SCIM protocol implementation
Get GoSCIM running in under 2 minutes:
# Clone and run with Docker
git clone https://github.com/arturoeanton/goscim.git
cd goscim
docker-compose up -d
# Or build from source
go run main.go
Visit http://localhost:8080/ServiceProviderConfig
to see your SCIM server in action! π
No code changes needed - just drop JSON schemas and restart:
{
"id": "urn:ietf:params:scim:schemas:custom:2.0:Employee",
"name": "Employee",
"attributes": [
{
"name": "employeeId",
"type": "string",
"required": true,
"uniqueness": "server"
}
]
}
Advanced filtering with natural syntax:
GET /Users?filter=name.familyName co "Garcia" and active eq true
GET /Users?filter=emails[type eq "work" and value ew "@company.com"]
Connect to any system with our flexible connector architecture:
// Custom connector in just a few lines
func (c *CustomConnector) SyncUsers() error {
users := c.externalSystem.GetUsers()
for _, user := range users {
scimUser := convertToSCIM(user)
c.scimClient.CreateOrUpdateUser(scimUser)
}
return nil
}
curl -X POST https://your-scim-server.com/scim/v2/Users \
-H "Content-Type: application/json" \
-d '{
"schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
"userName": "jane.doe@company.com",
"name": {
"familyName": "Doe",
"givenName": "Jane"
},
"emails": [{
"value": "jane.doe@company.com",
"type": "work",
"primary": true
}],
"active": true
}'
curl "https://your-scim-server.com/scim/v2/Users?filter=userName sw 'admin'&sortBy=name.familyName"
curl -X PATCH https://your-scim-server.com/scim/v2/Users/123 \
-H "Content-Type: application/json" \
-d '{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations": [{
"op": "replace",
"path": "active",
"value": false
}]
}'
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Your Apps β β Identity β β External β
β (Consumers) βββββΊβ Hub (GoSCIM) βββββΊβ Systems β
β β β β β (Providers) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Stateless Design: Scale horizontally with ease
- Couchbase Backend: NoSQL flexibility with ACID compliance
- Microservices Ready: Deploy as containers or serverless functions
- Event-Driven: Webhooks and real-time notifications
Metric | Small Team | Growing Company | Enterprise |
---|---|---|---|
Users | < 1,000 | < 10,000 | 100,000+ |
Requests/sec | 500+ | 2,000+ | 10,000+ |
Response Time | < 50ms | < 100ms | < 200ms |
Memory Usage | 256MB | 1GB | 4GB+ |
All measurements on standard cloud instances
We're building something special, and we'd love your help!
- π Report bugs
- π‘ Suggest features
- π Improve documentation
- π§ Submit pull requests
- π¬ Join discussions
- Add new identity provider connectors
- Improve the web UI (coming soon!)
- Write tutorials and blog posts
- Create Docker images and Helm charts
- Add support for additional databases
- Implement advanced monitoring features
Special thanks to all our contributors! Every contribution matters, from bug reports to major features.
Topic | Link |
---|---|
π Getting Started | docs/en/getting-started.md |
π§ Installation Guide | docs/en/installation.md |
π API Reference | docs/en/api-reference.md |
ποΈ Architecture | docs/en/architecture.md |
π‘οΈ Security Guide | docs/en/security.md |
π Integrations | docs/en/integrations.md |
π©βπ» Developer Guide | docs/en/development.md |
π Operations | docs/en/operations.md |
- Language: Go 1.16+
- Database: Couchbase (NoSQL)
- Web Framework: Gin
- Query Parser: ANTLR v4
- Monitoring: Prometheus & Grafana
- Auth: OAuth 2.0 / JWT
- Deployment: Docker, Kubernetes
- β Core SCIM Operations: CREATE, READ, UPDATE, DELETE, SEARCH
- β Advanced Filtering: Full SCIM filter expression support
- β Schema Extensions: Custom attributes and resource types
- β Role-Based Access: Granular permission system
- π§ Bulk Operations: In development
- π§ Web UI: Coming soon
- π GraphQL API: Planned
- π Event Streaming: Planned
Employee Onboarding β GoSCIM β Automatic provisioning in:
βββ Active Directory
βββ Salesforce
βββ Slack
βββ Jira
βββ Custom Apps
Customer Signup β GoSCIM β Isolated tenant with:
βββ Custom schemas
βββ Role-based access
βββ Branded experience
βββ API access
User Changes β GoSCIM β Automated:
βββ Audit logging
βββ Compliance reports
βββ Access reviews
βββ Webhook notifications
We believe identity management should be accessible, transparent, and community-driven. By open-sourcing GoSCIM, we're empowering developers worldwide to build better identity solutions.
Join us in democratizing identity management! π
GoSCIM is released under the MIT License. Feel free to use it in your projects, contribute back, and help us make identity management better for everyone!
Commercial use is welcomed, but we'd appreciate:
- π A star on GitHub
- π’ Attribution in your project
- π€ Contributing improvements back to the community
- Built with β€οΈ by Arturo Anton and the community
- Inspired by the SCIM protocol and the need for simple, scalable identity management
- Special thanks to all contributors and early adopters!
β Star us on GitHub β’ π Report Issues β’ π¬ Join Discussions
Made with β€οΈ for the developer community