Logto คือทางเลือกแทน Auth0 ที่ออกแบบมาสำหรับแอปและผลิตภัณฑ์ SaaS ยุคใหม่ โดยมีทั้งบริการ Cloud และ Open-source เพื่อช่วยให้คุณเปิดตัวระบบการจัดการเอกลักษณ์และการเข้าถึง (IAM) ได้อย่างรวดเร็ว สนุกกับการยืนยันตัวตน (การยืนยันตัวตน), การอนุญาต (การอนุญาต), และการจัดการหลายผู้เช่า ครบจบในที่เดียว
เราแนะนำให้เริ่มต้นด้วย tenant สำหรับการพัฒนาแบบฟรีบน Logto Cloud เพื่อให้คุณสามารถสำรวจฟีเจอร์ทั้งหมดได้อย่างง่ายดาย
ในบทความนี้ เราจะพาคุณไปทีละขั้นตอนเพื่อสร้างประสบการณ์ลงชื่อเข้าใช้ Azure AD (การยืนยันตัวตนของผู้ใช้) อย่างรวดเร็วด้วย Python และ Logto
ข้อกำหนดเบื้องต้น
- มี Logto instance ที่พร้อมใช้งาน ดู หน้าแนะนำ เพื่อเริ่มต้นใช้งาน
- มีความรู้พื้นฐานเกี่ยวกับ Python
- มีบัญชี Azure AD ที่ใช้งานได้
สร้างแอปพลิเคชันใน Logto
Logto สร้างขึ้นบนพื้นฐานของการยืนยันตัวตน OpenID Connect (OIDC) และการอนุญาต OAuth 2.0 โดยรองรับการจัดการข้อมูลระบุตัวตนแบบรวมศูนย์ข้ามหลายแอปพลิเคชัน ซึ่งมักเรียกว่า การลงชื่อเข้าใช้ครั้งเดียว (Single Sign-On; SSO)
ในการสร้างแอปพลิเคชัน เว็บแบบดั้งเดิม ของคุณ เพียงทำตามขั้นตอนเหล่านี้:
- เปิด Logto Console ในส่วน "เริ่มต้นใช้งาน" ให้คลิกที่ลิงก์ "ดูทั้งหมด" เพื่อเปิดรายการเฟรมเวิร์กของแอปพลิเคชัน หรือคุณสามารถไปที่ Logto Console > Applications แล้วคลิกปุ่ม "สร้างแอปพลิเคชัน"
- ในหน้าต่างที่เปิดขึ้น ให้คลิกที่ส่วน "เว็บแบบดั้งเดิม" หรือกรองเฟรมเวิร์ก "เว็บแบบดั้งเดิม" ทั้งหมดที่มีโดยใช้ช่องกรองด่วนทางซ้ายมือ จากนั้นคลิกที่การ์ดเฟรมเวิร์ก "Flask" เพื่อเริ่มสร้างแอปพลิเคชันของคุณ
- กรอกชื่อแอปพลิเคชัน เช่น "Bookstore" แล้วคลิก "สร้างแอปพลิเคชัน"
🎉 เยี่ยมมาก! คุณเพิ่งสร้างแอปพลิเคชันแรกของคุณใน Logto คุณจะเห็นหน้าข้อความแสดงความยินดีซึ่งมีคู่มือการเชื่อมต่ออย่างละเอียด ให้ทำตามคู่มือเพื่อดูประสบการณ์ที่จะเกิดขึ้นในแอปพลิเคชันของคุณ
ผสานรวม Flask กับ Logto
- ตัวอย่างนี้ใช้ Flask แต่แนวคิดเดียวกันนี้ใช้ได้กับเฟรมเวิร์กอื่น ๆ
- โปรเจกต์ตัวอย่างภาษา Python มีให้ใน Python SDK repo ของเรา
- Logto SDK ใช้ coroutines อย่าลืมใช้
await
เมื่อเรียกฟังก์ชันแบบ async
การติดตั้ง
ดำเนินการในไดเรกทอรีรากของโปรเจกต์:
pip install logto # หรือ `poetry add logto` หรือเครื่องมือที่คุณใช้
เริ่มต้น LogtoClient
ก่อนอื่น สร้าง Logto config:
from logto import LogtoClient, LogtoConfig
client = LogtoClient(
LogtoConfig(
endpoint="https://you-logto-endpoint.app", # แทนที่ด้วย Logto endpoint ของคุณ
appId="replace-with-your-app-id",
appSecret="replace-with-your-app-secret",
),
)
คุณสามารถค้นหาและคัดลอก "App Secret" ได้จากหน้ารายละเอียดแอปพลิเคชันใน Admin Console:

