JWT : JSON Web Token
ざっくりいって署名の出来る JSON を含んだ トークンである。
署名とは、署名時に使ったsecretを用いて、JSONが改ざんされていないかをチェック出来るようにすることです。
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
3つの部分に分れている
header:
- 宣言の型
- 暗号化の名v 通常はSHA256
例:
{
'typ': 'JWT',
'alg': 'HS256'
}
//base64で
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
payload:
中身を載せる
例:
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
//base64で
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9
signature :
header + payloadを暗号化したら secret
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
sercretはサーバーで保存している、Jwtの生成もサーバーでやる。
ユーザー毎回requestの時header + payloadを送ってくる、改ざん検証できる、サーバーで認証をやる。