Skip to content

PlusMagi's Blog By Pitt Phunsanit

Plus emotional magic to the knowledge of logic.

  • หน้าแรก
  • About’s Pitt
Close Button

Java: spring-security-web ( login )Java: spring-security-web ( login )

2025-12-132025-12-13| phunsanitphunsanit| 0 Comment | 00:00

ในการพัฒนาแอปพลิเคชันด้วย Spring Boot และต้องการจัดการเรื่องความปลอดภัย ( Authentication & Authorization ) เรามักจะเห็น Library หลัก 3 ตัวนี้ทำงานร่วมกันเสมอครับ แม้ว่าเราจะติดตั้งผ่าน spring-boot-starter-security เพียงตัวเดียว แต่เบื้องหลังมันประกอบด้วยส่วนประกอบที่ทำหน้าที่ต่างกันดังนี้ครับ


spring-security-core

นี่คือ “หัวใจ” ของระบบครับ มันประกอบด้วย API พื้นฐานและคลาสหลักที่ไม่ขึ้นตรงกับระบบ Web ( Non-web specific ) ทำให้สามารถนำไปใช้กับแอปพลิเคชันประเภท Desktop หรือ Method-level security ได้

  • หน้าที่หลัก:
    • Authentication: เก็บ Model ของผู้ใช้ เช่น UserDetails, GrantedAuthority
    • Access Control: จัดการการตรวจสอบสิทธิ์ผ่าน AccessDecisionManager
    • Security Context: คลาส SecurityContextHolder ที่ใช้เก็บข้อมูลผู้ใช้ที่ล็อกอินอยู่ในปัจจุบัน
  • เหมาะสำหรับ: การทำ Unit Test หรือเขียน Logic ความปลอดภัยในระดับ Service layer

spring-security-web

ตัวนี้คือส่วนที่ทำให้ Security ทำงานบน HTTP Protocol ได้ครับ หากไม่มีตัวนี้ Spring Security ก็จะไม่รู้ว่าต้องจัดการกับ Request ที่วิ่งเข้ามาทาง Browser อย่างไร

  • หน้าที่หลัก:
    • Filters: หัวใจของมันคือ “Security Filter Chain” ( เช่น UsernamePasswordAuthenticationFilter )
    • Infrastructure: จัดการเรื่องการทำ Redirect, การส่ง Error ( 401, 403 ), และการจัดการ Session /Cookies
    • Firewall: คลาส HttpFirewall ที่ช่วยป้องกันการโจมตีพื้นฐานทาง URL
  • หัวใจสำคัญ: คลาส HttpSecurity ที่เราใช้กำหนดว่า URL ไหนต้องล็อกอิน หรือ URL ไหนให้ผ่านได้เลย จะทำงานอยู่ใน Module นี้ครับ

spring-security-config

ตัวนี้เปรียบเสมือน “กาว” หรือตัวเชื่อมครับ มันช่วยให้เราเขียน Code เพื่อตั้งค่า ( Configuration ) ได้ง่ายขึ้นผ่าน Syntax ที่อ่านง่าย ( Fluent API )

  • หน้าที่หลัก:
    • DSL ( Domain Specific Language ): ช่วยให้เราเขียน http.authorizeHttpRequests(...).formLogin(...) ได้แบบไหลลื่น
    • Annotation Support: รองรับการใช้ @EnableWebSecurity, @EnableMethodSecurity
    • XML & Java Config: เป็นส่วนที่ประมวลผลการตั้งค่าทั้งหมดเพื่อไปสร้าง Bean ต่างๆ ใน Core และ Web
  • ประโยชน์: ช่วยลดความซับซ้อนในการ Setup เพราะมันจะดึงเอาคลาสจาก Core และ Web มาประกอบร่างให้เราโดยอัตโนมัติ

สรุปความสัมพันธ์แบบเปรียบเทียบ

Moduleหน้าที่เปรียบเหมือน
coreนิยามว่า “ใคร” และ “ทำอะไรได้บ้าง”กฎหมายและบัตรประชาชน
webดักจับ HTTP Request และจัดการ Sessionประตูกั้นและรปภ. หน้าตึก
configวิธีการตั้งค่าระบบทั้งหมดเข้าด้วยกันคู่มือการติดตั้งและปุ่มควบคุม

