mirror of
https://github.com/TECHNOFAB11/jwt-authorizer.git
synced 2025-12-12 08:00:07 +01:00
fix: bad jwk panic
replacinf unwrap by Error (jsonwebtoken.error::Error)
This commit is contained in:
parent
4baeb42a64
commit
ed386ec972
1 changed files with 29 additions and 2 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
use std::{str::FromStr, sync::Arc};
|
use std::{str::FromStr, sync::Arc};
|
||||||
|
|
||||||
use jsonwebtoken::{jwk::Jwk, Algorithm, DecodingKey, Header};
|
use jsonwebtoken::{errors::ErrorKind, jwk::Jwk, Algorithm, DecodingKey, Header};
|
||||||
|
|
||||||
use crate::error::AuthError;
|
use crate::error::AuthError;
|
||||||
|
|
||||||
|
|
@ -29,7 +29,13 @@ impl KeyData {
|
||||||
pub fn from_jwk(key: &Jwk) -> Result<KeyData, jsonwebtoken::errors::Error> {
|
pub fn from_jwk(key: &Jwk) -> Result<KeyData, jsonwebtoken::errors::Error> {
|
||||||
Ok(KeyData {
|
Ok(KeyData {
|
||||||
kid: key.common.key_id.clone(),
|
kid: key.common.key_id.clone(),
|
||||||
alg: vec![Algorithm::from_str(key.common.key_algorithm.unwrap().to_string().as_str())?],
|
alg: vec![Algorithm::from_str(
|
||||||
|
key.common
|
||||||
|
.key_algorithm
|
||||||
|
.ok_or(jsonwebtoken::errors::Error::from(ErrorKind::MissingAlgorithm))?
|
||||||
|
.to_string()
|
||||||
|
.as_str(),
|
||||||
|
)?],
|
||||||
key: DecodingKey::from_jwk(key)?,
|
key: DecodingKey::from_jwk(key)?,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -82,3 +88,24 @@ impl KeySource {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use jsonwebtoken::{errors::ErrorKind, jwk::Jwk};
|
||||||
|
|
||||||
|
use super::KeyData;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn key_data_no_alg() {
|
||||||
|
// NO ALG should result in ErrorKind::MissingAlgorithm
|
||||||
|
let jwk_ko: Jwk = serde_json::from_str( r#"{
|
||||||
|
"kty": "RSA",
|
||||||
|
"n": "2pQeZdxa7q093K7bj5h6-leIpxfTnuAxzXdhjfGEJHxmt2ekHyCBWWWXCBiDn2RTcEBcy6gZqOW45Uy_tw-5e-Px1xFj1PykGEkRlOpYSAeWsNaAWvvpGB9m4zQ0PgZeMDDXE5IIBrY6YAzmGQxV-fcGGLhJnXl0-5_z7tKC7RvBoT3SGwlc_AmJqpFtTpEBn_fDnyqiZbpcjXYLExFpExm41xDitRKHWIwfc3dV8_vlNntlxCPGy_THkjdXJoHv2IJmlhvmr5_h03iGMLWDKSywxOol_4Wc1BT7Hb6byMxW40GKwSJJ4p7W8eI5mqggRHc8jlwSsTN9LZ2VOvO-XiVShZRVg7JeraGAfWwaIgIJ1D8C1h5Pi0iFpp2suxpHAXHfyLMJXuVotpXbDh4NDX-A4KRMgaxcfAcui_x6gybksq6gF90-9nfQfmVMVJctZ6M-FvRr-itd1Nef5WAtwUp1qyZygAXU3cH3rarscajmurOsP6dE1OHl3grY_eZhQxk33VBK9lavqNKPg6Q_PLiq1ojbYBj3bcYifJrsNeQwxldQP83aWt5rGtgZTehKVJwa40Uy_Grae1iRnsDtdSy5sTJIJ6EiShnWAdMoGejdiI8vpkjrdU8SWH8lv1KXI54DsbyAuke2cYz02zPWc6JEotQqI0HwhzU0KHyoY4s",
|
||||||
|
"e": "AQAB",
|
||||||
|
"kid": "rsa01",
|
||||||
|
"use": "sig"
|
||||||
|
}"#).unwrap();
|
||||||
|
let ks = KeyData::from_jwk(&jwk_ko);
|
||||||
|
assert_eq!(ks.err().unwrap().kind(), &ErrorKind::MissingAlgorithm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue