Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

soru ekleme

Soru sormak için giriş yapmalısınız.

Giriş

Kayıt Ol

.........

Spring Boot – OAuth2 JWT

Spring Boot – OAuth2 JWT

Bu bölümde, Spring Boot Security mekanizmaları ve JWT ile OAuth2 hakkında ayrıntılı bilgi edinebilirsiniz.

Authorization Server

Authorization Server Web API Security üstün mimari bileşenidir. Authorization Server, uygulamalarınızın ve HTTP endpoint’lerine uygulamanızın özelliklerini tanımlamasını sağlayan merkezi bir yetkilendirme noktası görevi görür.

Resource Server

Resource Server,  HTTP Endpoint’lerine erişmek için clientlara erişim sağlayan bir uygulamadır. HTTP Endpoint’leri, statik kaynaklar ve Dinamik web sayfalarını içeren kütüphaneler koleksiyonudur.

OAuth2

OAuth2, Web Güvenliği uygulamasının client’dan kaynaklara erişmesini sağlayan bir yetkilendirme framework’üdür. Bir OAuth2 uygulaması oluşturmak için, Grant Type (Yetki Kodu),  Client ID ye odaklanmamız gerekir.

JWT Token

JWT Token, iki taraf arasında güvence altına alınan talepleri temsil etmek için kullanılan bir JSON Web Token’idir. JWT belirteci hakkında daha fazla bilgiyi www.jwt.io/ adresinde bulabilirsiniz.

Şimdi, JWT Token yardımı ile Authorization Server, Resource Server’ın kullanımını mümkün kılan bir OAuth2 uygulaması oluşturacağız.

Veritabanına erişerek Spring Boot Security’i JWT token ile uygulamak için aşağıdaki adımları kullanabilirsiniz.

Öncelikle, build configuration dosyamıza aşağıdaki bağımlılıkları eklememiz gerekir

Maven kullanıcıları pom.xml dosyanıza aşağıdaki bağımlılıkları ekleyebilir.

Gradle kullanıcıları build.gradle dosyasına aşağıdaki bağımlılıkları ekleyebilir.

  • Spring Boot Starter Security −  Spring Security uygular
  • Spring Security OAuth2 − Authorization Server ve Resource Server’ı etkinleştirmek için OAUTH2 yapısını uygular. 
  • Spring Security JWT Web güvenliği için JWT Token üretir
  • Spring Boot Starter JDBC Kullanıcının kullanılabilir olup olmadığını sağlamak için veritabanına erişir.
  • Spring Boot Starter Web HTTP endpoint’leri yazar. 
  • H2 Database Kimlik doğrulama ve yetkilendirme için kullanıcı bilgilerini saklar.

Komple build configuration dosyası aşağıda verilmiştir.

Gradle – build.gradle

Şimdi, main Spring Boot uygulamasında @EnableAuthorizationServer ve @EnableResourceServer anatasyonlarını aynı uygulamada bir Auth server ve Resource Server olarak görev yapacak şekilde ekleyin.

Ayrıca, JWT Token’i kullanarak Spring Security uygulamasına API’ye erişmek için basit bir HTTP endpoint yazmak için aşağıdaki kodu kullanabilirsiniz.

Kimlik doğrulama için Kullanıcı bilgilerini depolamak üzere POJO sınıfını tanımlamak için aşağıdaki kodu kullanın.

Şimdi, aşağıdaki kodu kullanın ve Spring Boot kimlik doğrulaması için org.springframework.security.core.userdetails.User sınıfını extend eden CustomUser sınıfını tanımlayın.

Veritabanından Kullanıcı bilgilerini okumak ve Özel kullanıcı hizmetine göndermek için @Repository sınıfını oluşturabilir ve verilen yetkiyi “ROLE_SYSTEMADMIN” olarak ekleyebilirsiniz.

DAO repository sınıfını gösterildiği gibi çağırmak için org.springframework.security.core.userdetails.UserDetailsService öğesini extend eden bir Custom User detail service sınıfı oluşturabilirsiniz.

Ardından, Web Güvenliğini etkinleştirmek, Parola kodlayıcıyı (BCryptPasswordEncoder) tanımlamak ve AuthenticationManager bean’i tanımlamak için bir @configuration sınıfı oluşturun. Security configuration sınıfı, WebSecurityConfigurerAdapter sınıfını extend etmelidir.

Şimdi, Client ID eklemek, JwtAccessTokenConverter, Private key ve Public key token ve verifier key tanımlamak için OAuth2 Configuration sınıfını tanımlayın ve Token geçerliliği için ClientDetailsServiceConfigurer ‘ı yapılandırın.

Şimdi openssl kullanarak bir Private key ve public key oluşturun.

Private key oluşturmak için aşağıdaki komutları kullanabilirsiniz.

Public key üretimi için aşağıdaki komutları kullanın.

Spring Boot sürümünün 1.5 sürümünden sonraki sürümlerinde, OAuth2 Kaynak filtre sırasını tanımlamak için application.properties dosyanıza aşağıdaki özelliği ekleyin.

YAML dosyası kullanıcıları, aşağıdaki özelliği YAML dosyasına ekleyebilirler.

Şimdi, uygulamayı H2 veritabanına bağlamak için schpat.sql ve data.sql dosyasını classpath  src/main/resources/directory  altında oluşturun.

Schema.sql dosyası gösterildiği gibi –

Data.sql dosyası gösterildiği gibi –

Not – Şifre, veritabanı tablosunda Bcrypt Encoder formatında saklanmalıdır.

Yürütülebilir bir JAR dosyası oluşturabilir ve aşağıdaki Maven veya Gradle komutlarını kullanarak Spring Boot uygulamasını çalıştırabilirsiniz.

Maven için aşağıda verilen komutu kullanabilirsiniz –

“BUILD SUCCESS” sonrasında, JAR dosyasını hedef dizinin altında bulabilirsiniz.

Gradle için, komutu gösterildiği gibi kullanabilirsiniz –

“BUILD SUCCESSFUL” ifadesinden sonra JAR dosyasını build / libs dizini altında bulabilirsiniz.

Şimdi, burada gösterilen komutu kullanarak JAR dosyasını çalıştırın –

Uygulama Tomcat 8080 portunda başlatılır.

Şimdi OAUTH2 Token almak için POSTMAN yoluyla POST yöntemi URL’sine basın.

http://localhost:8080/oauth/token

Şimdi, Request Headers’ı aşağıdaki gibi ekleyin –

  • Authorization Client Id veClient secret ile  Temel Kimlik Doğrulama.
  • Content Type − application/x-www-form-urlencoded

Şimdi, Request  Parametrelerini aşağıdaki gibi ekleyin –

  • grant_type = password
  • username = username’iniz
  • password = şifreniz

Şimdi, API’ye basın ve gösterildiği gibi access_token’i alın –

Şimdi, Request Header’da gösterildiği gibi Taşıyıcı erişim simgesi olan Resource Server API’sine basın.

Ardından çıktıyı aşağıda gösterildiği gibi görebilirsiniz –

Hakkında Hilal Saim

Namık Kemal Üniversitesi/Bilgisayar Mühendisliği

Beni Takip Et

Leave a reply

*