JSON Web Simgesi (JWT) | |
İlk sürüm tarihi | Mayıs 2015 |
---|---|
Yazar | M. Jones, J. Bradley ve N. Sakimura |
geliştirici | IETF |
standartlar | RFC 7519 |
İnternet sitesi | jwt.io |
JSON Web Token (JWT), RFC 7519'da tanımlanan açık bir standarttır . Birden çok taraf arasında güvenli jeton alışverişi sağlar. Değişimin bu güvenliği , verilerin bütünlüğünün ve orijinalliğinin doğrulanmasında yansıtılır . HMAC veya RSA algoritması tarafından gerçekleştirilir .
Bir jeton üç bölümden oluşur:
Bunları deşifre etmek için çevrimiçi araçlar var.
Aklında
{"typ": "jwt", "alg": "HS512"}yük
{"name":"Wikipedia", "iat":1525777938}Yukarıdaki örnekte, jetonun bir JSON Web Token (JWT) olduğunu ve imzalama için kullanılan algoritmanın HMAC-SHA512 olduğunu başlıkta görüyoruz.
İmzayı alabilmek için öncelikle header ve payload'ı RFC 4648'de tanımlanan Base64url ile ayrı ayrı kodlamamız gerekiyor. Daha sonra bunları nokta ile ayırarak birleştiriyoruz. Seçilen algoritma ile bu sonucun imzasını alıyoruz. Bu imza sonuca aynı şekilde eklenir (kodlanır ve nokta ile ayrılır).
Base64url kodlaması için '=' doldurma karakterinin zorunlu olmadığını ve bir URL'de iletimi kolaylaştırmak için JSON Web Simgesinin oluşturulmasında kullanılmayacağını unutmayın.
Yukarıdaki örnekte, bir JSON Web Simgesi edinmenin farklı adımları aşağıda verilmiştir.
Başlık kodlaması
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9Yük kodlaması
eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQİki elemanın birleştirilmesi, bir nokta ile ayrılması
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9.eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQHMAC-SHA512 algoritması ile mesaj doğrulama kodunun alınması .
HMACSHA512(concatenation, 'ma super clé secrète')Kod kodlaması (her zaman Base64url ile )
iu0aMCsaepPy6ULphSX5PT32oPvKkM5dPl131knIDq9Cr8OUzzACsuBnpSJ_rE9XkGjmQVawcvyCHLiM4Kr6NAİki elemanın birleştirilmesi, bir nokta ile ayrılması
eyJ0eXAiOiAiand0IiwgImFsZyI6ICJIUzUxMiJ9.eyJuYW1lIjoiV2lraXBlZGlhIiwiaWF0IjoxNTI1Nzc3OTM4fQ.iu0aMCsaepPy6ULphSX5PT32oPvKkM5dPl131knIDq9Cr8OUzzACsuBnpSJ_rE9XkGjmQVawcvyCHLiM4Kr6NAJWT spesifikasyonu, Claims adı verilen çeşitli standart alanlar (veya parametreler) sunar :
Bu parametrelerin tümü isteğe bağlıdır. Basitçe bir belirtecin daha kesin olarak tanımlanmasına ve güvenliğini güçlendirmesine izin verirler ( örneğin bir belirtecin ömrünü sınırlayarak).
JWT'nin uygulanması, birçok programlama dilinde bulunan çok sayıda kitaplık aracılığıyla yapılabilir.
JWT kütüphanesi bulunan programlama dillerinin kapsamlı olmayan bir listesi: .NET , 1C , Ada , C , C ++ , Clojure , Crystal , D , Delphi , Elixir , Erlang , Go , Groovy , Haskell , Haxe , Java , JavaScript , kdb + / Q , Kotlin , Lua , Node.js , Objective-C , Perl , PHP , PostgreSQL , Python , Ruby , Rust , Scala , Swift .
JWT'yi tanımlayan RFC 7519 spesifikasyonunu kendiniz de uygulamak mümkündür .
JWT'ler güvenli bir kimlik doğrulama aracıdır. Bununla birlikte, dikkatli bir şekilde ele alındığında önlenebilecek bazı güvenlik açıkları vardır. İşte kapsamlı olmayan bir liste: