Menyimpan Validasi Token dalam Tembolok untuk Skala Besar
Pelajari cara mengurangi beban validasi JWT saat lalu lintas tinggi dengan menyimpan kunci JWKS dan hasil validasi dalam tembolok tanpa mengorbankan keamanan.
Menyimpan Validasi Token dalam Tembolok untuk Skala Besar adalah pelajaran Spring Security 6 & JWT Authentication gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Spring Security 6 & JWT Authentication, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Spring Security 6 & JWT Authentication mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
The Cost of Validation
Every request to a JWT-protected API runs signature verification and claim checks. At thousands of requests per second, repeated work, especially fetching public keys, becomes a bottleneck.
What Is Safe to Cache
Not everything should be cached. Safe to cache:
- The public keys (JWKS) used to verify signatures
- Expensive parsed metadata
Risky: caching a final allow decision for too long can let a revoked token slip through.
Caching the JWKS
Fetching the JWKS endpoint on every request is wasteful. Cache the key set and refresh it periodically or when an unknown kid appears.
// pseudo: refresh keys at most once per 10 minutes
if (now - keysFetchedAt > 600000) {
keys = fetchJwks();
keysFetchedAt = now;
}Refresh on Unknown kid
If a token carries a kid not in the cache, the signing key may have rotated. Force a one-time refresh before rejecting, so legitimate new tokens are accepted promptly.
let key = keys[kid];
if (!key) { keys = fetchJwks(); key = keys[kid]; }
if (!key) reject('unknown key');Local Verification Beats Introspection
Self-contained JWTs can be verified locally with the cached public key, avoiding a network call per request. This is far faster than remote token introspection.
Short-Lived Decision Cache
You may cache the parsed claims for a token's lifetime keyed by the token hash, but the cache entry's TTL must never exceed the token's own exp.
ttl = Math.min(claims.exp - now, MAX_CACHE_TTL);
cache.set(hash(token), claims, ttl);The Revocation Tradeoff
Caching a decision means a revoked token might still be accepted until the cache entry expires. Keep this TTL short (seconds) when you support revocation, so the stale window stays tiny.
Spring's Built-In JWKS Cache
Spring's NimbusJwtDecoder already caches the JWKS internally and handles refresh, so for many apps you get caching for free just by configuring the JWK set URI.
JwtDecoder decoder = NimbusJwtDecoder
.withJwkSetUri(jwksUri)
.build();Measuring the Win
Always measure before and after. Track average validation latency and JWKS fetch count. Caching that does not move your metrics adds complexity for no gain.
Cache Stampede Protection
When a cached key expires, many requests may refresh at once. Use a single-flight lock so only one thread fetches the new JWKS while others wait.
if (refreshing) await refreshPromise;
else { refreshing = true; refreshPromise = fetchJwks(); }Distributed Caches
In a multi-instance deployment, a shared cache like Redis avoids each node refetching keys independently and keeps a consistent view of revocation state.
Quick Check
Test your understanding of caching token validation.
Recap
You learned to scale JWT validation with caching:
- Cache the JWKS public keys; refresh on unknown kid
- Local verification avoids per-request network calls
- Decision caches must respect the token's exp and stay short when revocation matters
- Use single-flight refresh and distributed caches at scale
Smart caching cuts latency while keeping security intact.
Belajar Java dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 12
- Pelajaran
- 48
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menyimpan Validasi Token dalam Tembolok untuk Skala Besar” gratis?
Ya — teks lengkap “Menyimpan Validasi Token dalam Tembolok untuk Skala Besar” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Spring Security 6 & JWT Authentication, upgrade ke CoddyKit PRO. Kursus Spring Security 6 & JWT Authentication mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menyimpan Validasi Token dalam Tembolok untuk Skala Besar”?
Pelajari cara mengurangi beban validasi JWT saat lalu lintas tinggi dengan menyimpan kunci JWKS dan hasil validasi dalam tembolok tanpa mengorbankan keamanan. Kamu berlatih Spring Security 6 & JWT Authentication dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Spring Security 6 & JWT Authentication?
Tidak diperlukan pengalaman sebelumnya. Spring Security 6 & JWT Authentication di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Menyimpan Validasi Token dalam Tembolok untuk Skala Besar” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Spring Security 6 & JWT Authentication ini?
Ya. Setiap pelajaran Spring Security 6 & JWT Authentication menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- JWT Berumur Pendek dan Siklus Penyegaran
- Daftar Hitam dan Daftar Putih JWT
- Pertimbangan Performa JWT
- Menyimpan Validasi Token dalam Tembolok untuk Skala Besar