JWT: Nedir? Tanımı ve web güvenliğindeki kullanımları

Son Güncelleme: 26 Eylül 2024

El JSON Web Simgesi, yaygın olarak bilinen J.W.T., taraflar arasında bilgilerin güvenli bir şekilde iletilmesini sağlayan açık bir standarttır. RFC 7519 spesifikasyonu kapsamında tanımlanmıştır ve öncelikli olarak web güvenliği bağlamında kullanıcıların kimliğini doğrulamak ve veri bütünlüğünü sağlamak için kullanılır.

JWT'nin yapısı

Un J.W.T. Üç bölümden oluşmaktadır ve kodlanmıştır Base64Url, noktalarla ayrılmış:

  • Başlık: Kullanılan tür ve imza algoritması gibi belirteç hakkında meta veriler içerir. Örneğin:
{"alg": "HS256", "typ": "JWT"}
  • Taşıma kapasitesi: Bu bölüm, bir varlık (genellikle kullanıcı) hakkındaki ifadeler ve ek meta verilerden oluşan iddiaları içerir. Örneğin:
  • {"sub": "1234567890", "name": "John Doe", "admin": true}
  • İmza: Token'ın bütünlüğünü ve ihraççıların gerçekliğini doğrulamak için kullanılır. İmzayı hesaplamak için, başlık y el yük, aşağıdaki gibi bir algoritma kullanılarak bağlanır ve imzalanır: HMAC SHA256.
  • Örneğin, imza şu şekilde üretilir:

    HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      your-256-bit-secret)

    JWT'deki iddia türleri

    İddialar veya iddia Bunlar genel olarak üç kategoriye ayrılır:

    Kayıtlı talepler

    Bunlar, JWT'lerde kullanılması önerilen önceden tanımlanmış bir dizi iddiadır. Bunlar şunları içerir:

    • iss: Token'ın yayıncısı.
    • alt: Jetonun konusu.
    • aud:Token'ın hedef kitlesi.
    • exp: Token'ın son kullanma tarihi.
    • nbf: Jetonun geçerli olduğu zamanı gösterir.

    Kamu şikayetleri

    İddialar kullanıcılar tarafından isteğe göre tanımlanabilir, ancak isim çakışmalarından kaçınılmalıdır. Örneğin:

    • kullanıcı adı: Kimliği doğrulanmış kişinin kullanıcı adı.
    • rol: Kullanıcı rolü (yönetici, normal kullanıcı, vb.).

    Özel iddialar

    Özel talepler, kayıtlı veya kamuya açık taleplere müdahale etmeyecek şekilde taraflar arasında bilgi paylaşımı amacıyla oluşturulur.

    JWT web güvenliğinde nasıl çalışır?

    Bir iş akışının J.W.T. genellikle şu adımları izleyin:

    kimlik doğrulama

    İşlem, bir kullanıcının genellikle bir oturum açma formu aracılığıyla başarıyla kimlik doğrulaması yapmasıyla başlar. Kullanıcı doğrulandıktan sonra sunucu bir J.W.T. Kullanıcının oturumu hakkında bilgi içeren.

    Jeton Üretimi

    Kimlik doğrulamasından sonra sunucu bir J.W.T. ve bunu istemciye yanıt olarak gönderir. Bu belirteç, yerel depolama veya tarayıcıda çerez olarak.

    Jetonun Gönderilmesi

    Her bir sonraki istekte, istemci şunu gönderir: J.W.T. sunucuya, genellikle başlık aracılığıyla Yetki:

    Authorization: Bearer 

    Jeton Doğrulaması

    Sunucu belirteci alır ve gizli anahtar veya sertifikayı kullanarak doğrular. Belirteç geçerliyse ve süresi dolmamışsa, korunan kaynaklara erişim izni verilir.

    JWT kullanmanın avantajları

    El kullanımı J.W.T. Web uygulamalarında çeşitli avantajları vardır:

    Ölçeklenebilirlik

    Jardines de Viveros J.W.T. Otonomdurlar, yani sunucuların bellekte bir kullanıcı oturumu tutması gerekmez. Bu, birden fazla sunucu örneğinin oturum durumunu kontrol etmek için veritabanına erişmeye gerek kalmadan istekleri işleyebilmesi sayesinde ölçeklenebilirliği artırır.

    birlikte çalışabilirlik

    Açık bir standart olması nedeniyle, J.W.T. Farklı programlama dilleri ve platformları arasında çalışabilir, çeşitli sistem ve hizmetlere entegrasyonu kolaylaştırır.

    güvenlik

    İmzalama yeteneği J.W.T. İçeriğin değiştirilmediğinden emin olunur ve şifreleme algoritmalarının kullanımı, gerektiğinde gizlilik sağlayarak ek bir güvenlik katmanı ekler.

    JWT kullanmanın dezavantajları

    Avantajlarına rağmen, uygulamada dezavantajları da vardır J.W.T.:

    Jeton Boyutu

    Jardines de Viveros J.W.T. Özellikle içlerinde çok fazla bilgi varsa büyük boyutlara ulaşabilirler. yükHer istekle birlikte gönderilirse bu durum ağ yükünün artmasına neden olabilir.

    Son Kullanma Tarihi ve İptal

    Bir kez yayınlandıktan sonra, J.W.T. Süresi dolana kadar geçerlidir. Bir kullanıcının iptal edilmesi gerekiyorsa (örneğin, hesabı ele geçirilmişse), sunucunun iptal listeleri gibi ek bir mekanizma uygulaması gerekir, çünkü belirteç süresi dolana kadar kullanılmaya devam edebilir.

    Anahtar yönetimi

    güvenliği J.W.T. Bu, token'ı imzalamak için kullanılan anahtarın gücüne bağlıdır. Bu anahtarı güvende tutmak ve periyodik olarak değiştirmek, uygulama güvenliği açısından hayati önem taşır.

    JWT'nin Yaygın Kullanımları

    Jardines de Viveros J.W.T. Bunlar çeşitli uygulama ve bağlamlarda kullanılır, bunlar arasında şunlar yer alır:

    API Kimlik Doğrulaması

    RESTful API'leri kullanan uygulamalarda, J.W.T. İstekleri doğrulamak için sıklıkla kullanılır. API geliştiricilerinin hem güvenli hem de kullanımı kolay bir mimari oluşturmasına olanak tanır.

    Mikroservisler arasında kimlik doğrulama

    Mikroservis mimarilerinde, J.W.T. Hizmetler arasında oturumları paylaşmaya gerek kalmadan kullanıcıları doğrulamanın basit bir yolunu sağlayarak hizmetler arasında kimlik doğrulamayı kolaylaştırırlar.

    SSO (Tek Oturum Açma)

    Uygulanması J.W.T. çözümlerin uygulanmasını kolaylaştırabilir TOAKullanıcıların bir kez kimlik doğrulaması yaparak tekrar oturum açmadan birden fazla uygulamaya erişebilmelerine olanak tanır.

    Güvenli Bilgi Paylaşımı

    Jardines de Viveros J.W.T. Ayrıca farklı taraflar arasında bilgi paylaşımında, iletilen verinin bütünlüğünün ve gerçekliğinin sağlanmasında da faydalıdırlar.

    Giriş kontrolu

    Jardines de Viveros J.W.T. Roller ve izinlerle ilgili veriler doğrudan belirtece dahil edilebildiğinden, ayrıntılı erişim kontrollerinin uygulanmasına olanak tanırlar.

    Bir Projede JWT Uygulaması

    JWT oluşturma

    Bir oluşturmak için J.W.T., birden fazla dilde mevcut çeşitli kütüphaneleri kullanabilirsiniz. JavaScript, Python y JavaBir örnek node.js kütüphaneyi kullanarak jsonwebtoken Öyle:

    const jwt = require('jsonwebtoken');
    const token = jwt.sign({ id: user.id }, 'your-256-bit-secret', { expiresIn: '1h' });

    JWT'yi doğrulama

    Birinin doğrulanması J.W.T. Aynı kütüphane kullanılarak benzer şekilde yapılabilir:

    jwt.verify(token, 'your-256-bit-secret', function(err, decoded) {
      if (err) {
        return console.log('Token inválido');
      }
      console.log(decoded); // { id: 123, i Ss: 'your-issuer', ... }
    });

    Jeton Son Kullanma Tarihinin İşlenmesi

    Token süresinin dolmasını yönetmek için, son kullanma saatinin (talep) kontrol edilmesi gerekir. exp) içinde yük Korunan kaynaklara erişim izni vermeden önce. Belirtecin süresi dolmuşsa, kullanıcı tekrar oturum açması ve yeni bir belirteç alması için yönlendirilmelidir.

    Ara Yazılım Kullanımı

    Birçok uygulamada, özellikle ve özellikle şu bağlamda: node.js ile Ekspres, doğrulamayı merkezi olarak işlemek için bir ara yazılım kullanılır J.W.T.İşte basit bir örnek:

    const express = require('express');
    const jwt = require('jsonwebtoken');
    const app = express();

    const checkToken = (req, res, next) => {
    const token = req.headers['authorization']?.split(' ')[1];
    if (!token) return res.sendStatus(401); // No autorizado

    jwt.verify(token, 'your-256-bit-secret', (err, decoded) => {
    if (err) return res.sendStatus(403); // Prohibido
    req.user = decoded; // Guardar información del usuario en el request
    next(); // Continuar a la siguiente middleware
    });
    };

    app.get('/protected', checkToken, (req, res) => {
    res.send('Este es un recurso protegido.');
    });

    El JSON Web Simgesi Web uygulamalarında kimlik doğrulama ve yetkilendirmeyi yönetmek için güçlü bir araçtır. Basit yapısı ve doğrulanabilirliği, güvenli, ölçeklenebilir ve birlikte çalışabilir sistemlerin uygulanmasını kolaylaştırır. Ancak, etkinliğini en üst düzeye çıkarmak için en iyi uygulamalar ve doğru güvenlik yönetimi dikkate alınmalıdır.