authkestra-engine 0.3.3

Unified authentication engine for the authkestra framework
Documentation
[package]
exclude.workspace = true
name = "authkestra-engine"
version.workspace = true
edition.workspace = true
description = "Unified authentication engine for the authkestra framework"
repository.workspace = true
license.workspace = true
readme.workspace = true

[dependencies]
# From authkestra-core
serde = { version = "1.0", features = ["derive"] }
# The TLS backend is selected by the `rustls-*` features below, not by
# reqwest's defaults, so consumers can pick their own crypto provider.
reqwest = { version = "0.13.1", default-features = false, features = [
    "json",
    "form",
    "charset",
    "http2",
    "system-proxy",
] }
url = { workspace = true }
http = "1"
thiserror = "2.0.18"
async-trait = "0.1"
chrono = { version = "0.4", features = ["serde"] }
sha2 = { workspace = true }
base64 = "0.22.1"
rand = { workspace = true }

# From authkestra-flow
serde_json = "1.0"
uuid = { version = "1.0", features = ["v4"] }
tracing = "0.1"

# From authkestra-token
jsonwebtoken = { version = "11", features = ["rust_crypto"] }
tokio = { version = "1.0", features = ["full"] }
aes-gcm = "0.10.3"
rsa = "0.9.6"

redis = { version = "0.27", features = ["tokio-comp"], optional = true }
sqlx = { version = "0.8.2", optional = true }
webauthn-rs = { version = "0.5.0", optional = true, features = ["danger-allow-state-serialisation"] }
totp-rs = { version = "5.7", features = ["gen_secret", "otpauth"], optional = true }

[features]
default = ["token", "rustls-aws-lc-rs"]
token = []

# TLS backend for the outbound HTTP client. Exactly one of these must be
# enabled; the crate does not compile without a backend.
#
# `rustls-aws-lc-rs` is the default and keeps the historical behaviour
# (rustls with the `aws-lc-rs` provider, which builds C and assembly).
#
# `rustls-no-provider` leaves the choice of `rustls::CryptoProvider` to the
# application, which lets it use a pure-Rust provider such as `ring`. The
# application MUST install a provider before any `reqwest::Client` is built,
# otherwise reqwest panics at client construction:
#
# ```rust,ignore
# rustls::crypto::ring::default_provider()
#     .install_default()
#     .expect("failed to install rustls crypto provider");
# ```
rustls-aws-lc-rs = ["reqwest/rustls"]
rustls-no-provider = ["reqwest/rustls-no-provider"]

session = []
memory = []
redis = ["dep:redis"]
sql-postgres = ["sqlx/postgres", "sqlx/chrono", "sqlx/runtime-tokio-rustls", "sqlx/json"]
sql-mysql = ["sqlx/mysql", "sqlx/chrono", "sqlx/runtime-tokio-rustls", "sqlx/json"]
sql-sqlite = ["sqlx/sqlite", "sqlx/chrono", "sqlx/runtime-tokio-rustls", "sqlx/json"]
webauthn = ["dep:webauthn-rs"]
totp = ["dep:totp-rs"]
captcha = []

[dev-dependencies]


dotenvy = "0.15"
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite"] }
redis = { version = "0.27", features = ["tokio-comp"] }
reqwest = { version = "0.13", default-features = false, features = ["json"] }
tower-http = { version = "0.6", features = ["fs"] }
actix-files = "0.6"

testcontainers = "0.27.3"
testcontainers-modules = { version = "0.15.0", features = ["mysql", "postgres", "redis"] }
wiremock = "0.6.5"