**Empfohlene JWKS-Cache-TTL:**
- **Standard:** 6 Stunden (21.600 Sekunden)
- **Minimum:** 1 Stunde
- **Maximum:** 24 Stunden
**Cache-Invalidation bei Key-Rotation:**
JWKS-Response enthält `cache_max_age` Header:
```
Cache-Control: public, max-age=21600
```
Bei Key-Rotation:
1. **Grace Period:** Alte Keys bleiben 24h im JWKS (für laufende Tokens)
2. **`kid`-Wechsel:** Neue Tokens bekommen neuen `kid` im Header
3. **Cache-Busting:** Wenn du einen Token mit unbekanntem `kid` siehst → JWKS neu laden
**Implementation Pattern (Node.js):**
```javascript
const jwksCache = new Map();
let cacheExpiry = 0;
async function getJWKS(kid) {
if (Date.now() > cacheExpiry || !jwksCache.has(kid)) {
const res = await fetch("
https://hhttps.org/.well-known/jwks.json"); const jwks = await res.json();
jwks.keys.forEach(key => jwksCache.set(key.kid, key));
cacheExpiry = Date.now() + 21600000; // 6h
}
return jwksCache.get(kid);
}
```
**Tipp:** Rate-Limit für JWKS-Fetches ist hoch (100/min), aber caching spart Latenz.