sitetasarimtr_logo
Yükleniyor

Bilgi Merkezi / OAuth 2.0 ve JWT Nedir?

OAuth 2.0 ve JWT Nedir? Yetkilendirme ve Token Yapısı

OAuth 2.0, bir kullanıcının şifresini paylaşmadan üçüncü parti bir uygulamaya sınırlı erişim yetkisi vermesini sağlayan yetkilendirme protokolüdür. JWT (JSON Web Token) ise bu yetkilendirme sürecinde kullanılan, kullanıcı bilgisini imzalı ve durumsuz (stateless) biçimde taşıyan token formatıdır. Kısaca: OAuth "izin verme" işini, JWT ise "kimlik bilgisini taşıma" işini yapar.

Giriş

"Google ile Giriş Yap" veya "Facebook ile Devam Et" butonlarının arkasında çalışan sistem OAuth 2.0'dır. Modern web ve mobil uygulamaların büyük kısmı, kullanıcı kimlik doğrulama ve yetkilendirme işlemlerini bu protokol ile JWT tabanlı token'lar üzerinden yürütür.

Bu rehberde OAuth 2.0'ın nasıl çalıştığını, akış türlerini (flow), JWT'nin yapısını, güvenlik risklerini ve modern kimlik doğrulama best practice'lerini sade bir dille ele alıyoruz.

OAuth 2.0 Nedir?

OAuth 2.0, bir kullanıcının bir servisteki (ör. Google hesabı) verilerine, şifresini hiçbir zaman üçüncü bir uygulamayla paylaşmadan, sınırlı ve geri alınabilir erişim izni vermesini sağlayan açık standarttır. Yetkilendirme (authorization) protokolüdür; kimlik doğrulama (authentication) protokolü değildir.

  • Şifre paylaşımı olmadan sınırlı erişim sağlar
  • Access token ve refresh token üzerinden çalışır
  • Kapsam (scope) ile erişim izinleri sınırlandırılır
  • Farklı istemci türleri için farklı akışlar (flow) tanımlar
  • Kimlik doğrulama için OpenID Connect (OIDC) ile birlikte kullanılır
OAuth 2.0 yetkilendirme akışı ve JWT token yapısını gösteren sıralı diyagram

OAuth 2.0 Yetkilendirme Akışı ve JWT Yapısı

OAuth 2.0 Nasıl Çalışır?

Tipik bir OAuth 2.0 akışı (Authorization Code Flow) dört temel roller ve adımlar üzerinden ilerler:

1. Yetkilendirme İsteği

