Pular para o conteúdo
ecdsa.com
jsonwebtoken (Rust crate)Rust

Mensagem de erro

Error(InvalidAlgorithm)

Também aparece como

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

`{:?}` imprime `Error(InvalidAlgorithm)`, `{}` imprime `InvalidAlgorithm`.

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

O que significa

O `alg` do token não está em `validation.algorithms` ou não combina com a família da `DecodingKey` (uma chave EC não consegue verificar RS256). Essa checagem acontece antes de qualquer verificação de assinatura. A causa mais comum é `Validation::default()`, que permite só HS256.

Por que acontece

Como corrigir

  1. 1.

    Montar a Validation para o algoritmo do emissor

    Use `Validation::new` com o algoritmo do emissor e defina, ao mesmo tempo, o emissor e o público-alvo esperados — os padrões não os verificam.

    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)?;

Erros relacionados

Ver toda a base de erros de assinatura