JWT Nedir? JSON Web Token Rehberi
Herkese merhabalar! Bu yazımızda JWT (JSON Web Token) konusunu detaylıca inceliyoruz. Özellikle JWT authentication (kimlik doğrulama) ve JWT authorization (yetkilendirme) süreçlerinde JWT token nasıl kullanılır, Bearer token nedir, JWT nasıl çalışır ve JWT güvenliği nasıl sağlanır gibi sorulara cevap vereceğiz.
JWT (JSON Web Token) Nedir?
JWT yani JSON Web Token, taraflar arasında güvenli bilgi aktarımı sağlayan açık bir standarttır (RFC 7519). Uygulamalarda JWT token kullanımı, özellikle kullanıcı kimlik doğrulama ve yetkilendirme işlemlerinde yaygındır.
Kısaca: JWT authentication ile kullanıcı doğrulanır, JWT authorization ile kullanıcıya erişim izinleri kontrol edilir. Bu sayede sunucu-istemci iletişimi, doğrulanabilir bir token tabanlı kimlik doğrulama modeliyle yönetilir.
JWT Neden Tercih Edilir?
Kompakt ve Taşınabilir Token Yapısı
JWT, JSON tabanlı olduğu için küçüktür ve HTTP isteklerinde kolayca taşınır. Bu nedenle API güvenliği için sık tercih edilir.
Stateless (Durumsuz) Authentication
JWT stateless bir yapı sunar: Sunucu tarafında session tutulmaz. Bu da ölçeklenebilirliği artırır ve mikroservis mimarisinde işleri kolaylaştırır.
SSO (Single Sign-On) ile Uyum
JWT SSO senaryolarında da ideal bir çözümdür. Birden fazla uygulamada tek giriş (Single Sign-On) için JWT kullanılabilir.
JWT Nerede Kullanılır?
- Kullanıcı Kimlik Doğrulama (Authentication): Giriş sonrası JWT token üretimi ve istemciye gönderimi.
- API Güvenliği: REST API’lerde Bearer token ile yetkisiz erişimin engellenmesi.
- SSO (Single Sign-On): Birden fazla uygulamada tek kimlik doğrulama.
- Güvenli Veri Paylaşımı: Taraflar arasında imzalı token ile bilgi bütünlüğü.
JWT Yapısı: Header, Payload, Signature
Bir JWT token üç bölümden oluşur ve bu bölümler nokta (.) ile ayrılır:
Header, Payload, Signature.
1) Header
Header, JWT türü (typ) ve imzalama algoritması (alg) gibi bilgileri içerir.
{
"alg": "HS256",
"typ": "JWT"
}
2) Payload
Payload, kullanıcı bilgileri ve token’a ait claim’leri taşır. Örn: sub, iat, exp.
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
3) Signature
Signature, header ve payload verilerinin gizli anahtar ile imzalanmış halidir. Böylece JWT doğrulama sırasında token’ın değiştirilip değiştirilmediği anlaşılır.
JWT Nasıl Çalışır?
- Kullanıcı kullanıcı adı ve şifre ile giriş yapar.
- Sunucu doğrulama yapar ve JWT token üretir.
- JWT istemciye gönderilir.
- İstemci token’ı (cookie / localStorage / sessionStorage) saklar.
- Her istekte token, Authorization header ile gönderilir.
- Sunucu JWT verification yapar ve yetkilendirmeyi uygular.
Bearer Token Örneği
Authorization: Bearer <token>
Bu kullanım, Bearer token standardıdır ve JWT authentication akışlarında en yaygın yöntemdir.
JWT Avantajları
- Stateless: Session tutmadan çalışan token tabanlı authentication sağlar.
- Hızlı doğrulama: Token doğrulama çoğu senaryoda veritabanı sorgusu gerektirmez.
- API güvenliği: RESTful servislerde yetkisiz erişimi azaltır.
- Taşınabilir: Farklı domain ve servisler arasında JWT ile kimlik doğrulama yapılabilir.
- Mobil uyumlu: Cookie olmadan da JWT token saklanıp kullanılabilir.
JWT Güvenliği: exp, HTTPS ve Refresh Token
1) Token Süresi (exp) Kısa Tutulmalı
JWT exp (expiration) süresi kısa olmalı. Uzun süreli token’lar risklidir. Süre dolduğunda refresh token mekanizması kullanılabilir.
2) Hassas Verileri Payload’a Koymayın
Payload şifrelenmediği için şifre, OTP, kart bilgisi gibi verileri taşımayın.
3) Mutlaka HTTPS Kullanın
JWT güvenliği için en kritik konulardan biri HTTPS’tir. HTTP üzerinden token çalınabilir (MITM riskleri).
Sonuç
JWT (JSON Web Token), modern web uygulamalarında authentication ve authorization için sık kullanılan bir çözümdür. JWT token yapısı, Bearer token kullanımı ve JWT güvenliği doğru uygulandığında, ölçeklenebilir ve güvenilir bir kimlik doğrulama altyapısı kurabilirsiniz.
Bu ve benzeri yazılarımızı latestsoftwaredevelopers.com adresinden takip edebilirsiniz. Bir sonraki yazımızda görüşmek üzere, iyi çalışmalar!