![translation](https://cdn.durumis.com/common/trans.png)
Bu, AI tarafından çevrilen bir gönderidir.
JWT (JSON Web Token) nedir?
- tr Writing language: Korece
- •
-
tr
Referans Ülke: tr
Tüm ülkeler
- •
- BT
Dil Seç
Text summarized by durumis AI
- JSON Web Token (JWT), bilgileri güvenli bir şekilde iletmek için kullanılan şifreli bir jetondur.
- JWT, başlık, yük ve imza olmak üzere üç bölümden oluşur ve imza aracılığıyla verilerin bütünlüğü sağlanır.
- JWT, durum bilgisi için ayrı bir yönetime ihtiyaç duymadığı için dağıtılmış ortamlarda ölçeklenebilirlik sunar.
JWT nedir?
JSON Web Token(JWT), bilgileri güvenli bir şekilde JSON nesnesi olarak iletmenin bir yoludur ve kamuya açık bir standarttır (RFC 7519). Adından da anlaşılacağı gibi, gerekli bilgileri token'a yerleştirip şifreleyerek kullanır.
JWT, imzalı bir token (imzalı token) olarak vurgulanmaktadır. İmzalarken açık/özel anahtar çiftini kullanmak, imzanın yalnızca özel anahtara sahip tarafın token'ı imzaladığını garanti eder. Yani, anahtara sahip sunucu, bu token'ın geçerli olup olmadığını anlayabilir.
JWT Yapısı
JWT, Başlık (Header), Faydalı Yük (Payload) ve İmza (Signature) olmak üzere üç bölümden oluşur.
Her bölüm Base64 ile kodlanır ve noktalar (.) ile ayrılır.
Başlık
{
"alg": "HS256",
"typ": "JWT"
Başlık, iki ana bilgi içerir. Token türü (typ) ve kullanılan imza algoritması (alg). İmza algoritması, imzayı oluştururken ve doğrularken kullanılır.
typ "JWT" olarak belirtilir ve alg HMAC, SHA256 vb. olarak yazılır. Yukarıdaki örnekte, özel anahtar kullanarak HS256 algoritması kullanılıyor.
Faydalı Yük
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
Faydalı yük, token'a iletilmek istenen İddiaları içerir. Kullanıcı kimlik bilgileri veya token'la ilgili özellikler anahtar-değer şeklinde saklanır. Yani, geliştirici istediği gibi ekleyebilir!
Standart özelliklerine göre, anahtarın adı kısaca 3 harfle tanımlanır.
Kayıtlı iddialar aşağıdaki gibidir.
- iss (Yayımcı) : Token'ı yayınlayan (token'ı yayınlayanın benzersiz kimlik bilgilerini içerir)
- sub (Konu) : Token'ın hedeflediği varlık
- aud (Hedef Kitle) : Token'ı alan
- exp (Son Kullanım Tarihi) : Token'ın geçerlilik süresi (bu süreden sonra geçerliliğini yitirir)
- nbf (Geçerli Olma Zamanı) : Token'ın etkinleşme tarihi (bu tarihten önce token kullanılamaz)
- iat (Yayınlanma Zamanı) : Token'ın yayınlanma zamanı
- jti (JWT Kimliği) : JWT token kimliği (yayımcı birden fazlaysa bunları ayırt etmek için bir değer)
Bu değerler dışında, ihtiyaç duyulan başka değerler varsa eklenerek kullanılabilir.
Ancak faydalı yük, şifrelenmemiş imzalı bir değer olmadığı için hassas bilgileri içermez.
Kod çözülürse herkes tarafından görülebilir. jwt.io sitesinden de doğrudan kontrol edilebilir.
İmza
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
Başlık ve Faydalı yükü base64 olarak kodlanan değerler, ayırıcı noktalar (.) ile birleştirilir ve sunucunun sahip olduğu your-256-bit-secret özel anahtarı kullanılarak imzalanır.
Bu nedenle imza (İmza), yalnızca token'ı yayınlayan sunucunun özel anahtar kullanarak şifresini çözebilir.
Şifre çözme işlemini düşündüğümüzde, özel anahtar kullanarak İmza'nın şifresini çözüp ardından base64UrlEncode(header)'ın JWT'nin başlık değeriyle uyuşup uyuşmadığını ve base64UrlEncode(payload)'un uyuşup uyuşmadığını kontrol edebiliriz.
İmzayı hariç tutan başlık ve faydalı yük, yalnızca kodlanmış oldukları için içeriğin bilgilerini gösterir, ancak imza, bilgilerin bütünlüğünü ve güvenliğini korur.
JWT, gerekli tüm bilgileri kendi içinde bulunduran Self-contained'dir ve durumlu olması gereken oturumların dezavantajlarını gidermek için oluşturulmuş JWT, ayrı bir depolama alanı gerektirmez.
Sunucu tarafında oturumları sürdürmeye gerek yoktur, bu nedenle durumsuz oldukları için dağıtık sistemlerde veya mikro hizmet mimarisinde ölçeklenebilirlik yüksektir.
İmza, dijital imza ile korunur ve verilerin bütünlüğünü garanti eder.