LoginSignup
0
0

JWTのBase64URLデコードで引っかかった話

Posted at

JWTの各要素をパースする処理を自前で書いていたときに、ちょっと詰まってしまったので備忘録として記述しておく。

結論

  • Base64エンコードとBase64URLエンコードは異なるものである。
  • JWTのヘッダ、ペイロード、署名はそれぞれBase64URLエンコードされているものなので、取り出すにはBase64URLデコードしないとダメ。
    • Goならば base64.RawStdEncoding.DecodeString関数を使う。

Base64エンコードとBase64URLエンコード

要約すると以下の違いあり。

Base64エンコード
A-Z, a-z, 0-9, +, /しか扱うことができない通信環境において、元のデータをこれらの文字にエンコードする方式。
パディング文字として=が使われる。
主にEメール、Basic認証、インターネット掲示板で使われる。

Base64URLエンコード
URLでは+, -は特別な意味をもつため、Base64エンコード済み文字列の中でこれらに相当する文字はそれぞれ-,_に変換して扱う方式。
パディングもしない。

Go標準パッケージでのエンコード・デコード

  • 普通のBase64エンコード、デコード: base64.StdEncodingを使用する
  • Base64URLエンコード、デコード: base64.RawURLEncoding を使用する

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0