Twitter Youtube Github
Burak Kutbay'ın Kişisel Blog'u |

Type and hit Enter to search

  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
Spring Boot

Spring Boot Uygulamalarında Security Basic Authentication Kullanım Örneği

Paylaş

Spring Boot Dersleri’ne devam ediyoruz.

Bu Spring Boot Ders’inde uygulamamıza basic authentication yöntemi ile güvenlik işleminin nasıl yapıldığıına bakacağız.Uygulamamız maven projesi olacak ve kaynak kodlara github adresimden erişebileceksiniz.

Uygulama yapısı aşağıdaki gibi olacaktır.

Uygulama Dosya Yapısı

pom.xml dosyamız yani uygulama bağımlılıklarımız aşağıdaki gibidir.

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.burakkutbay</groupId> <artifactId>springbootsecuriybasicauthrestapi</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springbootsecuriybasicauthrestapi</name> <description>Spring Boot Security Basic Authentication – Secure REST API</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.4.Final</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Code language: HTML, XML (xml)

Şimdi controllerımızı oluşturalım ve sonrasında ne yaptığımıza bakalım.

package com.burakkutbay.springbootsecuriybasicauthrestapi; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class AppController { @RequestMapping("/user") public String loginUser(){ return "User kullanıcı girişi başarılı"; } @RequestMapping("/admin") public String loginAdmin(){ return "Admin kullanıcı girişi başarılı"; } }
Code language: CSS (css)

Spring Boot uygulamamızda user ve admin rolleri bulunmaktadır ve @RequestMapping anotasyonu kulanarak localhost:8080/user ve localhost:8080/admin adreslerine erişim sağlanacak ve kullanıcı adı ve şifresi doğru olursa tarayıcıda giriş başarılı mesajı verecektir.

Spring Security bağımlılığımızı kullanarak güvenlik tipini giriş yapacak kullanıcının adlarını ve şifrelerini belirleyeceğiz. Kodu yazdıktan sonra ne yaptığımızı açıklayacağım.

package com.burakkutbay.springbootsecuriybasicauthrestapi; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; @Configuration @EnableWebSecurity public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.httpBasic().and().authorizeRequests() .antMatchers("/user").hasRole("USER") .antMatchers("/admin").hasRole("ADMIN") .and() .csrf().disable(); } @Autowired public void configureAuthGlobal(AuthenticationManagerBuilder auth){ try { auth.inMemoryAuthentication() .withUser("user").password(passwordEncoder().encode("password")).roles("USER") .and() .withUser("admin").password(passwordEncoder().encode("password")).roles( "ADMIN"); } catch (Exception e) { e.printStackTrace(); } } @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
Code language: JavaScript (javascript)

@EnableWebSecurity : Spring Security işleminin bu class tarafından yönetileceğini belirtiyoruz.

configure : metodumuz WebSecurityConfigurerAdapter tarafından override edilen bir metoddur.

httpBasic(): Güvenlik tipini belirtmektedir.

antMatchers: Kullanıcıyı eşleştirme kontrolü yapar.

hasAnyRole: Kullanıcıya alması gereken rolü belirtiyoruz.

configureAuthGlobal: Bu yaptığımız metodumuz ile kullanıcının bilgilerinin hafızada tutulacağını şifrelerinin passwordEncoder ile şifreliyoruz.

Programımızı çalıştıracak ana classımızı yazalım.

package com.burakkutbay.springbootsecuriybasicauthrestapi; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @ComponentScan(basePackages = "com.burakkutbay.springbootsecuriybasicauthrestapi") @SpringBootApplication public class SpringbootsecuriybasicauthrestapiApplication { public static void main(String[] args) { SpringApplication.run(SpringbootsecuriybasicauthrestapiApplication.class, args); } }
Code language: JavaScript (javascript)

Ve sonuca bakalım.

Adres Tıklandığında giriş ekranı
blank
Kullanıcı girişi başarılı olduğunda karşılanacak ekran.
Kaynak Kodlara Github'tan UlaşBu yazıda anlatılan projenin kaynak kodlarını Github üzerinden indirebilirsiniz.
Önceki Ders: Spring Boot Hata SayfalarıYapmak
Spring Boot Dersleri
Sonraki Ders: LDAP Yetkilendirmesi Kullanmak

Tags:

spring boot applicationspring boot derslerispring boot uygulamaspring derslerispring uygulama örneği

Paylaş

Diğer Yazılar

Spring Dersleri
Previous

Spring Boot Dersleri – Çoklu Veritabanları İle Çalışmak (Spring Data)

Spring Dersleri
Next

Spring Boot Dersleri – LDAP Yetkilendirmesi Kullanmak

Next
Spring Dersleri
01 Aralık 2019

Spring Boot Dersleri – LDAP Yetkilendirmesi Kullanmak

Previews
28 Ekim 2019

Spring Boot Dersleri – Çoklu Veritabanları İle Çalışmak (Spring Data)

Spring Dersleri

No Comment! Be the first one.

Bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İlgini Çekebilir

Spring Boot Dersleri

Spring Boot Projelerinde Tomcat Yerine Jetty Kullanmak

Spring Boot Dersleri Rest Template

Spring Boot RestTemplate Nedir ve Kullanımı

Spring Boot Dersleri

Spring Boot Transaction, Isolation, Propagation ve RollBack

Spring Boot Dersleri

Spring Boot Projelerinde Jackson Kullanımı

Burak Kutbay'ın Kişisel Blog'u |

© 2008 - ∞, Her hakkı saklıdır.

Link

  • Hakkımda
  • İletişim
  • Arşiv

Kategori

Cloud
Amazon Web Services
Vue.js
Gradle
Node.js
Android
Struts
Redis
Röportaj
Spring Data
Spring Cloud Stream
XCode
Debezium
Mikroservis Mimarisi
Video
Spring Native
iPhone Uygulama Geliştirme
Objective C
JPA
Spring Security
PostgreSQL
Apache Kafka
Git
Servlet
Yaptığım Projeler
Maven
Design Patterns
DevOps
Linux
RabbitMQ
PrimeFaces
JDBC
Spring Jdbc Template
Spring
Spring MVC
Manset
Google
Spring Cloud
OCA Java SE 8
Spring Core
Quarkus
Microsoft
Veritabanı
Tanıyalım
Java SE
Hibernate
Teknoloji
Okuduğum Kitaplar
Java Server Faces
Yazılım Mühendisliği
C Sharp
Spring Boot
Java
Günlüğüm
Java Server Page
Makale

Takip Et

Twitter Youtube Github
  • Eğitim
  • Quarkus
  • Spring Cloud
  • Spring Boot
  • Spring JDBC Template
  • Spring MVC
  • Spring Core
  • Spring Örnekleri
  • Hibernate
  • Java Server Pages
  • Java Server Faces
  • PrimeFaces
  • Servlet
  • JDBC
  • JSTL
  • Java 8
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale