Every SCIM operation becomes the x:Account get, query or set JMAP makes, as the service principal, so permissions, tenant scope and limits, address uniqueness and account destruction are enforced in one place. Discovery is anonymous; everything else takes an API key as a bearer token and nothing else. Domains open to SCIM carry a flag in the domain cache. Filters take eq and and, answered from the account indexes, with unindexed attributes checked on at most 200 candidates. Cursors are stateless, HMAC-sealed under the server key. PATCH applies to the resource in memory and saves it as a PUT, so it is all or nothing. Groups get an address from their display name on the principal's domain; membership is written on each user. Every write emits one of five new scim.* events (ids 637 to 641), also added to the packaged schema. The helpers the surviving SCIM suites import are rebuilt from the spec; scim_tests runs the new acceptance suite and the surviving tenant isolation suite, and both pass.
37 lines
968 B
TOML
37 lines
968 B
TOML
[package]
|
|
name = "scim"
|
|
version = "0.16.22"
|
|
edition = "2024"
|
|
|
|
[dependencies]
|
|
scim-proto = { path = "../scim-proto" }
|
|
common = { path = "../common" }
|
|
jmap = { path = "../jmap" }
|
|
store = { path = "../store" }
|
|
registry = { path = "../registry" }
|
|
directory = { path = "../directory" }
|
|
http_proto = { path = "../http-proto" }
|
|
jmap_proto = { path = "../jmap-proto" }
|
|
types = { path = "../types" }
|
|
utils = { path = "../utils" }
|
|
trc = { path = "../trc" }
|
|
hyper = { version = "1.11.1", features = ["server", "http1", "http2"] }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
xxhash-rust = { version = "0.8.18", features = ["xxh3"] }
|
|
icu_locale = "2.3.1"
|
|
ahash = { version = "0.8.12", features = ["serde"] }
|
|
base64 = "0.23"
|
|
hmac = "0.13"
|
|
sha2 = "0.11"
|
|
|
|
[dev-dependencies]
|
|
|
|
[features]
|
|
test_mode = []
|
|
dev_mode = []
|
|
enterprise = ["common/enterprise", "jmap/enterprise", "store/enterprise", "directory/enterprise", "trc/enterprise"]
|
|
|
|
[lints]
|
|
workspace = true
|