Java Spring Boot — Java Spring Security : JWT Token Kullanımın Önemi
Java Spring Boot — Java Spring Security : JWT Token Kullanımın Önemi
Herkese merhabalar! Bugün sizlerle Java Spring Boot’ta Java Spring Security aracılığıyla kullandığımız JWT Token’ın öneminden bahsedeceğim.
Öncellike Java Spring Boot’ta dependency olarak ne eklememiz gerektiği ile başlamak istiyorum. Maven’a göre:
org.springframework.security
spring-security-core
7.0.0-M2
Eklemeniz gerekmektedir. Şu anda en güncel sürüm 7.0.0-M2 olduğu için versiyon olarak o gözükmektedir. Eğer siz bu makaleyi okurken başka bir versiyon varsa onu kullaabilirsiniz.
https://mvnrepository.com/artifact/org.springframework.security/spring-security-core
Şu siteden güncel sürümü kontrol edebilirsiniz.
Artık dependency olarak kurduğumuza göre bu kısımda artık config dosyaları ile bu dependencyi yönetebiliriz.
İlk olarak hem microservis mimarisinde hem de monolith mimaride de kullanabileceğiniz altını çizmek istiyorum.
Örnek olarak bir Spring Security Konfigürasyon dosyamı da sizinle paylaşmak istiyorum.
package com.afet.userservice.config;
import com.afet.userservice.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@RequiredArgsConstructor
public class ApplicationConfig {
@Bean
public AuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService());
authProvider.setPasswordEncoder(passwordEncoder());
return authProvider;
}
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception {
return config.getAuthenticationManager();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
Burada da görebileceğiniz üzere afet yönetim sistemi için yazdığım konfigürasyon dosyamı bulabilirsiniz.
Sizinle paylaştığım method’ları da incelemek gerekirse aslında benim genel olarak amacım token sistemi ile nasıl gelen requesti encode ederek gelen tokenın doğru olup olmadığı veyahut bu tokena bağlı kullanıcı olup olmadığını kontrol edebilmekti.
Yani Spring Security sayesinde gelen JWT Token’ı kontrol ederek kullanıcının o işleve yetkisi var mı yok mu öğrenmekti.
Bu full-stack olan sistemimizde eğer token varsa ve mesela YONETICI rolü varsa yönetici sayfasına ve aynı zamanda backend linklerine bağlanabiliyordu.
Yani JWT Token bana bu kısımda hem paylaştığım apiları koruma hem de websitemdeki linkleri korumamı sağladı.
Bu yazımı okuğunuz için teşekkürler.
If you liked this article, you can find more content on Medium!
You can read the original article on Medium, comment and discover more content.