JWTについて
JWS/JWE/JWT/IDトークンってなに?
https://qiita.com/TakahikoKawasaki/items/1c1bcf24b46ebd2030f5 https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html
- 直列化方式として2つある
- それぞれ JSON 形式とコンパクト形式がある。
- JWT (JSON Web Token) は JWS か JWE を使用する
- いずれにしてもコンパクト形式を使用する。
- IDトークンとは?
JWS署名について
https://www.engineer-memo.net/20180716-4614
- 広義のjwtは署名付きのjson全体のこと
- 狭義のjwtはpayloadのこと
- JWTでは、Claim (Keyと値=パラメーターの事)として、基本的な Key の値が予約されている。
- 例えば、"iss"は、"Issuer Claim(発行者)"、"exp"は、"Expiration Time Claim(有効期限)" として予約されている。
- 独自の値を追加する事もできる。
- 「JWS署名」とは
- 「JOSE ヘッダー」と、「JWSペイロード」を「・」でつないだ値を入力にして、 HMAC SHA-256 で署名を作り、BASE64URL に変換したもの。
- JWS Compact Serialization
- 「JOSE ヘッダー」「JWSペイロード」「JWS署名」を「.」でつなぐ
- HMAC(共通鍵暗号方式)
- RSAではなくこっち使うのが一般的らしい。
HMACについて
https://www.infraexpert.com/study/ipsec4.html - 秘密鍵は文字列の並びであればなんでもよさそう。
RS256,HS256とは
- RS256: SHA-256を持つRSA署名 (公開鍵)
- HS256: HMAC with SHA256 (共通鍵)