きり丸の技術日記

技術検証したり、資格等をここに残していきます。

Not enough segments というエラーメッセージが発生した

二度目がないようにメモ。

どこにも実装していないNot enough segmentsというエラーが発生したので、どこで発生したかを確認するためのメモ。

環境

  • Python
    • 3.12
  • PyJWT
    • 2.8.0

原因

JWTとして無効な形式の文字列をdecodeしていたため。

本来であれば、次の形式の文字列になるはずだったが異なるJWTをdecodeしていた。 <base64_encoded_header>.<base64_encoded_payload>.<signature>

エラーメッセージ自体はライブラリが発生させている。全てのライブラリを調べてないが、PythonのJWTライブラリの場合はこのエラーメッセージになっていそう。少なくとも、PyJWTpython-joseflask_jwt_extendedはこのメッセージの模様。

対応

正しいエラーメッセージだったので対応しない。ただし、JWT形式を無視したトークンで送信していたシステムに対して是正依頼。

ソースコード

終わりに

対策も何もしていないのでJWTの形式の共有、事例紹介というのをメインに共有します。

参考情報