วิธีเชื่อมต่อระบบ 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
- ข้อเสนอระบบ SimpliMES Lite — โซลูชัน MES แบบเบาสำหรับโรงงานไทย
- ทำไมร้านค้าออนไลน์ที่ประสบความสำเร็จถึงเลือกใช้ SimpliShop: สร้าง เติบโต และชนะตลาดของคุณ
- Vertical Integration of AI: อนาคตใหม่ของธุรกิจยุคดิจิทัล
- ระบบ AI Prediction — เปลี่ยนการตัดสินใจของคุณให้ทรงพลังยิ่งกว่าเดิม
- ถ้า AI Bubble แตก จะเกิดอะไรขึ้น? (วิเคราะห์จริง ไม่อิงกระแส)
- ใช้ Deep Learning + วิเคราะห์ข่าว (News Sentiment) ทำนายราคาหุ้น – คู่มือฉบับสมบูรณ์
- เปลี่ยนงาน COI ให้ง่ายขึ้นด้วย AI: ตัวอย่างใช้งานจริงในโรงงาน (Hybrid Rasa + LangChain)
- SimpliAgentic — อนาคตของโรงงานอัตโนมัติอัจฉริยะมาถึงแล้ว
- ทำไม “Android Internals” จึงสำคัญ — และบริการระดับสูงที่ธุรกิจของคุณสามารถสร้างได้จากความรู้นี้
- ทำไมธุรกิจควรพัฒนาระบบอีคอมเมิร์ซของตัวเอง (แทนการเช่าแพลตฟอร์มสำเร็จรูป)
- Upstream, Downstream และ Fork คืออะไร? คู่มือเข้าใจง่ายสำหรับนักพัฒนา Android & Linux
- บิ๊กเทคกำลังก่อ “ฟองสบู่ AI” อย่างไร? วิเคราะห์ NVIDIA, Microsoft, OpenAI, Google, Oracle และบทบาทของ AMD
- Deep Learning ในงานพัฒนาอสังหาริมทรัพย์
- บริการแก้โค้ดและดูแลระบบ Legacy — ทำให้ระบบธุรกิจของคุณเสถียร พร้อมใช้งานตลอดเวลา
- Python Deep Learning สำหรับโรงงานอัตโนมัติ: คู่มือฉบับสมบูรณ์ (อัปเดตปี 2025)
- บริการพัฒนาและฝึกอบรม Python สำหรับโรงงานอุตสาหกรรม (Factory Systems)
- ทำไม Python + Django คือ Tech Stack ที่ดีที่สุดในการสร้างระบบ eCommerce สมัยใหม่ (คู่มือฉบับสมบูรณ์ + แผนราคา)
- กลยุทธ์ซานซือหลิ่วจี (三十六计): คู่มือกลยุทธ์ธุรกิจจีนยุคใหม่ เข้าใจวิธีคิด การเจรจา และการแข่งขันแบบจีน
- เข้าใจ Training, Validation และ Testing ใน Machine Learning
- เข้าใจ Neural Network ให้ลึกจริง — ทำไมต้อง Convolution, ทำไม ReLU ต้องตามหลัง Conv2d และทำไมเลเยอร์ลึกขึ้นถึงเรียนรู้ฟีเจอร์ซับซ้อนขึ้น













