JWT Json web token


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を送ってくる、改ざん検証できる、サーバーで認証をやる。