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 มาดักจับ Request ที่ส่งเข้ามายัง Server ก่อนที่จะไปถึง Controller ของเรา


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


ตัวอย่างการตั้งค่าเบื้องต้น

ในเวอร์ชันปัจจุบัน เราจะใช้การสร้าง 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 ช่วยให้เราไม่ต้อง “สร้างโค้ทใหม่” ในเรื่องความปลอดภัยที่มีความซับซ้อนสูง และช่วยลดข้อผิดพลาดที่อาจนำไปสู่ช่องโหว่ร้ายแรงได้ อย่างไรก็ตาม ควรหมั่นอัปเดตเวอร์ชันและตรวจสอบการตั้งค่า ให้เหมาะสมกับประเภทของแอปพลิเคชันเสมอ


Exit mobile version