JSON Web Token
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.[1] 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.[2] header = '{"alg":"HS256","typ":"JWT"}'
Payload, taraflar arasındaki benzersiz bilgileri içerir. payload = '{"loggedInAs":"admin","iat":1422779638}'
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ımKimlik 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 Authorization: Bearer eyJhbGci...<snip>...yu5CSpyHI Bu durumsuz (stateless) kimlik doğrulama yöntemidir ve kullanıcı durumu asla sunucu belleğine kaydedilmez. Sunucu daima Standart etiketlerAş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:
Geçersiz Hale GetirmeJWT'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
Dezavantajlar
Kaynakça
Dış bağlantılar
|
Portal di Ensiklopedia Dunia