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 | 07:00

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


spring-security-core

นี่คือ “หัวใจ” ของระบบครับ มันประกอบด้วย API พื้นฐานและคลาสหลักที่ไม่ขึ้นตรงกับระบบ Web ทำให้สามารถนำไปใช้กับแอปพลิเคชันประเภท 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”
    • Infrastructure: จัดการเรื่องการทำ Redirect, การส่ง Error , และการจัดการ Session /Cookies
    • Firewall: คลาส HttpFirewall ที่ช่วยป้องกันการโจมตีพื้นฐานทาง URL
  • หัวใจสำคัญ: คลาส HttpSecurity ที่เราใช้กำหนดว่า URL ไหนต้องล็อกอิน หรือ URL ไหนให้ผ่านได้เลย จะทำงานอยู่ใน Module นี้ครับ

spring-security-config

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

  • หน้าที่หลัก:
    • DSL : ช่วยให้เราเขียน 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 … 67 68 69 … 1,168 ถัดไป

Projects

  • Statement Columns Mapping Helper
  • PlusMagi Site Search
  • jQuery Plus Repeater

Recent Posts

  • PHP: การบีบอัด Output ด้วย Gzip/Deflate
  • SecDevOps: เปลี่ยนความปลอดภัยให้เป็นเนื้อเดียวกับ Code และ Operation
  • WordPress: ดูว่า post ทุก ๆ วันเสาร์ใช่มั๋ย
  • เทคนิคตั้งค่า umask 002 ให้กับทุก User บน Mac อัตโนมัติผ่าน Terminal (Batch Script)
  • TabulatorPlus: Deep Merge

Archives

Categories

  • AI (26)
  • Businesses (28)
  • Design (56)
    • UX/UI (22)
  • Histories (16)
  • Life (120)
    • Books (51)
    • Cartoon (6)
    • Movies (11)
    • Sci-Fi (20)
    • Tips and Tricks (26)
    • พุทธ (7)
  • Network (144)
    • Apache HTTP Server (17)
    • IOT (1)
    • Nginx (31)
    • Stalwart (6)
  • Operating Systems (279)
    • Unix-like (204)
      • Android (16)
        • F-Droid (5)
      • Homebrew (21)
      • iPhone (8)
      • Linux (119)
      • macOS (100)
        • OrbStack (11)
      • Oh My ZSH (4)
      • Shell Script (40)
      • SSH (11)
    • Windows (120)
      • PowerShell (25)
      • WSL (25)
  • Programming (786)
    • .NET (19)
      • .NET Core EF (6)
      • C# (17)
    • API (32)
      • REST (6)
      • Swagger (6)
    • Database (187)
      • DBeaver (3)
      • MariaDB (31)
      • MySql (68)
      • Oracle Database (6)
        • 10g (3)
      • PostgreSQL (9)
      • RDBMS (2)
      • SQL Server (85)
        • SSMS (8)
        • T-SQL (26)
      • SQLite (1)
    • PowerBuilder (10)
    • Python (5)
    • Rust (4)
    • System Analyst (SA) (37)
    • Testing (21)
      • Automated Testing (12)
        • Playwright (6)
    • UML (7)
    • Web (414)
      • Backend (270)
        • Golang (1)
        • Java (47)
          • Spring Boot (14)
        • Node.js (2)
        • PHP (221)
          • Laravel (50)
          • Yii (5)
      • Frontend (134)
        • CSS (18)
          • Tailwind CSS (5)
        • JavaScript (121)
          • Angular (3)
          • jQuery (61)
          • Tabulator (19)
          • Vue.js (5)
      • WordPress (26)
  • Programs (97)
    • Excel (12)
  • SecDevOps (93)
    • CI/CD (8)
    • Docker (41)
    • GIT (32)
  • Security (81)
  • Uncategorized (3)
  • กฎหมาย (9)

Sirat WordPress Theme By VWThemes

Scroll Up
Exit mobile version