Tink, web'de yaygın olarak kullanılan bir standart olan JWT'lerin üretilmesini ve doğrulanmasını destekler. Tink'in JWT uygulaması, RFC 7519'da tanımlanan JWT standardının bir alt kümesini sağlar. Tink ekibi bunu güvenli olarak kabul eder ve Tink kitaplığına uygundur.
Tink, standardın nadiren kullanılan veya doğru şekilde kullanılması zor bölümlerini desteklemez. Sınırlamalar şunlardır:
- Tink yalnızca JWS Kompakt Serileştirme biçimini destekler. JWS JSON Serializasyonu ve JWE desteklenmez.
- Tink,
alg
üstbilgisindekiNone
değerini desteklemiyor. - Tink yalnızca
typ
,alg
vekid
başlıklarını destekler. Diğer üstbilgilerin hiçbiri desteklenmez. - Tink, imza veya MAC doğrulanmadan jetonların ayrıştırılmasına izin vermez.
JWT İmzaları
Jetonlar farklı varlıklar tarafından oluşturulup doğrulanıyorsa JwtPublicKeySign
ve JwtPublicKeyVerify
temel öğeleriyle asimetrik anahtarlar kullanmanız gerekir.
Jetonları oluşturmak için özel anahtar, doğrulamada ise ortak anahtar kullanılır. Bu temel öğeler tarafından desteklenen algoritmalar şunlardır: ES256
, ES384
, ES512
, RS256
, RS384
, RS512
, PS256
, PS384
ve PS512
.
Anahtar türü seçme
JWT imzaları, Tink'teki normal dijital imzadan farklı anahtar türleri kullanır. Bazı meta verilerin (alg
ve kid
gibi) anahtarla birlikte depolanması gerektiği için bu gereklidir.
Çoğu kullanım alanı için JWT_ES256
kullanmanızı öneririz. Bu anahtar türüyle oluşturulan jetonların her zaman bir kid
başlığı vardır. kid
başlığı olmadan biraz daha kısa jetonlar tercih ederseniz JWT_ES256_RAW
anahtar türünü seçin.
Desteklenen tüm anahtar türleri için Desteklenen Anahtar Türleri bölümünü inceleyin.
Ortak anahtar kümesi dağıtımı
Tink, ortak anahtar kümesinin, çoğu JWT kitaplığının anladığı RFC 7517'de tanımlanan JWK Kümeleri biçimine dönüştürülmesine olanak tanır.
Tink, genel JWT anahtarlarının başka herhangi bir biçimde dışa aktarılmasını desteklemez. Bunun nedeni, diğer biçimlerin doğrulamada kullanılacak alg
ve kid
meta verilerini içermemesidir. Bu durum, bunların kullanımını hataya daha açık hale getirir ve anahtarların döndürülmesini zorlaştırabilir.
Ortak anahtar kümesinin yalnızca bir kez paylaşılması değil, aynı zamanda ortak anahtar kümesinin otomatik olarak güncellenmesinin bir yolunun sağlanması tercih edilir. (Aksi halde, yeni bir anahtara geçiş yapmak çok zordur.) Bu işlem genellikle ortak anahtar kümesini güvenilir ve güvenli bir URL'de yayınlayarak yapılır. Jetonları doğrulayan bir sunucunun daha sonra ortak anahtar kümesini bu URL'den periyodik olarak yeniden alması gerekir, örneğin günde bir kez. Anahtara rotasyon uygulamak için yeni ortak anahtarın, jetonları imzalamak için kullanılmadan en az bir gün önce ortak anahtar kümesine eklenmesi gerekir. Aksi takdirde, yeni özel anahtarla imzalanan yeni jetonlar, eski ortak anahtar kümesini kullanan sunucular tarafından reddedilir.
JWT MAC
Tink, JwtMac
temelli simetrik anahtarlarla JWT'yi de destekler. Bu temel öğeyi yalnızca jetonlar aynı varlık tarafından oluşturulup doğrulanıyorsa kullanın. Bu temel öğe tarafından desteklenen algoritmalar HS256
, HS384
ve HS512
'dir.
Anahtar türü seçme
JWT MAC anahtarı türleri, normal MAC anahtarı türlerinden farklıdır. Çoğu kullanım alanı için JWT_HS256
kullanmanızı öneririz.