นอกจากนี้ ให้แทนที่ memory storage เริ่มต้นด้วย storage แบบถาวร เช่น:
from logto import LogtoClient, LogtoConfig, Storage
from flask import session
from typing import Union
class SessionStorage(Storage):
def get(self, key: str) -> Union[str, None]:
return session.get(key, None)
def set(self, key: str, value: Union[str, None]) -> None:
session[key] = value
def delete(self, key: str) -> None:
session.pop(key, None)
client = LogtoClient(
LogtoConfig(...),
storage=SessionStorage(),
)
ดูรายละเอียดเพิ่มเติมได้ที่ Storage
สร้างฟังก์ชันลงชื่อเข้าใช้และออกจากระบบ
ในแอปพลิเคชันเว็บของคุณ ให้เพิ่ม route เพื่อจัดการคำขอลงชื่อเข้าใช้จากผู้ใช้อย่างถูกต้อง ตัวอย่างนี้จะใช้ /sign-in
:
@app.route("/sign-in")
async def sign_in():
# รับ URL สำหรับลงชื่อเข้าใช้และเปลี่ยนเส้นทางผู้ใช้ไปยังหน้านั้น
return redirect(await client.signIn(
redirectUri="http://localhost:3000/callback",
))
แทนที่ http://localhost:3000/callback
ด้วย callback URL ที่คุณตั้งค่าไว้ใน Logto Console สำหรับแอปพลิเคชันนี้
หากคุณต้องการแสดงหน้าสมัครสมาชิก (sign-up) เป็นหน้าจอแรก สามารถตั้งค่า interactionMode
เป็น signUp
ได้ดังนี้:
@app.route("/sign-in")
async def sign_in():
return redirect(await client.signIn(
redirectUri="http://localhost:3000/callback",
interactionMode="signUp", # แสดงหน้าสมัครสมาชิกเป็นหน้าจอแรก
))
ตอนนี้ ทุกครั้งที่ผู้ใช้ของคุณเข้าชม http://localhost:3000/sign-in
จะเริ่มกระบวนการลงชื่อเข้าใช้ใหม่และเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าลงชื่อเข้าใช้ของ Logto
หมายเหตุ การสร้าง route สำหรับลงชื่อเข้าใช้ไม่ใช่วิธีเดียวในการเริ่มต้นกระบวนการลงชื่อเข้าใช้ คุณสามารถใช้เมธอด
signIn
เพื่อรับ URL สำหรับลงชื่อเข้าใช้และเปลี่ยนเส้นทางผู้ใช้ไปยังหน้านั้นได้เสมอ
หลังจากที่ผู้ใช้ร้องขอลงชื่อออก Logto จะล้างข้อมูลการยืนยันตัวตนของผู้ใช้ทั้งหมดใน session
เพื่อเคลียร์ session ของ Python และ session ของ Logto สามารถสร้าง route สำหรับลงชื่อออกได้ดังนี้:
@app.route("/sign-out")
async def sign_out():
return redirect(
# เปลี่ยนเส้นทางผู้ใช้ไปยังหน้าแรกหลังจากลงชื่อออกสำเร็จ
await client.signOut(postLogoutRedirectUri="http://localhost:3000/")
)
จัดการสถานะการยืนยันตัวตน (Authentication)
ใน Logto SDK เราสามารถใช้ client.isAuthenticated()
เพื่อตรวจสอบสถานะการยืนยันตัวตน (authentication) ได้ หากผู้ใช้ลงชื่อเข้าใช้แล้ว ค่านี้จะเป็น true หากยังไม่ลงชื่อเข้าใช้ ค่านี้จะเป็น false
ที่นี่เรายังได้สร้างหน้าแรกอย่างง่ายเพื่อสาธิตการทำงานดังนี้:
- หากผู้ใช้ยังไม่ลงชื่อเข้าใช้ จะแสดงปุ่มลงชื่อเข้าใช้
- หากผู้ใช้ลงชื่อเข้าใช้แล้ว จะแสดงปุ่มลงชื่อออก
@app.route("/")
async def home():
if client.isAuthenticated() is False:
return "ยังไม่ได้ยืนยันตัวตน <a href='/sign-in'>ลงชื่อเข้าใช้</a>"
return "ยืนยันตัวตนแล้ว <a href='/sign-out'>ลงชื่อออก</a>"
จุดตรวจสอบ: ทดสอบแอปพลิเคชันของคุณ
ตอนนี้คุณสามารถทดสอบแอปพลิเคชันของคุณได้แล้ว:
- รันแอปพลิเคชันของคุณ คุณจะเห็นปุ่มลงชื่อเข้าใช้
- คลิกปุ่มลงชื่อเข้าใช้ SDK จะเริ่มกระบวนการลงชื่อเข้าใช้และเปลี่ยนเส้นทางคุณไปยังหน้าลงชื่อเข้าใช้ของ Logto
- หลังจากที่คุณลงชื่อเข้าใช้แล้ว คุณจะถูกเปลี่ยนเส้นทางกลับไปยังแอปพลิเคชันของคุณและเห็นปุ่มลงชื่อออก
- คลิกปุ่มลงชื่อออกเพื่อเคลียร์ที่เก็บโทเค็นและออกจากระบบ
เพิ่มตัวเชื่อมต่อ Azure AD
เพื่อเปิดใช้งานการลงชื่อเข้าใช้อย่างรวดเร็วและเพิ่มอัตราการเปลี่ยนผู้ใช้ ให้เชื่อมต่อกับ Flask ในฐานะผู้ให้บริการข้อมูลระบุตัวตน (Identity provider) ตัวเชื่อมต่อโซเชียลของ Logto ช่วยให้คุณสร้างการเชื่อมต่อนี้ได้ภายในไม่กี่นาที โดยสามารถกรอกพารามิเตอร์ได้หลายค่า
ในการเพิ่มตัวเชื่อมต่อโซเชียล ให้ทำตามขั้นตอนดังนี้:
- ไปที่ Console > Connectors > Social Connectors
- คลิก "Add social connector" และเลือก "Azure AD"
- ทำตามคู่มือ README กรอกข้อมูลที่จำเป็น และปรับแต่งการตั้งค่า

