Перейти к содержимому
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)?;

Связанные ошибки

Открыть всю базу ошибок подписей