What’s new in AtlasX 8

🔐 ยกระดับความปลอดภัยด้วย Session-based Authentication สำหรับ Web Client

รายละเอียด
  • เพิ่มรูปแบบการ Login แบบ Session-based Authentication สำหรับ Web Client โดยเฉพาะ
  • เก็บ Session ID ไว้ใน HttpOnly Cookie เพื่อป้องกันการถูกขโมย Token จากฝั่ง Frontend
  • รองรับการตั้งค่า Session Timeout และการต่ออายุ Session (Sliding Expiration)
  • แยกแนวทางการ Auth ระหว่าง Web Client (Session-based) และ API Client / Mobile (Token-based เช่น JWT)
แก้ปัญหาอะไร
  • ลดความเสี่ยงจาก XSS ที่สามารถขโมย JWT จาก localStorage ได้
  • แยกบริบทการใช้งาน Web กับ API ชัดเจน ปลอดภัยขึ้นตาม use case

🛡️ ควบคุมการเรียก API ด้วย Policy-Based Authorization

รายละเอียด
  • เปลี่ยนจากแนวคิด “ล็อกอินแล้วเรียก API ได้ทั้งหมด” → เป็น กำหนดสิทธิ์เชิงนโยบาย (Policy-Based Authorization)
  • รองรับการกำหนด Policy ตาม:
    • Role (เช่น Admin, Manager, User)
    • Permission (เช่น order.read, order.create)
    • Claim หรือเงื่อนไขเชิงธุรกิจ
  • บังคับตรวจสิทธิ์ทุก Endpoint ตามมาตรฐานเดียวกันใน Framework
แก้ปัญหาอะไร
  • ปิดช่องโหว่ด้าน Security ที่ผู้ใช้ที่ล็อกอินแล้วสามารถเรียก API เกินสิทธิ์
  • ลดการเขียน logic เช็คสิทธิ์กระจัดกระจายในแต่ละ service
  • รองรับการขยายสิทธิ์ในอนาคตโดยไม่ต้องแก้โค้ดจำนวนมาก
    [HttpGet("userinfo-test")]
    [AxAuthorize("UM-01", "view")]
    public async Task<IActionResult> GetUser()
    {
        var claims = User.Claims
           .Select(c => new { c.Value, c.Type })
           .ToList();

        return Ok(claims);
    }

🧩 ปรับโครงสร้างโปรเจกต์ให้รองรับ Microservices Architecture

รายละเอียด
  • แยกโครงสร้างโปรเจกต์เป็น Service ตาม Domain (เช่น Auth Service, User Service, API Gateway)
  • ออกแบบให้:
    • Deploy แยกได้
    • Scale แยกตามโหลดงาน
    • มีโครงสร้างมาตรฐานเหมือนกันทุก Service
แก้ปัญหาอะไร
  • แก้ข้อจำกัดของ Monolith ที่แก้ไขนิดเดียวต้อง Deploy ทั้งระบบ
  • ลดผลกระทบเวลามี Service ใด Service หนึ่งล่ม
  • รองรับการเติบโตของระบบและทีมในระยะยาว (ทีมทำงานแยกกันได้)
AtlasX/
├── AtlasX.Administrative/    # 🏢 Service สำหรับจัดการข้อมูล เช่น ข้อมูลผู้ใช้งาน ล็อกการใช้งานระบบ เป็นต้น
├── AtlasX.Gateway/           # 🚪 ทางเข้าหลัก (Reverse Proxy) ทำหน้าที่แจกจ่าย Request และจัดการ Cross-cutting concerns
├── AtlasX.Identity/          # 🔐 ระบบตรวจสอบตัวตน (Authentication & Authorization) จัดการ Users และ Sessions
├── Shared/                   # 📦 Project กลางที่รวม DTOs, Constants และ Interfaces ที่ทุก Service ต้องใช้ร่วมกัน
├── .env                      # 📄 ไฟล์เก็บ Environment Variables (เช่น Connection Strings, Secret Keys) *ห้าม Push ขึ้น Git
├── .gitignore                # 🚫 ระบุไฟล์/โฟลเดอร์ที่ไม่ต้องการให้ Git ติดตาม (เช่น /bin, /obj, .env)
├── AtlasX.Web.Service.slnx   # 🛠️ ไฟล์ Solution (Format ใหม่) สำหรับเปิดโปรเจกต์ทั้งหมดใน Visual Studio
├── Directory.Build.props     # ⚙️ ไฟล์กำหนดค่า Build settings และ Version ของ NuGet Packages แบบรวมศูนย์
├── global.json               # 📌 ระบุเวอร์ชันของ .NET SDK ที่ใช้ในเครื่องพัฒนา เพื่อให้ทีมทำงานบนสภาพแวดล้อมเดียวกัน
└── nuget.config              # 🛒 ตั้งค่าแหล่งที่มาของ Package (เช่น Private NuGet Feed ของบริษัท)

🔑 แยก Credential และคอนฟิกสำคัญจาก appsettings มาอยู่ .env

รายละเอียด
  • ย้าย credential ทั้งหมด (เช่น Database, API Key, Secret) จาก appsettings ไปไว้ในไฟล์ .env
  • รองรับการโหลด Secret จาก Environment Variable
  • แยก Config ตาม Environment (Dev / Staging / Production) อย่างชัดเจน
แก้ปัญหาอะไร
  • ป้องกัน Secret หลุดขึ้น Git หรือถูกแชร์ในทีมโดยไม่ตั้งใจ
  • ลดความเสี่ยงด้าน Security เมื่อมีการรั่วไหลของ Source Code
  • ทำให้กระบวนการ Deploy ทำได้ปลอดภัยและเป็นมาตรฐาน

❌ แบบเดิม (Deprecated):

    "Database": {
      "DefaultDataSource": "Default",
      "DataSource": {
        "Default": {
          "ConnectionString": "...",
          "UserId": "testuser",
          "Password": "T3$tP@ssw0rd",
          "Provider": "MSSQL"
        }
      }
    },

✅ แบบใหม่ (v8 Standard):

# DataSource
DataSource__Provider=ORACLE
DataSource__ConnectionString=...

DataSource__Local__Provider=MSSQL
DataSource__Local__ConnectionString=...