หากคุณกำลังทำตามคู่มือ Connector แบบ in-place คุณสามารถข้ามส่วนถัดไปได้
ตั้งค่า Azure AD
ตั้งค่า Microsoft Azure AD ใน Azure Portal
- ไปที่ Azure Portal และลงชื่อเข้าใช้ด้วยบัญชี Azure ของคุณ คุณต้องมีการสมัครใช้งานที่ใช้งานอยู่เพื่อเข้าถึง Microsoft Azure AD
- คลิก Azure Active Directory จากบริการที่มีให้ และคลิก App Registrations จากเมนูด้านซ้าย
- คลิก New Registration ที่ด้านบน กรอกคำอธิบาย เลือก access type ของคุณ และเพิ่ม Redirect URI ซึ่งจะเปลี่ยนเส้นทางผู้ใช้ไปยังแอปพลิเคชันหลังจากเข้าสู่ระบบ ในกรณีนี้จะเป็น
${your_logto_endpoint}/callback/${connector_id}
เช่นhttps://foo.logto.app/callback/${connector_id}
โดยสามารถดูconnector_id
ได้ที่แถบด้านบนของหน้ารายละเอียดตัวเชื่อมต่อใน Logto Admin Console คุณสามารถคัดลอกCallback URI
ในส่วนการตั้งค่าได้ - เลือก Web เป็น Platform
กรอกค่าการตั้งค่าใน Logto
Name | Type |
---|---|
clientId | string |
clientSecret | string |
tenantId | string |
cloudInstance | string |
Client ID
คุณสามารถค้นหา Application (client) ID ได้ในส่วน Overview ของแอปพลิเคชันที่คุณสร้างใหม่ใน Azure Portal
Client Secret
- ในแอปพลิเคชันที่คุณสร้างใหม่ ให้คลิก Certificates & Secrets เพื่อรับ client secret และคลิก New client secret ที่ด้านบน
- กรอกคำอธิบายและวันหมดอายุ
- ระบบจะแสดง client secret ของคุณเพียงครั้งเดียว ให้นำ value ไปกรอกในค่าการตั้งค่าตัวเชื่อมต่อ Logto และบันทึกไว้ในที่ปลอดภัย
Cloud Instance
โดยปกติจะเป็น https://login.microsoftonline.com/
ดูข้อมูลเพิ่มเติมได้ที่ Azure AD authentication endpoints
Tenant ID
Logto จะใช้ฟิลด์นี้เพื่อสร้าง authorization endpoints ค่านี้ขึ้นอยู่กับ access type ที่คุณเลือกตอนสร้างแอปพลิเคชันใน Azure Portal
- หากคุณเลือก Accounts in this organizational directory only สำหรับ access type ให้กรอก {TenantID} ของคุณ โดยสามารถดู tenant ID ได้ในส่วน Overview ของ Azure Active Directory ของคุณ
- หากคุณเลือก Accounts in any organizational directory สำหรับ access type ให้กรอก organizations
- หากคุณเลือก Accounts in any organizational directory or personal Microsoft accounts สำหรับ access type ให้กรอก common
- หากคุณเลือก Personal Microsoft accounts only สำหรับ access type ให้กรอก consumers
บันทึกการตั้งค่าของคุณ
โปรดตรวจสอบให้แน่ใจว่าคุณได้กรอกค่าที่จำเป็นในพื้นที่การตั้งค่าตัวเชื่อมต่อ Logto เรียบร้อยแล้ว คลิก "บันทึกและเสร็จสิ้น" (หรือ "บันทึกการเปลี่ยนแปลง") และตัวเชื่อมต่อ Azure AD ควรพร้อมใช้งานแล้ว
เปิดใช้งานตัวเชื่อมต่อ Azure AD ในประสบการณ์การลงชื่อเข้าใช้
เมื่อคุณสร้างตัวเชื่อมต่อโซเชียลสำเร็จแล้ว คุณสามารถเปิดใช้งานเป็นปุ่ม "ดำเนินการต่อด้วย Azure AD" ในประสบการณ์การลงชื่อเข้าใช้ (Sign-in Experience) ได้
- ไปที่ Console > ประสบการณ์การลงชื่อเข้าใช้ > สมัครและลงชื่อเข้าใช้
- (ไม่บังคับ) เลือก "ไม่เกี่ยวข้อง" สำหรับตัวระบุการสมัคร หากคุณต้องการเฉพาะการเข้าสู่ระบบโซเชียล
- เพิ่มตัวเชื่อมต่อ Azure AD ที่ตั้งค่าไว้แล้วในส่วน "เข้าสู่ระบบโซเชียล" (Social sign-in)

