RSA, EC ve simetrik anahtarlar farklı üyeler kullanır. Güvenli bir uygulama yalnız JSON biçimini değil, anahtarın kaynağını, türünü, boyutunu ve hangi amaçla kullanılacağını da doğrular.
RFC 7517 JSON Web Key: Hızlı Bakış
| Standart | RFC 7517 |
|---|---|
| Tek anahtar | JWK |
| Anahtar kümesi | JWKS ve keys dizisi |
| Yaygın alanlar | kty, kid, use, key_ops ve alg |
| Temel risk | Yanlış kaynaktan veya yanlış amaçla anahtar seçimi |
RFC 7517 JSON Web Key Neden Önemlidir?
RFC 7517 JSON Web Key, dağıtık kimlik sistemlerinde public anahtarların standart bir biçimde yayımlanmasını sağlar. Yetkilendirme sunucusu yeni bir imza anahtarı kullandığında kaynak sunucular JWKS üzerinden ilgili public anahtarı edinebilir.
Ancak JWKS adresinden bir anahtar alınabilmesi onun güvenilir olduğu anlamına gelmez. Anahtar kümesi önceden güvenilen issuer ile ilişkilendirilmeli, HTTPS üzerinden alınmalı ve istek yapan tokenın belirlediği kontrolsüz bir adrese gidilmemelidir.
RFC 7517 JSON Web Key İçin 10 Kritik Güvenlik Kontrolü
1. JWKS Kaynağını Issuer ile Sabitleyin
Anahtar kümesini yalnız önceden güvenilen HTTPS adresinden alın. Token içindeki jku veya benzer URL değerlerini doğrudan takip etmeyin.
2. kty ve Algoritma Uyumunu Denetleyin
RSA anahtarını EC algoritmasıyla veya imza anahtarını uyumsuz bir yöntemle kullanmayın. Anahtar türü ile algoritma eşleşmelidir.
3. kid Değerini Yalnız Seçici Olarak Kullanın
kid bir kimlik doğrulama kanıtı değildir. Yalnız güvenilir küme içinde doğru anahtar adayını seçmeye yardımcı olur.
4. use ve key_ops Kısıtlarını Uygulayın
İmza amacıyla yayımlanmış anahtarı şifre çözmede kullanmayın. use ile key_ops alanları çelişiyorsa anahtarı reddedin.
5. Private Anahtar Üyelerini Yayınlamayın
Herkese açık JWKS yalnız public parametreleri içermelidir. d, p, q veya simetrik k gibi gizli üyelerin API yanıtına ya da loglara sızmasını engelleyin.
6. JWKS Önbelleğini Kontrollü Yönetin
Cache başlıklarını, yenileme aralığını ve acil anahtar değişimi davranışını belirleyin. Her istek için uzak çağrı yapmak da anahtarları süresiz saklamak da risklidir.
7. Rotasyonda Örtüşme Süresi Tanımlayın
Yeni anahtarı imzalamada kullanmadan önce doğrulayıcı servislere yayınlayın. Eski anahtarı mevcut tokenların süresi tamamlanmadan kaldırmayın.
8. Anahtar Boyutu ve Eğri Politikasını Uygulayın
Kütüphanenin kabul ettiği her anahtarı otomatik onaylamayın. Minimum RSA boyutunu ve izin verilen elliptic curve seçeneklerini açıkça tanımlayın.
9. JWK Thumbprint Değerini Doğru Üretin
Anahtar bağlama gereken akışlarda RFC 7638 uyumlu thumbprint kullanın. JSON alan sırasına dayalı özel parmak izi yöntemleri oluşturmayın.
10. Kötü Amaçlı Anahtar Kümelerini Test Edin
Çift kid, aşırı büyük JWKS, bilinmeyen kty, eksik parametre ve private anahtar sızıntısı örneklerini otomatik testlere ekleyin.
RFC 7517 JSON Web Key Uygulama Örneği
{
"keys": [
{
"kty": "EC",
"crv": "P-256",
"x": "...",
"y": "...",
"use": "sig",
"key_ops": ["verify"],
"kid": "signing-2026-08"
}
]
}
Bu örnekte yalnız imza doğrulaması için kullanılacak EC public anahtarı yayımlanmaktadır. x ve y public parametrelerdir. Private anahtar parametresi bu yanıtta bulunmamalıdır.
Güvenli Anahtar Rotasyonu Nasıl Yapılır?
- Yeni public anahtarı JWKS içinde yayımlayın.
- Doğrulayıcı servislerin yeni kümeyi alabildiğini izleyin.
- Yeni private anahtarı imzalama işlemlerinde kullanmaya başlayın.
- Eski anahtarı mevcut tokenların süresi dolana kadar doğrulamada tutun.
- Geçiş tamamlandıktan sonra eski anahtarı kontrollü biçimde kaldırın.
Ağ veya önbellek sorunu sırasında doğrulayıcıların nasıl davranacağı önceden belirlenmelidir. Anahtar bulunamadığında sistem bilinmeyen anahtarı kabul etmemeli ve kontrolsüz biçimde farklı bir JWKS adresine yönelmemelidir.
Sık Yapılan Uygulama Hataları
- Tokenın belirlediği jku adresini kontrolsüz çağırmak
- kid değerini güven veya kimlik doğrulama kanıtı sanmak
- Private JWK üyelerini public uç noktada yayımlamak
- Eski anahtarı tokenların süresi dolmadan kaldırmak
- use ve key_ops kısıtlarını yok saymak
İlgili Tekno Türkiye İçerikleri
RFC 7662 Token Introspection, RFC 9449 DPoP ve RFC 8414 Authorization Server Metadata rehberlerini de inceleyebilirsiniz.
Sık Sorulan Sorular
JWK ile JWKS arasındaki fark nedir?
JWK tek anahtarı, JWKS ise keys dizisi içindeki bir anahtar kümesini temsil eder.
kid zorunlu mudur?
Her durumda zorunlu değildir. Anahtar seçimini kolaylaştırır fakat tek başına güven sağlamaz.
JWKS private anahtar içerebilir mi?
Herkese açık JWKS uç noktası yalnız public anahtar parametrelerini yayımlamalıdır.
Anahtar rotasyonu sırasında eski anahtar hemen kaldırılır mı?
Hayır. Eski anahtar, onunla imzalanmış geçerli tokenların yaşam süresi tamamlanana kadar doğrulamada tutulmalıdır.
Essential Uygulama Özeti
RFC 7517 JSON Web Key uygulanırken anahtar kaynağı, anahtar türü ve kullanım amacı birlikte doğrulanmalıdır. RFC 7517 JSON Web Key içindeki kid değeri yalnız bir seçicidir ve güven kanıtı değildir. Her RFC 7517 JSON Web Key dağıtımı anahtar rotasyonu ve bozuk JWKS testleri içermelidir. Güvenli bir RFC 7517 JSON Web Key uygulaması private anahtar üyelerini public uç noktalarda yayımlamaz.
Resmî Kaynaklar
Sonuç
RFC 7517 JSON Web Key, güvenilir JWKS kaynağı, doğru anahtar seçimi ve planlı rotasyonla uygulandığında dağıtık kimlik sistemlerindeki anahtar yönetimini güçlendirir.