คำแนะนำเพิ่มเติม: ในการใช้งานจริงกับ Spring Boot คุณเพียงแค่ระบุ Dependency spring-boot-starter-security ในไฟล์ pom.xml หรือ build.gradle เพียงที่เดียว มันจะดึงทั้ง 3 ตัวนี้มาให้พร้อมใช้งานทันทีครับ


อ่านเพิ่มเติม

  • Authentication, Authenticator, Authorization, Login
  • ระบบ Login ควรมีอะไรบ้าง
  • login แบบปลอดภัย
Read MoreRead More

Posts pagination

ก่อนหน้า 1 … 23 24 25 … 888 ถัดไป

Projects

  • Statement columns mapping Helper
  • Plusmagi Search
  • jQuery Plus Repeater

Recent Posts

  • MariaDB: Character Set และ Collation
  • WinGet: การติดตั้ง TortoiseSVN
  • laravel: breeze, Jetstream, spatie ต่างกันอย่างไร
  • Bcrypt: Password Hashing
  • Monolithic Architecture

Archives

Categories

  • AI (4)
  • Businesses (3)
  • Design (30)
    • UX/UI (3)
  • Histories (8)
  • Life (47)
    • Books (20)
      • สืบสวน (4)
    • ECO (3)
    • Sci-Fi (2)
    • พุทธ (3)
  • Network (290)
    • Android (13)
      • F-Droid (7)
    • Apache Apache HTTP Server (17)
    • Docker (28)
    • Homebrew (14)
    • IIS (7)
    • IOT (4)
    • Linux (92)
    • macOS (67)
      • OrbStack (10)
    • Nginx (26)
    • RabbitMQ (4)
    • Samba (5)
    • Shell Script (28)
    • SSH (11)
    • Windows (100)
      • PowerShell (21)
      • WinGet (10)
      • WSL (21)
  • Programming (612)
    • API (18)
      • REST (5)
      • Swagger (6)
    • C# (15)
      • .NET Core EF (3)
    • CI/CD (7)
    • Database (162)
      • DBeaver (3)
      • RDBMS (144)
        • DB2 (2)
        • MariaDB (18)
        • MySql (56)
        • Oracle Database (4)
          • 10g (2)
        • PostgreSQL (3)
        • SQL Server (83)
          • ADS (3)
          • SMO (4)
          • SSMS (8)
          • T-SQL (26)
    • Flutter (2)
    • GIT (23)
    • Java (44)
      • JasperReports (3)
      • Joget (19)
      • Spring Boot (14)
    • Node.js (1)
    • PowerBuilder (11)
      • PowerBuilder 8 (10)
    • Python (8)
    • Rust (1)
    • SVN (1)
    • Testing (7)
      • Automated Testing (4)
        • Playwright (2)
        • Selenium (2)
    • UML (1)
    • Version Control (1)
    • Web (283)
      • CSS (16)
        • Bootstrap (3)
        • Tailwind CSS (3)
      • HTML (23)
      • JavaScript (108)
        • AG Grid (1)
        • Angular (1)
        • jQuery (64)
          • DataTables (14)
        • React (2)
        • Tabulator (11)
        • TypeScript (10)
        • Vue.js (3)
      • PHP (165)
        • CodeIgniter (11)
        • Laravel (33)
          • Laravel 11 (10)
          • Laravel 5 (19)
        • PrestaShop (1)
        • Yii (19)
          • Yii 2 (16)
      • SEO (2)
      • WordPress (20)
  • Programs (82)
    • Bitwarden (5)
    • Excel (8)
    • Figma (7)
    • Google Chrome (6)
    • Mozilla Firefox (9)
    • Oh My ZSH (4)
    • Stalwart (5)
    • USB Boot (7)
  • Q & A (8)
  • Security (32)
  • Tips & Tricks (72)
    • iPhone (7)
      • Jailbreaking (2)
  • Uncategorized (1)
  • กฎหมาย (3)
  • คณิตศาสตร์ (4)

Sirat WordPress Theme By VWThemes

Scroll Up