SCIM Server
A comprehensive SCIM 2.0 server library for Rust that makes identity provisioning simple, type-safe, and enterprise-ready.
SCIM (System for Cross-domain Identity Management) is the industry standard for automating user provisioning between identity providers and applications.
⚠️ Development Status: This library is under active development. Pin to exact versions for stability:
scim-server = "=0.3.3". Breaking changes are signaled by minor version increments until v1.0.
⚡ Quick Start
Add to your Cargo.toml:
[]
= "=0.3.3"
= { = "1.0", = ["full"] }
= "1.0"
Create a basic SCIM server:
use ;
use json;
async
✨ Key Features
- 🛡️ Type-Safe by Design - Leverage Rust's type system to prevent runtime errors
- 🏢 Multi-Tenant Ready - Built-in support for multiple organizations/tenants
- 📋 Full SCIM 2.0 Compliance - Complete implementation of RFC 7643 and RFC 7644
- ⚡ High Performance - Async-first with minimal overhead
- 🔌 Framework Agnostic - Works with Axum, Warp, Actix, or any HTTP framework
- 🤖 AI-Ready - Built-in Model Context Protocol for AI tool integration
- 🔄 ETag Concurrency Control - Prevents lost updates in multi-client scenarios
🏗️ How It Works
The SCIM Server acts as intelligent middleware that handles provisioning complexity:
Client Applications → SCIM Server → Your Storage Backend
- Clients: Web apps, AI assistants, CLI tools, custom integrations
- SCIM Server: Validation, schema management, multi-tenancy, concurrency control
- Storage: In-memory, database, cloud, or custom providers
📚 Documentation
| Resource | Description |
|---|---|
| 📖 User Guide | Comprehensive tutorials and concepts |
| 🔧 API Documentation | Detailed API reference with examples |
| 💡 Examples | Copy-paste starting points for common use cases |
| 📋 CHANGELOG | Version history and migration guides |
Learning Path
- Start Here: Follow the Quick Start above
- Learn Concepts: Read the User Guide
- See Examples: Browse examples/ for your use case
- API Reference: Check docs.rs for detailed API docs
🚀 Common Use Cases
// Multi-tenant server
let server = new
.with_tenant
.await?;
// Custom resource types
server.register_schema.await?;
// Web framework integration (Axum example)
let app = new
.route
.layer;
See examples/ for complete working examples including:
- Basic CRUD operations
- Multi-tenant setups
- Web framework integrations
- Authentication patterns
- ETag concurrency control
- AI assistant integration
🤝 Contributing
We welcome contributions! Please see our User Guide for development information, or open an issue to discuss your ideas.
📄 License
Licensed under the MIT License.
Need help? Check the User Guide or open an issue.