[package]
name = "openstack_keystone"
description = "OpenStack Keystone service"
version = "0.1.1"
edition = "2024"
license = "Apache-2.0"
authors = ["Artem Goncharov (gtema)"]
rust-version = "1.90"
repository = "https://github.com/openstack-experimental/keystone"
[package.metadata.clippy]
warn = ["clippy::unused_results"]
[[bin]]
name="keystone"
path="src/bin/keystone.rs"
[[bin]]
name="keystone-db"
path="src/bin/keystone_db.rs"
[[bench]]
name = "fernet_token"
harness = false
[dependencies]
async-trait = { version = "0.1" }
axum = { version = "0.8", features = ["macros"] }
base64 = { version = "0.22" }
bcrypt = { version = "0.17", features = ["alloc"] }
byteorder = { version = "1.5" }
bytes = { version = "1.11" }
chrono = { version = "0.4" }
clap = { version = "4.5", features = ["derive"] }
color-eyre = { version = "0.6" }
config = { version = "0.15", default-features = false, features = ["async",
"ini"] }
derive_builder = { version = "0.20" }
dyn-clone = { version = "1.0" }
eyre = { version = "0.6" }
fernet = { version = "0.2", default-features = false, features = ["rustcrypto"] }
futures-util = { version = "0.3" }
itertools = { version = "0.14" }
mockall_double = { version = "0.3" }
opa-wasm = { version = "^0.1", optional = true }
openidconnect = { version = "4.0" }
regex = { version = "1.12" }
reqwest = { version = "0.12", features = ["json", "http2", "gzip", "deflate"] }
rmp = { version = "0.8" }
schemars = { version = "1.1" }
sea-orm = { version = "1.1", features = ["debug-print", "sqlx-mysql", "sqlx-postgres", "runtime-tokio", "runtime-tokio-native-tls"] }
sea-orm-migration = { version = "1.1", features = ["sqlx-mysql", "sqlx-postgres", "runtime-tokio"] }
secrecy = { version = "0.10", features = ["serde"] }
serde = { version = "1.0" }
serde_bytes = { version = "0.11" }
serde_json = { version = "1.0" }
thiserror = { version = "2.0" }
tokio = { version = "1.48", features = ["fs", "macros", "signal", "rt-multi-thread"] }
tokio-util = { version = "0.7" }
tower = { version = "0.5" }
tower-http = { version = "0.6", features = ["compression-full", "request-id", "sensitive-headers", "trace", "util"] }
tracing = { version = "0.1" }
tracing-subscriber = { version = "0.3", features = [] }
url = { version = "2.5", features = ["serde"] }
utoipa = { version = "5.4", features = ["axum_extras", "chrono", "yaml"] }
utoipa-axum = { version = "0.2" }
utoipa-swagger-ui = { version = "9.0", features = ["axum", "vendored"], default-features = false }
uuid = { version = "1.18", features = ["v4"] }
validator = { version = "0.20", features = ["derive"] }
webauthn-rs = { version = "0.5", features = ["danger-allow-state-serialisation"] }
webauthn-rs-proto = { version = "0.5" }
[dev-dependencies]
base64urlsafedata = "0.5"
criterion = { version = "0.8", features = ["async_tokio"] }
http-body-util = "0.1"
hyper = { version = "1.8", features = ["http1"] }
hyper-util = { version = "0.1", features = ["tokio", "http1"] }
keycloak = { version = "26.4" }
mockall = { version = "0.14" }
rand = "0.9"
reqwest = { version = "0.12", features = ["json", "multipart"] }
sea-orm = { version = "1.1", features = ["mock", "sqlx-sqlite" ]}
serde_urlencoded = { version = "0.7" }
tempfile = { version = "3.23" }
thirtyfour = "0.36"
tracing-test = { version = "0.2" }
url = { version = "2.5" }
webauthn-rs = { version = "0.5", features = ["danger-credential-internals"] }
[features]
default = []
wasm = ["dep:opa-wasm"]
bench_internals = []
[profile.release]
strip = true
debug = false
lto = "thin"
[profile.dist]
inherits = "release"
lto = "thin"
[[test]]
name = "interop"
path = "tests/interop/main.rs"
test = false
[[test]]
name = "keycloak"
path = "tests/keycloak/main.rs"
test = false
[[test]]
name = "github"
path = "tests/github/main.rs"
test = false
[[test]]
name = "integration"
path = "tests/integration/main.rs"
test = false
[[test]]
name = "api"
path = "tests/api/main.rs"
test = false
[lints.rust]
unsafe_code = "forbid"
[lints.clippy]
unwrap_used = "deny"
expect_used = "deny"
enum_glob_use = "deny"