SPIFFE 仕様全部読んでく - JWT-SVID
SPIFFE に個人的に興味を持ち始めたので、https://github.com/spiffe/spiffe/blob/main/standards/ にある仕様を全部読んで簡単にまとめてく。今回は、JWT-SVID についてです。 尚、学習中であるため解釈が間違っている可能性は存分にあります。
ざっくりまとめ
原文: JWT-SVID
Schema は、ここを見るとよい: https://github.com/spiffe/spiffe/blob/main/standards/JWT-SVID.schema
Introduction
- JWT-SVID
- トークンベースの SVID で L7 の境界を越えて、アイデンティティの主張をするために使われる
- 標準的な JWT にいくつか制限を加えたもの
- JWS Compact Serialization を必ず使用する
JOSE Header
以下に記載のないヘッダーはいかなる場合も JWT-SVID JOSE Header に含めてはいけない。
- MUST
- alg(Algorithm)
- 以下、参照
- alg(Algorithm)
- OPTIONAL
- kid(Key ID)
- typ(Type)
JWT
orJOSE
alg でサポートされているアルゴリズムは以下の通り
alg Param Value |
Digital Signature Algorithm |
---|---|
RS256 | RSASSA-PKCS1-v1_5 using SHA-256 |
RS384 | RSASSA-PKCS1-v1_5 using SHA-384 |
RS512 | RSASSA-PKCS1-v1_5 using SHA-512 |
ES256 | ECDSA using P-256 and SHA-256 |
ES384 | ECDSA using P-384 and SHA-384 |
ES512 | ECDSA using P-521 and SHA-512 |
PS256 | RSASSA-PSS using SHA-256 and MGF1 with SHA-256 |
PS384 | RSASSA-PSS using SHA-384 and MGF1 with SHA-384 |
PS512 | RSASSA-PSS using SHA-512 and MGF1 with SHA-512 |
JWT Claims
RFC 7519 で定義された claim にいくつか制限を加えている(新しい claim は追加されていない)
- 実装のために、新しい claim を追加しても良いが、相互運用性に影響を与える可能性には考慮する
MUST
- sub(Subject)
- aud(Audience)
- exp(Expiration Time)
Token Signing and Validation
- JWT-SVID の署名、検証の手順は通常の JWT/JWS と同様なので割愛
Token Transmission
- Serialize は、JWS Compact Serialization を必ず使用すること
- HTTP でトークンを送信する場合には、
Bearer
スキームを使用し、Authorization
ヘッダーで送信するべき - gRPC でトークンを送信する場合には、メタデータキー
authorization
にBearer <serialized_token>
を設定するべき
Representation in the SPIFFE Bundle
- JWT-SVID の署名鍵は、JWK として表現される
- MUST
- use
jwt-svid
- kid
- use