Site icon PlusMagi's Blog By Pitt Phunsanit

Spring Boot: Spring Security

Spring Security เป็นเฟรมเวิร์กที่มีประสิทธิภาพสูงและยืดหยุ่นมากสำหรับการจัดการความปลอดภัยในแอปพลิเคชัน Java โดยเฉพาะอย่างยิ่งในระบบที่พัฒนาด้วย Spring Boot หน้าที่หลักของมันคือการควบคุม Authentication ( การยืนยันตัวตน ) และ Authorization ( การกำหนดสิทธิ์ ) เพื่อป้องกันการเข้าถึงทรัพยากรโดยไม่ได้รับอนุญาต


แนวคิดพื้นฐานที่ควรรู้

ก่อนจะเริ่มลงมือเขียนโค้ด มี 2 คำศัพท์สำคัญที่ต้องเข้าใจแยกจากกันให้ชัดเจน

  1. Authentication ( คุณคือใคร ? ): กระบวนการตรวจสอบว่าผู้ใช้งานคือคนที่เขากล่าวอ้างจริงหรือไม่ เช่น การกรอก Username และ Password หรือการใช้ Token
  2. Authorization ( คุณทำอะไรได้บ้าง ? ): เมื่อยืนยันตัวตนแล้ว ระบบจะตรวจสอบต่อว่าคุณมีสิทธิ์เข้าถึงหน้าเว็บหรือใช้งาน API เส้นนั้นหรือไม่ เช่น สิทธิ์ของ “Admin” เท่านั้นที่ลบข้อมูลได้

กลไกการทำงาน: Servlet Filter Chain

Spring Security ทำงานอยู่บนพื้นฐานของ Servlet Filters โดยสร้างชุดของ Filter ( เรียกว่า Security Filter Chain ) มาดักจับ Request ที่ส่งเข้ามายัง Server ก่อนที่จะไปถึง Controller ของเรา


ฟีเจอร์หลักของ Spring Security


ตัวอย่างการตั้งค่าเบื้องต้น ( Spring Boot 3.x )

ในเวอร์ชันปัจจุบัน เราจะใช้การสร้าง Bean ของ SecurityFilterChain เพื่อกำหนดค่าความปลอดภัย
src/main/java/com/example/demo/config/SecurityConfig.java

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/public/**").permitAll() // อนุญาตให้ทุกคนเข้าถึง path นี้
                .anyRequest().authenticated()             // path อื่นๆ ต้อง Login ก่อน
            )
            .formLogin(Customizer.withDefaults())          // เปิดใช้งาน Login Form มาตรฐาน
            .httpBasic(Customizer.withDefaults());         // รองรับ Basic Auth

        return http.build();
    }
}

การใช้ Spring Security ช่วยให้เราไม่ต้อง “สร้างโค้ทใหม่” ในเรื่องความปลอดภัยที่มีความซับซ้อนสูง และช่วยลดข้อผิดพลาดที่อาจนำไปสู่ช่องโหว่ร้ายแรงได้ อย่างไรก็ตาม ควรหมั่นอัปเดตเวอร์ชันและตรวจสอบการตั้งค่า ( Configuration ) ให้เหมาะสมกับประเภทของแอปพลิเคชันเสมอ


Exit mobile version