https://github.com/arturoeanton/goscim
π Lightning-fast SCIM 2.0 server in Go that makes identity management simple and scalable. Built for developers who need enterprise-grade user provisioning without the enterprise complexity.
https://github.com/arturoeanton/goscim
api authentication couchbase developer-tools docker enterprise go golang high-performance identity-management kubernetes microservices oauth open-source rbac rest-api saas scalable scim user-provisioning
Last synced: 3 months ago
JSON representation
π Lightning-fast SCIM 2.0 server in Go that makes identity management simple and scalable. Built for developers who need enterprise-grade user provisioning without the enterprise complexity.
- Host: GitHub
- URL: https://github.com/arturoeanton/goscim
- Owner: arturoeanton
- License: mit
- Created: 2021-03-09T02:53:37.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-07-08T04:03:12.000Z (3 months ago)
- Last Synced: 2025-07-08T05:09:46.338Z (3 months ago)
- Topics: api, authentication, couchbase, developer-tools, docker, enterprise, go, golang, high-performance, identity-management, kubernetes, microservices, oauth, open-source, rbac, rest-api, saas, scalable, scim, user-provisioning
- Language: Go
- Homepage:
- Size: 5.31 MB
- Stars: 11
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π GoSCIM - Lightning Fast Identity Management
[](https://goreportcard.com/report/github.com/arturoeanton/goscim)
[](https://choosealicense.com/licenses/mit/)
[](https://GitHub.com/arturoeanton/goscim/graphs/contributors/)
[](https://GitHub.com/arturoeanton/goscim/issues/)
[](https://GitHub.com/arturoeanton/goscim/stargazers/)> **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.
## β¨ Why GoSCIM?
- π **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## π― Perfect For
- **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## β‘ Quick Start
Get GoSCIM running in under 2 minutes:
```bash
# 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! π
## π Features That Make Developers Happy
### ποΈ **Dynamic Schema System**
No code changes needed - just drop JSON schemas and restart:```json
{
"id": "urn:ietf:params:scim:schemas:custom:2.0:Employee",
"name": "Employee",
"attributes": [
{
"name": "employeeId",
"type": "string",
"required": true,
"uniqueness": "server"
}
]
}
```### π **Powerful Query Engine**
Advanced filtering with natural syntax:```http
GET /Users?filter=name.familyName co "Garcia" and active eq true
GET /Users?filter=emails[type eq "work" and value ew "@company.com"]
```### π **Easy Integrations**
Connect to any system with our flexible connector architecture:```go
// 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
}
```## π οΈ Real-World Examples
### Create a User
```bash
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
}'
```### Search with Filters
```bash
curl "https://your-scim-server.com/scim/v2/Users?filter=userName sw 'admin'&sortBy=name.familyName"
```### Update User
```bash
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
}]
}'
```## ποΈ Architecture
```
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β 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## π Performance That Scales
| 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*
## π€ Join Our Amazing Community
We're building something special, and we'd love your help!
### π **Star us** if you find GoSCIM useful!
### π οΈ **Ways to Contribute**
- π [Report bugs](https://github.com/arturoeanton/goscim/issues/new?template=bug_report.md)
- π‘ [Suggest features](https://github.com/arturoeanton/goscim/issues/new?template=feature_request.md)
- π [Improve documentation](https://github.com/arturoeanton/goscim/tree/main/docs)
- π§ [Submit pull requests](https://github.com/arturoeanton/goscim/pulls)
- π¬ [Join discussions](https://github.com/arturoeanton/goscim/discussions)### π― **Quick Contribution Ideas**
- 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### π **Hall of Fame**
Special thanks to all our contributors! Every contribution matters, from bug reports to major features.## π Documentation
| Topic | Link |
|-------|------|
| π **Getting Started** | [docs/en/getting-started.md](docs/en/getting-started.md) |
| π§ **Installation Guide** | [docs/en/installation.md](docs/en/installation.md) |
| π **API Reference** | [docs/en/api-reference.md](docs/en/api-reference.md) |
| ποΈ **Architecture** | [docs/en/architecture.md](docs/en/architecture.md) |
| π‘οΈ **Security Guide** | [docs/en/security.md](docs/en/security.md) |
| π **Integrations** | [docs/en/integrations.md](docs/en/integrations.md) |
| π©βπ» **Developer Guide** | [docs/en/development.md](docs/en/development.md) |
| π **Operations** | [docs/en/operations.md](docs/en/operations.md) |### π **Multi-Language Docs**
- πΊπΈ [English](docs/en/)
- πͺπΈ [EspaΓ±ol](docs/es/)## π§ Tech Stack
- **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## π Project Status
- β **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## π‘ Use Cases
### Identity Automation
```
Employee Onboarding β GoSCIM β Automatic provisioning in:
βββ Active Directory
βββ Salesforce
βββ Slack
βββ Jira
βββ Custom Apps
```### Multi-Tenant SaaS
```
Customer Signup β GoSCIM β Isolated tenant with:
βββ Custom schemas
βββ Role-based access
βββ Branded experience
βββ API access
```### Compliance & Audit
```
User Changes β GoSCIM β Automated:
βββ Audit logging
βββ Compliance reports
βββ Access reviews
βββ Webhook notifications
```## π Why Open Source?
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!** π
## π License
GoSCIM is released under the [MIT License](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## π Acknowledgments
- Built with β€οΈ by [Arturo Anton](https://github.com/arturoeanton) 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](https://github.com/arturoeanton/goscim)** β’ **[π Report Issues](https://github.com/arturoeanton/goscim/issues)** β’ **[π¬ Join Discussions](https://github.com/arturoeanton/goscim/discussions)**
Made with β€οΈ for the developer community