วิธีเชื่อมต่อระบบ 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
- ทำไม ERP ถึงล้มเหลว (และจะทำให้โครงการของคุณสำเร็จได้อย่างไร)
- Idempotency ใน Payment API คืออะไร?
- Agentic AI ใน SOC Workflows: เกินกว่า Playbook สู่การป้องกันอัตโนมัติ (คู่มือ 2026)
- สร้าง SOC ตั้งแต่ศูนย์: บันทึกจากสนามจริงด้วย Wazuh + IRIS-web
- ซอฟต์แวร์โรงงานรีไซเคิล: ระบบจัดการครบวงจรสำหรับธุรกิจรีไซเคิลไทย
- คืนทุนจากซอฟต์แวร์พลังงาน: ลดต้นทุนค่าไฟได้ 15–40% จริงหรือ?
- วิธีสร้าง SOC แบบ Lightweight ด้วย Wazuh + Open Source
- วิธีเชื่อมต่อร้านค้าออนไลน์กับระบบ ERP อย่างถูกต้อง: คู่มือปฏิบัติจริง (2026)
- AI Coding Assistant ใช้เครื่องมืออะไรอยู่เบื้องหลัง? (Claude Code, Codex CLI, Aider)
- ประหยัดน้ำมันอย่างได้ผล: ฟิสิกส์ของการขับด้วยโหลดสูง รอบต่ำ
- ระบบบริหารคลังทุเรียนและผลไม้ — WMS เชื่อมบัญชี สร้างเอกสารส่งออกอัตโนมัติ
- ล้งทุเรียนยุคใหม่: หยุดนับสต็อกด้วยกระดาษ เริ่มควบคุมธุรกิจด้วยระบบ
- AI System Reverse Engineering: ใช้ AI ทำความเข้าใจระบบซอฟต์แวร์ Legacy (Architecture, Code และ Data)
- ความได้เปรียบของมนุษย์: บริการพัฒนาซอฟต์แวร์ที่ AI ไม่อาจทดแทนได้
- จาก Zero สู่ OCPP: สร้างแพลตฟอร์มชาร์จ EV แบบ White-Label
- Wazuh Decoders & Rules: โมเดลความเข้าใจที่หายไป
- การสร้างระบบติดตาม OEE แบบเรียลไทม์สำหรับโรงงานอุตสาหกรรม
- ความเชื่อเรื่อง Enterprise Software ราคาเป็นล้านกำลังจะจบลง มื่อ Open‑Source + AI กำลังแทนที่ระบบองค์กรราคาแพง
- วิธี Cache ข้อมูล Ecommerce โดยไม่แสดงราคาหรือสต็อกที่ล้าสมัย
- การนำ AI เข้าสู่ระบบ Legacy: บูรณาการ ERP, SCADA และระบบ On-Premise ด้วย Machine Learning













