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

Type and hit Enter to search

  • Quarkus Dersleri
  • Spring Dersleri
    • Spring Cloud
    • Spring Boot
    • Spring Uygulama Örnekleri
    • Spring Core
    • Spring JDBC Template
    • Spring MVC
  • İleri Java Dersleri
    • Java Server Faces
    • Java Server Pages
    • PrimeFaces
    • Servlet
    • JDBC
    • JSTL
    • Java 8
  • Hibernate Dersleri
  • / Diğer
    • Ünlü Bilişimciler
    • C Sharp
    • Kütüphane
    • Makale
  • Hakkımda
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>

Ş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ı";
    }
}

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();
    }
}

@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);
    }

}

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 Rest Template

Spring Boot RestTemplate Nedir ve Kullanımı

blank

Spring Boot Transaction, Isolation, Propagation ve RollBack

blank

Spring Boot Projelerinde Jackson Kullanımı

blank

Spring Boot Bean Validation Uygulama Örneği

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

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

Link

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

Kategori

Röportaj
Struts
Android
Vue.js
Node.js
Redis
XCode
Spring Data
Debezium
Mikroservis Mimarisi
Spring Native
Video
Spring Security
Objective C
iPhone Uygulama Geliştirme
JPA
DevOps
PostgreSQL
Apache Kafka
Git
Design Patterns
Yaptığım Projeler
Servlet
Maven
Spring Cloud
Linux
Spring
JDBC
PrimeFaces
Spring Jdbc Template
RabbitMQ
Google
Manset
Spring MVC
OCA Java SE 8
Quarkus
Spring Core
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