跳到主要内容
ecdsa.com
jsonwebtoken (Rust crate)Rust

错误信息

Error(InvalidAlgorithm)

也可能输出为

  • called `Result::unwrap()` on an `Err` value: Error(InvalidAlgorithm)
  • InvalidAlgorithm

`{:?}` 打印 `Error(InvalidAlgorithm)`,`{}` 打印 `InvalidAlgorithm`。

jsonwebtoken (Rust crate) — ErrorKind::InvalidAlgorithm from decode()

含义

令牌的 `alg` 不在 `validation.algorithms` 中,或者与 `DecodingKey` 所属的算法族不符(EC 密钥无法验证 RS256)。这项检查发生在任何签名验证之前。最常见的诱因是 `Validation::default()`,它只允许 HS256。

原因

修复方法

  1. 1.

    按颁发者的算法构建 Validation

    用颁发者的算法调用 `Validation::new`,同时设置期望的颁发者和受众——默认设置不会检查它们。

    rust
    let mut validation = Validation::new(Algorithm::ES256); // the issuer's algorithm
    validation.set_issuer(&["https://issuer.example.com/"]);
    validation.set_audience(&["api://orders"]);
    let data = decode::<Claims>(&token, &key, &validation)?;

相关错误

浏览完整的签名错误库