วิธีเชื่อมต่อระบบ Single Sign-On (SSO) ด้วย Google OAuth ใน FastAPI
ในยุคที่ผู้ใช้งานไม่อยากจดจำรหัสผ่านอีกต่อไป — Single Sign-On (SSO) คือคำตอบ
บทความนี้จะแนะนำวิธีสร้างระบบล็อกอินผ่านบัญชี Google บนแอปพลิเคชัน FastAPI โดยใช้ MongoDB, JWT, และไลบรารี fastapi-sso เพื่อให้คุณเริ่มต้นได้อย่างมั่นใจและปลอดภัย
🔎 ทำไมต้องมีระบบ SSO?
SSO ไม่ใช่แค่ความสะดวกสบาย แต่เป็นความปลอดภัยด้วย
🔐 1. ปลอดภัยยิ่งขึ้น
- ลดความเสี่ยงจากการรั่วไหลของรหัสผ่าน
 - ใช้ระบบความปลอดภัยจาก Google, Facebook, Microsoft
 - รองรับ Multi-Factor Authentication (MFA)
 
🤝 2. ผู้ใช้ไม่ต้องจำรหัสผ่าน
- ล็อกอินด้วยบัญชีที่มีอยู่แล้ว
 - ไม่ต้องกรอกฟอร์มลงทะเบียนใหม่
 - ลดอัตราการละทิ้งการสมัครใช้งาน
 
🛠️ 3. นักพัฒนาไม่ต้องจัดการกับระบบรหัสผ่านเอง
- ไม่ต้องดูแลระบบ Reset Password
 - ลดข้อมูลผู้ใช้ที่ต้องจัดเก็บ (เช่น รหัสผ่าน)
 
🧩 4. ใช้งานร่วมกับหลายระบบได้
- ล็อกอินครั้งเดียวใช้งานได้หลายระบบในองค์กร
 
💼 5. ตอบโจทย์ระดับองค์กร
- เชื่อมต่อกับ Google Workspace หรือ Azure AD ได้ง่าย
 - รองรับระบบภายในขององค์กร
 
✅ เทคโนโลยีที่ใช้
| เครื่องมือ | หน้าที่ | 
|---|---|
| FastAPI | Web Framework ภาษา Python (Asynchronous) | 
| fastapi-sso | เชื่อมต่อ OAuth2 (Google SSO) | 
| MongoDB + Motor | ฐานข้อมูลสำหรับจัดเก็บผู้ใช้ | 
| python-jose | สร้างและตรวจสอบ JWT Token | 
| passlib | เข้ารหัสรหัสผ่านแบบปลอดภัย (ถ้ามีการสมัครด้วยรหัสผ่าน) | 
⚙️ ขั้นตอนการเชื่อมต่อ Google SSO กับ FastAPI
1. ติดตั้งไลบรารี
pip install fastapi uvicorn motor fastapi-sso python-dotenv python-jose passlib[bcrypt]
2. สมัคร Google OAuth
- เข้าไปที่ Google Cloud Console
 - สร้าง Project ใหม่
 - เปิดใช้งาน OAuth 2.0 Client ID
 - ตั้งค่า Redirect URI เป็น:
 
http://localhost:8000/api/auth/google/callback
- คัดลอก Client ID และ Client Secret
 
3. ตั้งค่า .env
MONGODB_URI=mongodb://localhost:27017
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-client-secret
GOOGLE_REDIRECT_URL=http://localhost:8000/api/auth/google/callback
JWT_SECRET=your_jwt_secret
4. เขียนโค้ด FastAPI
ตัวอย่างโค้ดหลักมีดังนี้ (ดูเวอร์ชันเต็มใน GitHub ของเรา):
/api/auth/google/login→ ไปยังหน้าล็อกอินของ Google/api/auth/google/callback→ รับข้อมูลผู้ใช้กลับจาก Google และสร้าง JWT/api/register→ รองรับการสมัครด้วยชื่อผู้ใช้/รหัสผ่าน (ทางเลือก)/api/token→ ล็อกอินแบบคลาสสิกด้วยรหัสผ่าน- ทุกเส้นทางสามารถป้องกันด้วย JWT Token ได้
 
🔄 แผนภาพลำดับการทำงานของ SSO
sequenceDiagram
    actor ผู้ใช้
    participant เบราว์เซอร์
    participant FastAPI
    participant GoogleOAuth
    participant MongoDB
    ผู้ใช้->>เบราว์เซอร์: คลิก "ล็อกอินด้วย Google"
    เบราว์เซอร์->>FastAPI: GET /auth/google/login
    FastAPI->>GoogleOAuth: เปลี่ยนเส้นทางไปยัง Google OAuth
    ผู้ใช้->>GoogleOAuth: ล็อกอินและให้สิทธิ์
    GoogleOAuth->>FastAPI: เปลี่ยนเส้นทางกลับ /auth/google/callback?code=XYZ
    FastAPI->>GoogleOAuth: ตรวจสอบและดึงข้อมูลผู้ใช้
    GoogleOAuth-->>FastAPI: ส่งข้อมูล email, ชื่อ, avatar
    alt ผู้ใช้ใหม่
        FastAPI->>MongoDB: บันทึกข้อมูลผู้ใช้ใหม่
    else ผู้ใช้เดิม
        FastAPI->>MongoDB: ดึงข้อมูลผู้ใช้จากฐานข้อมูล
    end
    FastAPI->>FastAPI: สร้าง JWT Token
    FastAPI-->>เบราว์เซอร์: ส่ง access_token กลับ
    เบราว์เซอร์->>ผู้ใช้: เข้าสู่ระบบสำเร็จ
