Bu madde, ; zira herhangi bir maddeden bu maddeye verilmiş bir bağlantı yoktur. (Eylül 2022) |
| Kısaltma | JWT |
|---|---|
| Durum | |
| İlk yayınlanma | 28 Aralık 2010) |
| Son sürüm | RFC 7519 Mayıs 2015 |
| Organizasyon | IETF |
| Komisyon | (IEGS) |
| Yazar(lar) |
|
| Temel standartlar |
|
| Etki Alanı | |
| Websitesi | datatracker.ietf.org/doc/html/rfc7519 |
JSON Web Token (JWT), tarafların birbirleri arasındaki veri alışverişini ve bunun doğrulamasını sağlayan JSON tabanlı RFC 7519'de tanımlanmış açık bir standarttır. Örneğin bir sunucu, kullanıcının yönetici ayrıcalıklarına sahip olduğunu belirten bir anahtar (token) oluşturabilir ve bunu kullanıcıya gönderebilir. Kullanıcı daha sonra bu anahtar ile kendisine tanımlanmış olan yönetici yetkisini bir istemcide kullanabilir ve bütün taraflar tarafından yetkisi doğrulanabilir.
Yapı
| ]JSON Web Token'ları genellikle üç bölümden oluşur; header (başlık), payload (yük) ve signature (imza). Header, oluşturulacak imzada hangi algoritmanın kullanılacağını belirtir.
header = '{"alg":"HS256","typ":"JWT"}' HS256 algoritmanın HMAC-SHA256 ile imzalandığını gösterir.
Payload, taraflar arasındaki benzersiz bilgileri içerir.
payload = '{"loggedInAs":"admin","iat":1422779638}' iat, anahtarın oluşturulma zamanını içeren bilgiyi taşır ve JWT'de önerilen bir kullanımdır.
Signature ise header ve payload'ın base64url (RFC 4648 §5) ile kodlanıp nokta simgesiyle bir araya getirilmesinin ardından bir gizli anahtarla şifrelenmesiyle ortaya çıkar.
key = 'secretkey' unsignedToken = encodeBase64Url(header) + '.' + encodeBase64Url(payload) signature = HMAC-SHA256(key, unsignedToken)
Son olarak üç bölümün bir araya gelip, signature'ün de base64url ile kodlanmasıyla anahtar (token) ortaya çıkar.
token = encodeBase64Url(header) + '.' + encodeBase64Url(payload) + '.' + encodeBase64Url(signature) # oluşan anahtar: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI
Çıktısı HTML ve HTTP ortamlarına kolayca entegre edilebilen, base64url ile kodlanmış güvenilir karakterlerden oluşmaktadır. Tipik kriptografik algoritmaları olarak HMAC ile birlikte SHA-256 (HS256) ve RSA ile birlikte SHA-256 (RS256) kullanılmaktadır.
Kullanım
| ]Kimlik doğrulaması sırasında, kullanıcının gönderdiği bilgiler de doğrulandıysa bir anahtar (token) oluşturulup kullanıcıya döndürülür ve bu lokalde saklanır (örneğin çerezler ya da web storage).
Kullanıcı doğrulaması gerektiren durumlarda, istemci tarafından sunucuya Bearer şemasına sahip Authorization header'ı gönderilir. Header içeriği aşağıdaki gibi görünecektir:
Authorization: Bearer eyJhbGci...<snip>...yu5CSpyHI
Bu durumsuz (stateless) kimlik doğrulama yöntemidir ve asla sunucu belleğine kaydedilmez. Sunucu daima Authorization header'ından gönderilen JWT'nin geçerli olup olmadığını kontrol eder ve geçerliyse kullanıcının korumalı kaynaklara erişmesine izin verilir. Tüm bilgiler JWT'nin içerisinde olduğundan veritabanının birden fazla sorgulanma ihtiyacını azaltır.
Standart etiketler
| ]Aşağıda JWT'nin IETF taslağında belirtilen, JWT'nin payload kısmında doğrulama amacıyla kullanılabilecek, önerilen standart etiketler bulunmaktadır:
| etiket | isim | açıklama |
|---|---|---|
iss | Verici ("issuer") | JWT'yi oluşturan/veren kuruluşun adı. |
sub | Alıcı ("subject") | JWT'nin alıcısını belirten eşsiz değer. |
aud | Hedef kitle ("audience") | JWT'yi yürütecek tarafı belirten değer. Eğer değer yürütmeciyle eşleşmiyorsa JWT reddedilir. |
exp | Bitiş zamanı ("expiration") | JWT'nin hangi süreye kadar geçerli olduğunu belirten değer. Sayısal formatta olmalıdır. |
nbf | Öncesi olamaz ("not before") | JWT'nin hangi süreden önce geçerli olamayacağını belirtir. Sayısal formatta olmalıdır. |
iat | Oluşturulma zamanı ("issued at") | Anahtarın oluşturulma zamanını içeren bilgiyi taşır. Sayısal formatta olmalıdır. |
jti | JWT ID | Büyük/küçük harfe duyarlı, JWT'yi tanımlayan eşsiz anahtar kodu. |
Geçersiz Hale Getirme
| ]JWT'ler aslında birkaç şekilde uzaktan geçersiz hale getirilebilir. Bu yöntemlerden ilki jeton için bir ömür tanımlamaktır. Bu süre dolduğunda anahtar reddedilir ve geçerliliğini yitirmiş olur. Eğer sistem kullanıcısı, kendisi için önceden oluşturulmuş bir anahtarın artık işe yaramaması gerektiğine karar verirse bunu uzaktan etkisiz hale getirebilmek isteyecektir. Böyle bir senaryoda anahtarlar için oldukça kısa ömür tanımlanmalıdır. Anahtar ömrü dolunca, client mekanizması, yenileme amacıyla eski anahtarı da ileterek server tarafından bir anahtar ister. Server, eski anahtarın geçerliliğini kontrol eder. Güvenilirse kara listesinde olup olmadığına bakar. Kara listede değilse aynı anahtardan yeni bir tane oluşturup gönderir. Böyle bir işleyişte, kullanıcı sisteme başka bir cihazdan erişip bir anahtarı kara listeye gönderecek olursa anahtar bir sonraki yenileme periyodunda artık yenilenmez ve geçersiz hale gelmiş olur. Bu yöntemde bir anahtar en kötü ihtimalle ömrü kadar (veya daha kısa) bir süre sonra uzaktan geçersiz kılınabilir.
Avantajlar
| ]- JWT'ler durumsuz (stateless) oldukları için kullanıcı elde edilmesi için veritabanı sorgulamasına gerek kalmaz.
- Oturum yönetimi, çerezler kullanılmaksızın yapılabilir.
- Tek bir anahtar, birden fazla arka uçta (backend) kullanılabilir.
- Veritabanı sorgulaması ya da dosya sistemi kullanımı gerektirmediği için performanslıdır.
Dezavantajlar
| ]- JWT'ler durumsuz oldukları için, sunucuda durum tutulmadığı sürece anahtarları gerektiğinde geçersiz kılmanın bir yolu yoktur.
- JWT gizli anahtarı yeterince güçlü değil ise, kırılması daha kolay olur.
Kaynakça
| ]- ^ "JSON Web Token (JWT)". ietf.org. 27 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Mart 2019.
- ^ "Introduction to JSON Web Tokens". 20 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Mart 2019.
- ^ John, Bradley,; Nat, Sakimura,; Michael, Jones,. "JSON Web Token (JWT)". tools.ietf.org (İngilizce). 16 Haziran 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 20 Aralık 2017.
Dış bağlantılar
| ]- jwt.io, JWT için araçlar ve kaynaklar sunan bir website. (İngilizce)
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Vikipedi ozgur ansiklopedi Bu madde oksuz maddedir zira herhangi bir maddeden bu maddeye verilmis bir baglanti yoktur Lutfen ilgili maddelerden bu sayfaya baglanti vermeye calisin Eylul 2022 JSON Web TokenKisaltmaJWTDurumIlk yayinlanma28 Aralik 2010 14 yil once 2010 12 28 Son surumRFC 7519 Mayis 2015OrganizasyonIETFKomisyonIEGSYazar lar Michael B Jones Microsoft John Bradley Nat SakimuraTemel standartlarJSON JWE JWS Etki AlaniWebsitesidatatracker ietf org doc html rfc7519 JSON Web Token JWT taraflarin birbirleri arasindaki veri alisverisini ve bunun dogrulamasini saglayan JSON tabanli RFC 7519 de tanimlanmis acik bir standarttir Ornegin bir sunucu kullanicinin yonetici ayricaliklarina sahip oldugunu belirten bir anahtar token olusturabilir ve bunu kullaniciya gonderebilir Kullanici daha sonra bu anahtar ile kendisine tanimlanmis olan yonetici yetkisini bir istemcide kullanabilir ve butun taraflar tarafindan yetkisi dogrulanabilir Yapi span JSON Web Token lari genellikle uc bolumden olusur header baslik payload yuk ve signature imza Header olusturulacak imzada hangi algoritmanin kullanilacagini belirtir header alg HS256 typ JWT HS256 algoritmanin HMAC SHA256 ile imzalandigini gosterir Payload taraflar arasindaki benzersiz bilgileri icerir payload loggedInAs admin iat 1422779638 iat anahtarin olusturulma zamanini iceren bilgiyi tasir ve JWT de onerilen bir kullanimdir Signature ise header ve payload in base64url RFC 4648 5 ile kodlanip nokta simgesiyle bir araya getirilmesinin ardindan bir gizli anahtarla sifrelenmesiyle ortaya cikar key secretkey unsignedToken encodeBase64Url header encodeBase64Url payload signature HMAC SHA256 key unsignedToken Son olarak uc bolumun bir araya gelip signature un de base64url ile kodlanmasiyla anahtar token ortaya cikar token encodeBase64Url header encodeBase64Url payload encodeBase64Url signature olusan anahtar eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9 gzSraSYS8EXBxLN oWnFSRgCzcmJmMjLiuyu5CSpyHI Ciktisi HTML ve HTTP ortamlarina kolayca entegre edilebilen base64url ile kodlanmis guvenilir karakterlerden olusmaktadir Tipik kriptografik algoritmalari olarak HMAC ile birlikte SHA 256 HS256 ve RSA ile birlikte SHA 256 RS256 kullanilmaktadir Kullanim span Kimlik dogrulamasi sirasinda kullanicinin gonderdigi bilgiler de dogrulandiysa bir anahtar token olusturulup kullaniciya dondurulur ve bu lokalde saklanir ornegin cerezler ya da web storage Kullanici dogrulamasi gerektiren durumlarda istemci tarafindan sunucuya Bearer semasina sahip Authorization header i gonderilir Header icerigi asagidaki gibi gorunecektir Authorization Bearer eyJhbGci lt snip gt yu5CSpyHI Bu durumsuz stateless kimlik dogrulama yontemidir ve en asla sunucu bellegine kaydedilmez Sunucu daima Authorization header indan gonderilen JWT nin gecerli olup olmadigini kontrol eder ve gecerliyse kullanicinin korumali kaynaklara erismesine izin verilir Tum bilgiler JWT nin icerisinde oldugundan veritabaninin birden fazla sorgulanma ihtiyacini azaltir Standart etiketler span Asagida JWT nin IETF taslaginda belirtilen JWT nin payload kisminda dogrulama amaciyla kullanilabilecek onerilen standart etiketler bulunmaktadir etiket isim aciklamaiss Verici issuer JWT yi olusturan veren kurulusun adi sub Alici subject JWT nin alicisini belirten essiz deger aud Hedef kitle audience JWT yi yurutecek tarafi belirten deger Eger deger yurutmeciyle eslesmiyorsa JWT reddedilir exp Bitis zamani expiration JWT nin hangi sureye kadar gecerli oldugunu belirten deger Sayisal formatta olmalidir nbf Oncesi olamaz not before JWT nin hangi sureden once gecerli olamayacagini belirtir Sayisal formatta olmalidir iat Olusturulma zamani issued at Anahtarin olusturulma zamanini iceren bilgiyi tasir Sayisal formatta olmalidir jti JWT ID Buyuk kucuk harfe duyarli JWT yi tanimlayan essiz anahtar kodu Gecersiz Hale Getirme span JWT ler aslinda birkac sekilde uzaktan gecersiz hale getirilebilir Bu yontemlerden ilki jeton icin bir omur tanimlamaktir Bu sure doldugunda anahtar reddedilir ve gecerliligini yitirmis olur Eger sistem kullanicisi kendisi icin onceden olusturulmus bir anahtarin artik ise yaramamasi gerektigine karar verirse bunu uzaktan etkisiz hale getirebilmek isteyecektir Boyle bir senaryoda anahtarlar icin oldukca kisa omur tanimlanmalidir Anahtar omru dolunca client mekanizmasi yenileme amaciyla eski anahtari da ileterek server tarafindan bir anahtar ister Server eski anahtarin gecerliligini kontrol eder Guvenilirse kara listesinde olup olmadigina bakar Kara listede degilse ayni anahtardan yeni bir tane olusturup gonderir Boyle bir isleyiste kullanici sisteme baska bir cihazdan erisip bir anahtari kara listeye gonderecek olursa anahtar bir sonraki yenileme periyodunda artik yenilenmez ve gecersiz hale gelmis olur Bu yontemde bir anahtar en kotu ihtimalle omru kadar veya daha kisa bir sure sonra uzaktan gecersiz kilinabilir Avantajlar span JWT ler durumsuz stateless olduklari icin kullanici en elde edilmesi icin veritabani sorgulamasina gerek kalmaz Oturum yonetimi cerezler kullanilmaksizin yapilabilir Tek bir anahtar birden fazla arka ucta backend kullanilabilir Veritabani sorgulamasi ya da dosya sistemi kullanimi gerektirmedigi icin performanslidir Dezavantajlar span JWT ler durumsuz olduklari icin sunucuda durum en tutulmadigi surece anahtarlari gerektiginde gecersiz kilmanin bir yolu yoktur JWT gizli anahtari yeterince guclu degil ise kirilmasi daha kolay olur Kaynakca span JSON Web Token JWT ietf org 27 Mart 2019 tarihinde kaynagindan arsivlendi Erisim tarihi 8 Mart 2019 Introduction to JSON Web Tokens 20 Ocak 2019 tarihinde kaynagindan arsivlendi Erisim tarihi 8 Mart 2019 John Bradley Nat Sakimura Michael Jones JSON Web Token JWT tools ietf org Ingilizce 16 Haziran 2019 tarihinde kaynagindan arsivlendi Erisim tarihi 20 Aralik 2017 Dis baglantilar span jwt io JWT icin araclar ve kaynaklar sunan bir website Ingilizce Kategori Bilgisayar erisim kontroluGizli kategoriler Oksuz maddeler Eylul 2022RFC sihirli baglantisini kullanan sayfalar
