JSON Web Token (JWT), web uygulamalarında güvenli ve taşınabilir bir şekilde bilgi alışverişi yapmak için kullanılan bir açık standarttır. JWT'ler, veriyi dijital olarak imzalayarak güvence altına alırlar ve bu sayede bilgilerin doğruluğunu ve bütünlüğünü sağlarlar. JWT kimlik doğrulama ve yetkilendirme amacıyla kullanılır.
Bir JWT, üç temel bölümden oluşur:
-
Başlık (Header): JWT'nin tipini ve kullandığı algoritmayı belirtir. Başlık JSON formatında kodlanır ve ardından Base64 URL güvenli kodlanır.
-
Veri Yüküsü (Payload): İçeriği taşıyan kısım olarak düşünülebilir. Kullanıcı bilgileri, izinler veya diğer özelleştirilmiş veriler bu bölümde yer alabilir. Veri yüküsü de JSON formatında kodlanır ve Base64 URL güvenli kodlanır.
-
İmza (Signature): JWT'nin doğruluğunu ve bütünlüğünü sağlamak için kullanılır. İmza, başlık ve veri yüküsünün belirli bir algoritma ile işlenip gizli bir anahtarla şifrelenmesi sonucunda elde edilir.
JWT'ler birçok farklı senaryoda kullanılabilir:
-
Kimlik Doğrulama: Kullanıcıların kimlik doğrulama süreçlerinde kullanılır. Kullanıcı adı ve parola gibi kimlik bilgileri sunucuya gönderilerek JWT alınabilir. Bu JWT daha sonra diğer isteklerde kimlik doğrulaması yapmak için kullanılabilir.
-
Yetkilendirme: Kullanıcılara erişim izinleri atanabilir ve bu izinler JWT içinde taşınabilir. Böylece korunan kaynaklara erişim kontrolü sağlanabilir.
-
Tek Oturum Açma (Single Sign-On - SSO): Birden fazla uygulamada oturum açma işlemini tek bir kimlik doğrulama ile yönetmek için kullanılabilir.
- Taşınabilirlik: JWT'ler taşınabilir ve hafif veri yapılarıdır, bu nedenle farklı sistemler arasında kolayca taşınabilirler.
- Özelleştirme: Veri yüküsü özelleştirilebilir, böylece farklı uygulama senaryolarına uygun kullanım sağlanabilir.
- Bağımsızlık: JWT'ler sunucu taraflı oturum yönetimi gerektirmez, bu da ölçeklenebilirliği artırabilir.
- Spring Boot projesi oluşturun ve gerekli bağımlılıkları ekleyin.
- UserDetails, entity, request-response ve dto tiplerini oluşturun.
- UserRepository JpaRepository oluşturun.
- JwtService ile JWT token oluşturun.
- JwtAuthenticationFilter ile gelen isteklerdeki token'ları doğrulayın.
- SecurityConfig ile Spring Security ayarlarını yapılandırın.
- AuthenticationController ile kullanıcı kimlik doğrulama işlemlerini yönetin.
- AuthenticationService ile kimlik doğrulama işlemlerini gerçekleştirin.
- MainPageController altında veya farklı bir controller oluşturarak kimlik doğrulaması gerektiren bir örnek endpoint oluşturun.
-
Projeyi Başlatın: İlk olarak, projenizi bir IDE'de açın ve uygulamayı başlatın.
-
Kayıt Olun ve Token Alın: Postman veya benzer bir API test aracı kullanarak aşağıdaki adımları takip edin:
POST /login/save
endpoint'ini kullanarak yeni bir kayıt oluşturun ve JWT token alın.
-
Profil Bilgisini Görüntüleyin: Alınan token ile aşağıdaki adımı gerçekleştirin:
GET /dashboard
endpoint'ini çağırarak kullanıcı profilini görüntüleyin.
-
Özel Endpoints:
SecurityConfig
sınıfında yapılandırdığınız ayarlara göre/index
ve/login
endpoint'leri token gerektirmeyecektir. -
Yeni Token Alma: Daha önce kaydolduğunuz kullanıcı için tekrar
POST /auth
endpoint'ini kullanarak token alabilirsiniz.
Bu adımları takip ederek, projemin kimlik doğrulama mekanizmasını anlayabilir ve test edebilirsiniz. Kodlarımı ve yazımı incelediğiniz için teşekkür ederim