การทดสอบและการตรวจสอบความถูกต้อง
กลับไปที่แอป Python ของคุณ ตอนนี้คุณควรจะสามารถลงชื่อเข้าใช้ด้วย Azure AD ได้แล้ว ขอให้สนุก!
อ่านเพิ่มเติม
กระบวนการสำหรับผู้ใช้ปลายทาง: Logto มีโฟลว์การยืนยันตัวตนสำเร็จรูปพร้อมใช้งาน รวมถึง MFA และ Enterprise SSO พร้อม API อันทรงพลังสำหรับการปรับแต่งการตั้งค่าบัญชี การตรวจสอบความปลอดภัย และประสบการณ์แบบหลายผู้เช่า (multi-tenant) ได้อย่างยืดหยุ่น
การอนุญาต (Authorization): การอนุญาต (Authorization) กำหนดว่าผู้ใช้สามารถทำอะไรหรือเข้าถึงทรัพยากรใดได้บ้างหลังจากได้รับการยืนยันตัวตนแล้ว สำรวจวิธีปกป้อง API ของคุณสำหรับแอปเนทีฟและแอปหน้าเดียว (SPA) และการใช้งานการควบคุมการเข้าถึงตามบทบาท (RBAC)
องค์กร (Organizations): ฟีเจอร์องค์กรมีประสิทธิภาพอย่างยิ่งใน SaaS แบบหลายผู้เช่าและแอป B2B โดยช่วยให้สร้างผู้เช่า จัดการสมาชิก RBAC ระดับองค์กร และ Just-in-Time Provisioning ได้
ชุดบทความ Customer IAM: บทความต่อเนื่องเกี่ยวกับการจัดการข้อมูลระบุตัวตนและการเข้าถึงของลูกค้า (Customer IAM) ตั้งแต่ระดับพื้นฐาน 101 ไปจนถึงหัวข้อขั้นสูงและอื่น ๆ