Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
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.9". Breaking changes are signaled by minor version increments until v1.0.
Quick Start
Add to your Cargo.toml:
[]
= "=0.3.9"
= { = "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
use ;
// Multi-tenant server with StandardResourceProvider
let storage = new;
let provider = new;
let mut server = new?;
// Register tenant
server.register_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 with
StandardResourceProvider - Multi-tenant setups
- Web framework integrations
- Authentication patterns
- ETag concurrency control
- AI assistant integration
Migration from InMemoryProvider
If you're upgrading from the deprecated InMemoryProvider, update your code:
// Old (deprecated)
use InMemoryProvider;
let provider = new;
// New (current)
use ;
let storage = new;
let provider = new;
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.