本文へスキップ
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 を検証できません)。このチェックは、署名の検証より前に行われます。最もよくある原因は、HS256 しか許可しない `Validation::default()` です。

発生する理由

修正方法

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

関連するエラー

署名エラーデータベースをすべて見る