Tink, web'de yaygın olarak kullanılan bir standart olan JWT'lerin oluşturulmasını ve doğrulanmasını destekler. Tink'in JWT uygulaması, Tink ekibinin kullanımı güvenli bulduğu ve Tink kitaplığına iyi uyum sağlayan, RFC 7519'da tanımlanan JWT standardının bir alt kümesini sunar.
Tink, standardın nadiren kullanılan veya doğru şekilde kullanılması zor olan kısımlarını desteklemez. Sınırlamalar şunlardır:
- Tink yalnızca JWS Compact Serialization biçimini destekler. JWS JSON Serialization ve JWE desteklenmez.
- Tink,
alg
başlığındakiNone
değerini desteklemez. - Tink yalnızca
typ
,alg
vekid
başlıklarını destekler. Diğer tüm başlıklar desteklenmez. - Tink, imza veya MAC doğrulanmadan önce jetonların ayrıştırılmasına izin vermez.
JWT İmzaları
Jetonlar farklı kuruluşlar tarafından oluşturulup doğrulanıyorsa JwtPublicKeySign
ve JwtPublicKeyVerify
temel öğeleriyle asimetrik anahtarlar kullanmanız gerekir.
Özel anahtar, jeton oluşturmak için, ortak anahtar ise jetonları doğrulamak için 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çin
JWT imzaları, Tink'teki normal dijital imzadan farklı anahtar türleri kullanır. Bunun nedeni, bazı meta verilerin (ör. alg
ve kid
) anahtarla birlikte saklanması gerekmesidir.
Çoğu kullanım alanı için JWT_ES256
kullanmanızı öneririz. Bu anahtar türüyle oluşturulan jetonlar her zaman kid
üstbilgisine sahiptir. kid
başlığı olmadan biraz daha kısa jetonlar tercih ediyorsanız JWT_ES256_RAW
anahtar türünü seçin. Desteklenen tüm anahtar türleri için Desteklenen Anahtar Türleri başlıklı makaleyi inceleyin.
Ortak anahtar grubu dağıtımı
Tink, ortak anahtar kümelerinin RFC 7517'de tanımlanan ve çoğu JWT kitaplığının anladığı JWK kümeleri biçimine dönüştürülmesine ve bu biçimden dönüştürülmesine olanak tanır.
Tink, ortak JWT anahtarlarının başka 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çermemesi, bu nedenle bu biçimlerin kullanılmasının daha fazla hataya yol açması ve anahtarların döndürülmesini zorlaştırmasıdır.
Ortak anahtar kümesini yalnızca bir kez paylaşmak yerine, ortak anahtar kümesini otomatik olarak güncellemenin bir yolunu sağlamak tercih edilir. (Aksi takdirde, yeni bir anahtara geçiş yapmak çok zordur.) Bu işlem genellikle herkese açık anahtar kümesinin güvenilir ve güvenli bir URL'de yayınlanmasıyla yapılır. Jetonları doğrulayan bir sunucunun, ortak anahtar kümesini söz konusu URL'den düzenli olarak (ör. günde bir kez) yeniden getirmesi gerekir. Anahtarın döndürülmesi için yeni ortak anahtarın, jetonları imzalamak üzere kullanılmadan en az bir gün önce ortak anahtar kümesine eklenmesi gerekir. Aksi takdirde, yeni özel anahtarla imzalanan yeni jetonlar, eski genel anahtar kümesini kullanmaya devam eden sunucular tarafından reddedilir.
JWT MAC
Tink, JwtMac
temel öğesiyle simetrik anahtarlarla JWT'yi de destekler. Bu öğeyi yalnızca jetonlar aynı tüzel kişi tarafından oluşturulup doğrulanıyorsa kullanın. Bu temel tarafından desteklenen algoritmalar HS256
, HS384
ve HS512
'dir.
Anahtar türü seçin
JWT MAC anahtar türleri, normal MAC anahtar türlerinden farklıdır. Çoğu kullanım alanı için JWT_HS256
kullanılmasını öneririz.
Örnek kullanım alanları
JWT oluşturmak ve doğrulamak istiyorum başlıklı makaleyi inceleyin.