Cargo.toml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. [package]
  2. name = "d-oauth"
  3. version = "0.1.0"
  4. edition = "2024"
  5. description = "OAuth 2.1-only authorization server"
  6. license = "MIT OR Apache-2.0"
  7. [lib]
  8. name = "d_oauth"
  9. path = "src/lib.rs"
  10. [[bin]]
  11. name = "d-oauth-server"
  12. path = "src/main.rs"
  13. [dependencies]
  14. argon2 = "0.6.0"
  15. askama = "0.16.1"
  16. axum = "0.8"
  17. axum-extra = { version = "0.12.6", features = ["cookie"] }
  18. backon = "1.6.0"
  19. base32 = "0.5.1"
  20. base64 = "0.23.1"
  21. base64ct = "1.8.3"
  22. clap = { version = "4.6.7", features = ["derive"] }
  23. config = "0.15.27"
  24. hmac = "0.13.0"
  25. hyper = "1.11.1"
  26. hyper-util = { version = "0.1.21", features = ["server-auto", "tokio", "service"] }
  27. jsonwebtoken = { version = "11.1.0", features = ["rust_crypto"] }
  28. password-hash = "0.6.1"
  29. rand = { version = "0.10.3", features = ["std_rng"] }
  30. redis = { version = "1.7.1", features = ["tokio-comp", "connection-manager", "sentinel", "cluster-async", "tls-rustls", "tokio-rustls-comp", "tls-rustls-webpki-roots"] }
  31. # Task 22: the JAR validator fetches pre-registered `request_uri` objects
  32. # through an SSRF-guarded client (https-only, no redirects, size/timeout
  33. # caps). Pinned spec mirrors the existing dev entry; the dev copy is kept
  34. # so test-only users of reqwest keep compiling.
  35. reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-webpki-roots", "json"] }
  36. ring = "0.17"
  37. rustls = { version = "0.23.45", default-features = false, features = ["ring", "std", "tls12"] }
  38. rustls-pki-types = "1.15.1"
  39. secrecy = "0.10.3"
  40. serde = { version = "1.0.229", features = ["derive"] }
  41. serde_json = "1.0.151"
  42. sha2 = "0.11.0"
  43. sqlx = { version = "0.9", features = ["runtime-tokio", "postgres", "migrate", "macros", "uuid", "time", "tls-rustls-ring-webpki"] }
  44. subtle = "2.6.1"
  45. thiserror = "2.0.21"
  46. time = "0.3.55"
  47. tokio = { version = "1.53.2", features = ["full", "macros", "rt-multi-thread", "net", "signal", "time"] }
  48. tokio-rustls = { version = "0.26.6", default-features = false, features = ["ring", "tls12", "logging"] }
  49. totp-rs = "6.0.0"
  50. tower = { version = "0.5.3", features = ["util", "timeout", "limit", "load-shed"] }
  51. tower-http = { version = "0.7.1", features = ["cors", "limit"] }
  52. tracing = "0.1.44"
  53. tracing-subscriber = { version = "0.3.23", features = ["json", "env-filter"] }
  54. uuid = { version = "1.27.0", features = ["v4", "v7"] }
  55. validator = "0.21.0"
  56. x509-parser = "0.18.1"
  57. zeroize = "1.9.0"
  58. [dev-dependencies]
  59. http-body-util = "0.1.5"
  60. insta = "1.49.0"
  61. oauth2 = { version = "5.0.0", default-features = false, features = ["reqwest", "rustls-tls"] }
  62. proptest = "1.11.0"
  63. redis-test = "1.0.4"
  64. testcontainers = "0.27"
  65. testcontainers-modules = "0.15.0"
  66. tower = { version = "0.5.3", features = ["util"] }
  67. [lints.rust]
  68. unsafe_code = "forbid"
  69. [lints.clippy]
  70. unwrap_used = "deny"
  71. expect_used = "deny"
  72. panic = "deny"
  73. [profile.release]
  74. opt-level = 3
  75. lto = "thin"
  76. codegen-units = 1
  77. strip = "symbols"