Skip to content

Commit 9ec254d

Browse files
committed
Drop the jsonwebtoken dependency
This removes `time` from the dependency tree because the crate shipped a security fix behind an MSRV bump. Fixes #92. We make a best effort attempt to keep the same behavior as when we validated JWTs using `jsonwebtoken`. This includes rejecting any JWTs that have the `aud` field set. We also keep `jsonwebtoken` as a dev-dependency and add parity tests. Unlike `jsonwebtoken`, we now fail to decode JWTs that contain `exp` fields with fractional parts.
1 parent 674acca commit 9ec254d

5 files changed

Lines changed: 309 additions & 119 deletions

File tree

rust/Cargo.lock

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

rust/auth-impls/Cargo.toml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,20 @@ edition = "2021"
55
rust-version.workspace = true
66

77
[features]
8-
jwt = [ "jsonwebtoken", "serde" ]
8+
jwt = [ "base64", "serde", "serde_json", "openssl" ]
99
sigs = [ "bitcoin_hashes", "hex-conservative", "secp256k1" ]
1010

1111
[dependencies]
12-
async-trait = "0.1.77"
1312
api = { path = "../api" }
14-
jsonwebtoken = { version = "9.3.0", optional = true, default-features = false, features = ["use_pem"] }
15-
serde = { version = "1.0.210", optional = true, default-features = false, features = ["derive"] }
16-
13+
async-trait = "0.1.77"
14+
base64 = { version = "0.22.1", optional = true, default-features = false, features = ["std"] }
1715
bitcoin_hashes = { version = "0.19", optional = true, default-features = false }
1816
hex-conservative = { version = "1.0", optional = true, default-features = false }
17+
openssl = { version = "0.10.75", optional = true, default-features = false }
1918
secp256k1 = { version = "0.31", optional = true, default-features = false, features = [ "global-context" ] }
19+
serde = { version = "1.0.210", optional = true, default-features = false, features = ["derive"] }
20+
serde_json = { version = "1.0.149", optional = true, default-features = false, features = ["std"] }
2021

2122
[dev-dependencies]
23+
jsonwebtoken = { version = "9.3.0", default-features = false, features = ["use_pem"] }
2224
tokio = { version = "1.38.0", default-features = false, features = ["rt-multi-thread", "macros"] }

0 commit comments

Comments
 (0)