OAuth 2.0: Güvenli Erişim Yönetiminin Altın Standardı
Modern web ve mobil uygulamalarda kullanıcı kimlik doğrulama ve yetkilendirme, güvenliğin temel taşıdır. OAuth 2.0, üçüncü taraf uygulamaların kullanıcı kaynaklarına güvenli erişim sağlamasını mümkün kılan endüstri standardı bir yetkilendirme protokolüdür. "Google ile Giriş Yap" veya "GitHub ile Bağlan" butonlarının arkasında OAuth 2.0 çalışır.
Kimlik Doğrulama vs Yetkilendirme
Bu iki kavramı ayırt etmek kritik önem taşır:
- Kimlik Doğrulama (Authentication): "Sen kimsin?" sorusunu yanıtlar. Kullanıcının iddia ettiği kişi olduğunu doğrular.
- Yetkilendirme (Authorization): "Ne yapmana izin var?" sorusunu yanıtlar. Kullanıcının hangi kaynaklara erişebileceğini belirler.
OAuth 2.0 bir yetkilendirme protokolüdür. Kimlik doğrulama için üzerine inşa edilen OpenID Connect (OIDC) katmanı kullanılır.
OAuth 2.0 Nasıl Çalışır?
Temel Roller
- Resource Owner: Kaynak sahibi — genellikle son kullanıcı
- Client: Kaynaklara erişmek isteyen uygulama
- Authorization Server: Token'ları veren sunucu (Google, GitHub vb.)
- Resource Server: Korunan kaynakları barındıran API sunucusu
OAuth 2.0 Akış Türleri (Grant Types)
1. Authorization Code Flow
En güvenli ve en yaygın kullanılan akış. Sunucu taraflı uygulamalar için idealdir. Kullanıcı yetkilendirme sunucusuna yönlendirilir, onay verdikten sonra bir yetkilendirme kodu alınır ve bu kod token ile değiştirilir.
2. Authorization Code Flow with PKCE
Mobil ve SPA (Single Page Application) uygulamalar için güvenli versiyon. Client secret kullanmak yerine dinamik olarak oluşturulan code verifier/challenge çifti kullanır.
3. Client Credentials Flow
Kullanıcı etkileşimi olmayan makine-makine iletişimi için. Backend servisler arası API çağrılarında kullanılır.
4. Device Authorization Flow
Akıllı TV, IoT cihazları gibi giriş kapasitesi sınırlı cihazlar için tasarlanmıştır.
JWT (JSON Web Token) Nedir?
JWT, taraflar arasında bilgiyi güvenli şekilde iletmek için kullanılan kompakt ve bağımsız bir token formatıdır. OAuth 2.0'da erişim token'ı olarak yaygın şekilde kullanılır.
JWT'nin Üç Bileşeni
- Header: Token türü ve imzalama algoritması bilgisi
- Payload: Kullanıcı bilgileri ve talepler (claims) — kullanıcı ID, roller, süre sonu
- Signature: Header ve payload'ın gizli anahtar ile imzalanması
JWT Avantajları
- Durumsuz (Stateless): Sunucuda oturum bilgisi tutmaya gerek yoktur
- Ölçeklenebilir: Yük dengeleyici arkasında çoklu sunucu ile sorunsuz çalışır
- Platform Bağımsız: Web, mobil ve API istemcilerinde kullanılabilir
- Kompakt: HTTP header'larında kolayca taşınabilir
Güvenlik En İyi Pratikleri
Token Yönetimi
- Erişim token sürelerini kısa tutun (15 dakika önerilir)
- Uzun süreli oturumlar için refresh token kullanın
- Token'ları localStorage'da saklamayın — httpOnly cookie tercih edin
- Token iptal mekanizması (revocation) uygulayın
Genel Güvenlik
- Tüm iletişimlerde HTTPS zorunlu kılın
- CORS politikalarını doğru yapılandırın
- CSRF koruması uygulayın
- Scope'ları minimum yetki prensibiyle tanımlayın
- Hassas bilgileri JWT payload'ına koymayın
OAuth 2.0 Sağlayıcıları
| Sağlayıcı | Özellik | En Uygun Kullanım |
|---|---|---|
| Auth0 | Kapsamlı, kolay entegrasyon | Her ölçekte uygulama |
| Keycloak | Açık kaynak, self-hosted | Kurumsal uygulamalar |
| Firebase Auth | Google ekosistemi, ücretsiz başlangıç | Mobil ve web uygulamalar |
| Okta | Kurumsal kimlik yönetimi | Büyük ölçekli kuruluşlar |
| Azure AD B2C | Microsoft entegrasyonu | Microsoft ekosistemi |
Sonuç
OAuth 2.0 ve JWT, modern uygulamaların güvenlik altyapısının temelini oluşturur. Doğru akış türünü seçmek, token yönetimini güvenli şekilde uygulamak ve güvenlik en iyi pratiklerini takip etmek, kullanıcılarınızın verilerini korumak için hayati önem taşır. Ekolsoft olarak, güvenli kimlik doğrulama ve yetkilendirme çözümleri ile uygulamalarınızı koruma altına alıyoruz.