Skip to content

Commit 5391b63

Browse files
committed
fix(auth): complete jsonwebtoken 10 migration
1 parent 75a66e1 commit 5391b63

5 files changed

Lines changed: 33 additions & 32 deletions

File tree

Cargo.lock

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

vendor/stack-auth/Cargo.lock

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

vendor/stack-auth/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ default-features = false
6262

6363
[dependencies.jsonwebtoken]
6464
version = "10.3.0"
65+
features = ["aws_lc_rs"]
6566

6667
[dependencies.miette]
6768
version = "7.5.0"

vendor/stack-auth/src/service_token.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -144,22 +144,12 @@ impl ServiceToken {
144144
/// NOTE: This does not verify the token signature or validate any claims,
145145
/// it only decodes the claims if the token is a well-formed JWT.
146146
fn try_decode(secret: &SecretToken) -> Result<DecodedClaims, String> {
147-
use jsonwebtoken::{decode, decode_header, DecodingKey, Validation};
148-
use std::collections::HashSet;
147+
use jsonwebtoken::{dangerous::insecure_decode, decode_header};
149148

150149
let token_str = secret.as_str();
151-
let header =
152-
decode_header(token_str).map_err(|e| format!("failed to decode JWT header: {e}"))?;
153-
154-
let dummy_key = DecodingKey::from_secret(&[]);
155-
let mut validation = Validation::new(header.alg);
156-
validation.validate_exp = false;
157-
validation.validate_aud = false;
158-
validation.required_spec_claims = HashSet::new();
159-
validation.insecure_disable_signature_validation();
160-
150+
decode_header(token_str).map_err(|e| format!("failed to decode JWT header: {e}"))?;
161151
let data: jsonwebtoken::TokenData<cts_common::claims::Claims> =
162-
decode(token_str, &dummy_key, &validation)
152+
insecure_decode(token_str)
163153
.map_err(|e| format!("failed to decode JWT claims: {e}"))?;
164154

165155
let issuer: Url = data

vendor/stack-auth/src/token.rs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -169,21 +169,12 @@ impl Token {
169169
/// This is safe because we already possess the token — we just need to read
170170
/// the claims it contains.
171171
fn decode_claims(&self) -> Result<Claims, AuthError> {
172-
use jsonwebtoken::{decode, decode_header, DecodingKey, Validation};
173-
use std::collections::HashSet;
172+
use jsonwebtoken::{dangerous::insecure_decode, decode_header};
174173

175174
let token_str = self.access_token.as_str();
176-
let header = decode_header(token_str)
175+
decode_header(token_str)
177176
.map_err(|e| AuthError::InvalidToken(format!("invalid JWT header: {e}")))?;
178-
179-
let dummy_key = DecodingKey::from_secret(&[]);
180-
let mut validation = Validation::new(header.alg);
181-
validation.validate_exp = false;
182-
validation.validate_aud = false;
183-
validation.required_spec_claims = HashSet::new();
184-
validation.insecure_disable_signature_validation();
185-
186-
decode(token_str, &dummy_key, &validation)
177+
insecure_decode(token_str)
187178
.map(|data| data.claims)
188179
.map_err(|e| AuthError::InvalidToken(format!("failed to decode JWT claims: {e}")))
189180
}

0 commit comments

Comments
 (0)