İstemci uygulama (client), kullanıcıyı yetkilendirme sunucusuna (ör. Google'ın giriş ekranına) yönlendirir ve hangi kapsamlarda (scope) erişim istediğini belirtir.

2. Kullanıcı Onayı

Kullanıcı kendi hesabıyla giriş yapar ve istenen izinleri onaylar. Bu aşamada şifre, hiçbir zaman istemci uygulamaya iletilmez; yalnızca yetkilendirme sunucusunda kalır.

3. Authorization Code Değişimi

Yetkilendirme sunucusu, istemciye kısa ömürlü bir "authorization code" döndürür. İstemci bu kodu, kendi client secret'ı ile birlikte token endpoint'ine göndererek gerçek token'ları talep eder.

4. Access Token ve Refresh Token

Sunucu, genellikle JWT formatında bir access token (kısa ömürlü, API isteklerinde kullanılır) ve bir refresh token (uzun ömürlü, yeni access token almak için kullanılır) döndürür.

JWT (JSON Web Token) Yapısı Nedir?

JWT, nokta (.) ile ayrılmış üç bölümden oluşan, Base64Url ile kodlanmış bir metin dizisidir: header.payload.signature. Sunucunun her istekte veritabanına bakmasına gerek kalmadan kullanıcıyı doğrulamasını sağladığı için "durumsuz (stateless) kimlik doğrulama" olarak adlandırılır.

BölümİçerikAmaç
HeaderToken tipi ve imza algoritması (ör. HS256, RS256)Token'ın nasıl doğrulanacağını belirtir
PayloadKullanıcı ID, roller, geçerlilik süresi (exp) gibi claim'lerTaşınan asıl veri
SignatureHeader + payload'ın gizli anahtarla imzalanmış hâliVerinin değiştirilmediğini doğrular

Önemli: JWT'nin payload kısmı yalnızca Base64 ile kodlanmıştır, şifrelenmemiştir. Yani herkes bir JWT'yi çözüp içeriğini okuyabilir. Güvenlik, imzanın (signature) doğruluğuna dayanır; token'ın içine şifre veya hassas veri asla konulmamalıdır.

OAuth 2.0 Akış Türleri (Grant Types)

  • Authorization Code Flow (+ PKCE): Web ve mobil uygulamalar için önerilen, en güvenli standart akış.
  • Client Credentials Flow: Kullanıcı olmadan servisten servise (server-to-server) yetkilendirme.
  • Refresh Token Flow: Süresi dolan access token'ı kullanıcıyı tekrar giriş yaptırmadan yenilemek için kullanılır.
  • Implicit Flow (kullanımdan kaldırıldı): Token'ın doğrudan URL üzerinden döndüğü, artık güvenlik riski nedeniyle önerilmeyen eski akış.

Güvenlik Riskleri ve Best Practice'ler

✅ Authorization Code Flow'u her zaman PKCE ile kullanın
✅ Access token ömrünü kısa tutun (dakikalar), refresh token'ı güvenli saklayın
✅ JWT'yi asla localStorage'da tutmayın; XSS riskine karşı httpOnly cookie tercih edin
✅ İmza algoritmasını sabitleyin, "alg: none" gibi manipülasyonlara izin vermeyin
✅ redirect_uri değerlerini sunucu tarafında tam eşleşme ile doğrulayın
✅ Token iptali gerektiğinde kısa TTL + refresh token rotation stratejisi kullanın

→ En sık karşılaşılan hatalardan biri, JWT'nin "şifrelenmiş" olduğunu düşünüp içine hassas veri koymaktır. JWT yalnızca imzalıdır, şifreli değildir; bu nedenle hassas bilgiler yalnızca sunucu tarafında, token dışında saklanmalıdır.

Sıkça Sorulan Sorular (FAQ)

OAuth 2.0 ile OpenID Connect (OIDC) arasındaki fark nedir?

OAuth 2.0 yalnızca yetkilendirme (erişim izni) sağlar; kullanıcının kim olduğunu doğrulamaz. OpenID Connect, OAuth 2.0'ın üzerine kimlik doğrulama katmanı ekleyerek kullanıcının kimliğini kanıtlayan bir "id_token" (JWT formatında) sunar.

JWT şifreli midir, güvenli mi?

Hayır, JWT şifreli değildir; yalnızca Base64 ile kodlanmış ve imzalanmıştır. İçeriği herkes okuyabilir ama imza sayesinde değiştirilip değiştirilmediği doğrulanabilir. Bu yüzden token içine şifre gibi hassas veriler konulmamalıdır.

Access token ile refresh token arasındaki fark nedir?

Access token, API isteklerinde kullanılan kısa ömürlü token'dır. Refresh token ise access token süresi dolduğunda, kullanıcıyı tekrar giriş yaptırmadan yeni bir access token almak için kullanılan uzun ömürlü token'dır.

JWT'yi localStorage'da saklamak güvenli mi?

Önerilmez. localStorage, JavaScript tarafından erişilebilir olduğu için XSS saldırılarına karşı savunmasızdır. Bunun yerine httpOnly ve Secure bayraklı cookie'ler kullanılması tavsiye edilir.

Sonuç

OAuth 2.0 ve JWT, modern web ve mobil uygulamalarda kullanıcı yetkilendirmesinin ve durumsuz kimlik doğrulamanın temelini oluşturur. Doğru akış seçimi, kısa token ömrü ve güvenli saklama stratejileriyle bu sistemler hem kullanıcı deneyimini hem de uygulama güvenliğini önemli ölçüde artırır.

Site Tasarım TR olarak OAuth 2.0 entegrasyonu, JWT tabanlı kimlik doğrulama mimarisi ve API güvenliği konularında profesyonel destek sunuyoruz. Projeniz için bize ulaşın.

Diğer İçerikler

Web Araçları

Emoji Seçici

1800+ Unicode emoji ile web tasarımlarınıza duygusal ifadeler ekleyin. Arama, kategori filtreleme ve 5 favori grubu.

Emoji & İçerikÜcretsiz

QR Kod Oluşturucu

URL, Wi-Fi, vCard, metin gibi verilerinizi saniyeler içinde özelleştirilebilir QR koda çevirin. Logo, renk ve SVG/PNG indirme desteği.

QR & PaylaşımPopüler

Resim Format Dönüştürücü

PNG → JPG, JPG → PNG, WEBP → JPG/PNG, HEIC → JPG gibi en popüler formatlar arasında saniyeler içinde dönüşüm yapın. Kalite ayarı, toplu işlem desteği ve tamamen tarayıcıda – indirme olmadan!

MultimedyaPopüler

Markdown Editor

Markdown metinlerinizi yazın ve anında canlı HTML önizlemesini görün. Başlıklar, listeler, kod blokları ve daha fazlası. Tarayıcıda, hızlı ve ücretsiz!

Web AraçlarıYeni

CSS Oluşturucu

CSS kodlarınızı otomatik oluşturun: gölgeler, gradyanlar ve daha fazlası.

Web TasarımÜcretsiz

Renk Seçici

Web tasarımlarınız için renk paletleri oluşturun ve HEX, RGB kodlarını alın.

Web TasarımAraç

PDF Ayırıcı (Sayfa Bölme)

Tek PDF dosyasını istediğiniz sayfalara ayırın. Belirli sayfaları seçin veya aralık belirleyin, saniyeler içinde yeni PDF’ler oluşturun – tamamen tarayıcıda!

PDF & DokümanYeni

PDF Birleştirici

Birden fazla PDF dosyasını tek bir PDF’de birleştirin. Sıra değiştirme, önizleme ve yüksek kaliteli çıktı desteği. Tarayıcıda, hızlı ve ücretsiz!

PDF & DokümanFavori

PDF Küçültücü & Sıkıştırıcı

PDF dosyalarınızı kalite kaybı minimumda %50-90 küçültün. Dosya boyutu seçimi, sayfa optimizasyonu ve tamamen tarayıcıda işlem – sunucuya yükleme yok!

PDF & DokümanPopüler

Base64 Encoder & Decoder

Metin ve görselleri Base64 formatına dönüştürün veya Base64 kodunu çözün. API geliştirme ve veri aktarımı için vazgeçilmez.

Kod & GeliştirmeGeliştirici