JWTのフォーマット
ここで確認できる
例
code:_
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.hJRIF4uTgQgFeiOhCIoutrBWvoQ6ZvTxPALj8YHwZf8
3つの部分からなり、.で連結されている
url safeにするために、JSONそのままではなくBase64URL encodeしてからやり取りする 参考
というのも、JWTは様々な仕様が混合しているものであって、
haeder
code:e.g.json
{
"alg": "HS256",
"typ": "JWT"
}
alg
JWTの署名に使うアルゴリズムの名前を指定する
署名がない場合は"none"
typ
payload
JSON本体
code:e.g.json
{
"userId": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
signature
code:_
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
)
どういう効果があるのか
これがないと、平文でトークンをやり取りしていることになる?