🧾 รูปแบบข้อมูลผู้ใช้ใน MongoDB
{
  "username": "jane.doe@gmail.com",
  "email": "jane.doe@gmail.com",
  "full_name": "Jane Doe",
  "avatar_url": "https://lh3.googleusercontent.com/...",
  "sso_provider": "google",
  "created_at": "2025-07-02T08:00:00Z"
}
🔐 การปกป้องเส้นทางด้วย JWT
Authorization: Bearer <token>
เส้นทางที่ปกป้อง:
@router.get("/me")
async def me(current_user=Depends(get_current_user)):
    return current_user
🚀 สิ่งที่สามารถพัฒนาต่อได้
- เพิ่มผู้ให้บริการอื่น เช่น Facebook, Microsoft
 - เปลี่ยนเส้นทางกลับไปยัง frontend หลังล็อกอิน
 - เชื่อมต่อกับ Mobile App ผ่าน Deep Link
 - จัดการ Role และ Permission ของผู้ใช้
 
📌 สรุป
ในบทความนี้คุณได้เรียนรู้วิธี:
- เชื่อมต่อ Google OAuth2 กับ FastAPI
 - สร้างระบบ SSO ที่ปลอดภัยด้วย JWT
 - จัดเก็บข้อมูลผู้ใช้ลง MongoDB
 - ใช้งาน Token เพื่อควบคุมสิทธิ์ API
 
นี่คือจุดเริ่มต้นที่ดีในการสร้างระบบล็อกอินที่ปลอดภัย และพร้อมขยายสู่ระดับองค์กร
🏢 ติดต่อเรา
Simplico Co., Ltd. เชี่ยวชาญด้านการพัฒนา Web Backend ด้วย Python, FastAPI, MongoDB และ Cloud Infrastructure
ให้เราช่วยคุณสร้างระบบ SSO หรือ API ที่ปลอดภัยและมีประสิทธิภาพ
📨 ติดต่อเรา: https://simplico.net
Get in Touch with us
Related Posts
- พัฒนาโปรแกรมสแกนหุ้น Breakout หลายตลาดด้วย Python
 - Agentic AI และ MCP Servers: ก้าวต่อไปของระบบอัตโนมัติอัจฉริยะ
 - การใช้ DevOps กับระบบอีคอมเมิร์ซ Django + DRF + Docker + PostgreSQL
 - วิธีที่ AI ช่วยแก้ปัญหาใน Agile Development ได้จริง
 - การเชื่อมต่อ TAK และ Wazuh เพื่อการรับรู้ภัยคุกคามแบบเรียลไทม์
 - การขยายระบบ Wazuh สำหรับการมอนิเตอร์ความปลอดภัยเครือข่ายหลายสาขา
 - ทำไมโครงการ ERP ถึงล้มเหลว — และเราจะหลีกเลี่ยงได้อย่างไร
 - วิธีสร้างคอมมูนิตี้ที่แข็งแกร่งด้วยเทคโนโลยี
 - ปัญญาประดิษฐ์ (AI) กับสวนสัตว์ยุคใหม่: ทำให้การเรียนรู้สนุก ฉลาด และน่าจดจำ
 - วิธีเลือกโรงงานรับซื้อเศษวัสดุรีไซเคิลสำหรับโรงงานอุตสาหกรรม
 - เข้าใจเทคโนโลยีฐานข้อมูลยุคใหม่ — และวิธีเลือกให้เหมาะกับงานของคุณ
 - อนาคตอยู่ที่ขอบเครือข่าย — เข้าใจ Edge & Distributed Computing ในปี 2025
 - NVIDIA กับสองคลื่นใหญ่: จากคริปโตสู่ AI — ศิลปะแห่งการโต้คลื่นในฟองสบู่
 - จากการตรวจเช็กด้วยมือสู่การบำรุงรักษาอากาศยานด้วย AI
 - ระบบสร้างใบรับรองการตรวจสอบอัตโนมัติจากเทมเพลต Excel
 - SimpliPOS (COFF POS): ระบบขายหน้าร้านสำหรับคาเฟ่ที่ใช้งานง่ายและครบฟังก์ชัน
 - สร้างเว็บแอป Local-First ด้วย Alpine.js — เร็ว ปลอดภัย และไม่ต้องใช้เซิร์ฟเวอร์
 - 🌱 Carbon Footprint Calculator (Recycling) — เครื่องมือคำนวณคาร์บอนสำหรับอุตสาหกรรมรีไซเคิล
 - Recycle Factory Tools — เครื่องมือช่วยบันทึกงานรีไซเคิลให้ง่ายขึ้น
 - โค้ชท่าวิ่ง — เมโทรนอมจังหวะก้าว เคาะจังหวะ จับเวลาท่าฝึก เช็คลิสต์ท่าทาง
 

          











