[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]
serde = { version = "1.0", features = ["derive"] }
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 }
serde_json = "1.0"
uuid = { version = "1.0", features = ["v4"] }
tracing = "0.1"
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 = []
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"