---
# System prepended metadata

title: JWT勉強会

---

# JWT勉強会

二者間で情報を安全に転送するためのフォーマット

## 構造
JSONをBase64でエンコードされたものをそれぞれを "." で区切る
GETリクエストのパラメタで使用するためBase64-urlでエンコード
- Header
- Payload
- Signature

## Flow
1. cient -> auth_server : 認証
2. auth_server -> client : JWT token
3. client -> resource_server : アクセス with JWT token
4. resource_server -> client : Access Resource

攻撃者はリソースにアクセスするために有効なJWTトークンを取得する必要がある
- clientを攻撃
- 鍵を盗む

## header
- token type
- encryption algorithm

## payload
- issuded at
- issuer
- expiry
- user identification

## signature
- 真正性の確保

## 攻撃パターン
- auth server
- resource server
- 鍵配送の経路上
- 漏洩

## 脆弱性
- 認証情報を取られるとキーを自由に発行される
- 全てのサーバに鍵配送をする必要性
- 1台のサーバが侵害されると、共通鍵が盗まれる可能性
- ブルートフォースアタック

## 感想・考察

__JWTは真正性の確保は行うが、暗号化を行わないので機微情報は入れない(機密性の確保はTLSに任せる)__

__JWTはAuth Server - Resource Serverの真正性を確保するための仕組み(Clientや攻撃者にMITMをされないように)__