JWT
JWTとは
- Json Web Token
- JSONをTokenとしてHTTPヘッダに含めてサーバに送信し、認証とかをする(曖昧)
- Cookieの代替として使える
- JSONに任意のデータを保存してやりとりできるのでCookieより利便性が高い模様
型式
Header
{
"alg": "HS256",
"typ": "JWT"
}
Payload
{
"iss": "Hoge Publisher",
"sub": "Hoge User"
}
Signature
- HeaderとPayloadのHash
セキュリティ対策
- ヘッダーはBase64エンコードされているだけなので改竄可能
- alg属性をNoneに書き換えて認証を突破しようとするケースが多い
- 対策としてサーバ側で暗号アルゴリズムは必ず指定する(リクエストされた内容を信用しない)
- JWTには署名を付ける
- 暗号アルゴリズムは必ず指定する(Noneは禁忌)