ภาพรวม
Casdoor is a UI-first Identity Access Management (IAM) / Single-Sign-On (SSO) platform with web UI supporting OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory and Kerberos.
Casdoor ให้บริการทั้ง UI เว็บและคำขอการเข้าสู่ระบบจากผู้ใช้แอปพลิเคชัน
คุณสมบัติของ Casdoor
Casdoor ปฏิบัติตามสถาปัตยกรรมที่แยกส่วนหน้าและหลังบ้าน พัฒนาโดย Golang มันรองรับการทำงานพร้อมกันจำนวนมาก ให้ UI บนเว็บสำหรับการจัดการ และรองรับการเป็นท้องถิ่นใน 10+ ภาษา
Casdoor รองรับการเข้าสู่ระบบแอปพลิเคชันของบุคคลที่สาม เช่น GitHub, Google, QQ และ WeChat และมันรองรับการขยายการเข้าสู่ระบบของบุคคลที่สามด้วยปลั๊กอิน
Casdoor รองรับการจัดการอนุญาตตาม Casbin มันรองรับ ACL, RBAC, ABAC และโมเดลการควบคุมการเข้าถึงแบบ RESTful
Casdoor ให้บริการรหัสยืนยันทางโทรศัพท์ รหัสยืนยันทางอีเมล และฟังก์ชันการเรียกคืนรหัสผ่าน
Casdoor รองรับการตรวจสอบและบันทึกการเข้าถึงบันทึก
Casdoor รวมกับ Alibaba Cloud, Tencent Cloud และ Qiniu Cloud image CDN cloud storage
Casdoor อนุญาตให้ปรับแต่งหน้าการลงทะเบียน การเข้าสู่ระบบ และการเรียกคืนรหัสผ่าน
Casdoor รองรับการรวมเข้ากับระบบที่มีอยู่โดยการซิงโครไนซ์ฐานข้อมูล เพื่อให้การเปลี่ยนไปใช้ Casdoor เป็นไปอย่างราบรื่น
Casdoor รองรับฐานข้อมูลหลักๆ เช่น MySQL, PostgreSQL และ SQL Server และรองรับการขยายฐานข้อมูลใหม่ๆ ด้วยปลั๊กอิน
วิธีการทำงาน
ขั้นตอนที่ 0 (ความรู้พื้นฐาน)
- Casdoor ปฏิบัติตามกระบวนการอนุญาตที่สร้างขึ้นบนโปรโตคอล OAuth 2.0 ขอแนะนำอย่างยิ่งให้มีความเข้าใจโดยสังเขปเกี่ยวกับวิธีการทำงานของ OAuth 2.0 คุณสามารถอ้างอิงไปยัง บทนำ ของ OAuth 2.0
ขั้นตอนที่ 1 (คำขออนุญาต)
แอปพลิเคชันของคุณ (ซึ่งอาจเป็นเว็บไซต์หรือแอปพลิเคชันอื่นๆ) ควรจะสร้าง URL ตามรูปแบบต่อไปนี้: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx
แทนที่ endpoint
ด้วย URL โฮสต์ของ Casdoor ของคุณ และ xxx
ด้วยข้อมูลของคุณเอง
วิธีการกรอกส่วนของ xxx
?
สำหรับ
client_id
: คุณสามารถหาข้อมูลนี้ได้ในแต่ละแอปพลิเคชันสำหรับ
redirect_uri
: คุณควรตั้งค่านี้เป็น URL ของแอปพลิเคชันของคุณเอง Casdoor จะใช้ข้อมูลนี้ในการส่งคำตอบกลับหลังจากการอนุญาตสำหรับ
state
: คุณควรกรอกข้อมูลนี้ด้วยชื่อแอปพลิเคชันของคุณ
แอปพลิเคชันจะแจ้งผู้ใช้: "เฮ้ ฉันต้องการทรัพยากรบางอย่างและฉันต้องการอนุญาตจากคุณเพื่อเข้าถึงทรัพยากรเหล่านี้ คุณสามารถไปที่ URL นี้และป้อนชื่อผู้ใช้และรหัสผ่านของคุณให้ฉันได้ไหม?" ด้วย URL ที่ถูกต้อง แอปพลิเคชันของคุณจะทำให้ผู้ใช้ส่งคำขอไปยัง URL นี้ และ Authorization Request
ก็เสร็จสมบูรณ์
ขั้นตอนนี้ง่ายมาก: ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยัง URL ที่สร้างขึ้นในขั้นตอนที่ 1 และผู้ใช้จะเห็นหน้าล็อกอินจาก Casdoor
ขั้นตอนที่ 2 (การให้สิทธิ์อนุญาต)
โดยการป้อนชื่อผู้ใช้และข้อมูลประจำตัวที่ถูกต้องลงในหน้าล็อกอิน Casdoor จะทราบตัวตนของผู้ใช้และกำลังจะส่งสองชิ้นข้อมูลกลับไปยัง URL ที่ตั้งไว้ในขั้นตอนที่ 1: code
และ state
ด้วยสองชิ้นข้อมูลที่ส่งกลับมายังแอปพลิเคชันของคุณ การอนุญาตจะได้รับแก่แอปพลิเคชัน และ Authorization Grant
ก็เสร็จสมบูรณ์
ผู้ใช้เปิด URL และให้ข้อมูลประจำตัวเพื่อเข้าสู่ระบบ Casdoor Casdoor will say: "Looking good ~ this is the user (who is authorizing the Application to get the code
and state
) I know in my database, and I will send the code
and state
back to the Application using the callback URL (redirect_uri
)".
Casdoor ยังรองรับการล็อกอินด้วยบัญชีจากบุคคลที่สาม
ในกรณีนี้ แทนที่จะเห็นหน้าป้อนข้อมูลประจำตัว คุณจะเห็นรายการของผู้ให้บริการบุคคลที่สาม คุณสามารถล็อกอินเข้าสู่แอปพลิเคชันของคุณโดยใช้ผู้ให้บริการเหล่านี้ โดยมี Casdoor เป็นชั้นกลาง (middleware) ในขั้นตอนนี้ แอปพลิเคชันของคุณมีรหัสจากขั้นตอนที่ 2 และจะพูดกับ Casdoor: "เฮ้ ผู้ใช้ตกลงที่จะให้ code
กับฉัน คุณสามารถตรวจสอบ code
นี้และให้ access_token
กับฉันได้ไหม?"
ขั้นตอนที่ 3 (การให้สิทธิ์อนุญาต)
Casdoor ตอบกลับแอปพลิเคชันของคุณ: "คุณรู้ไหม รหัส code
นี้ดูถูกต้อง คุณต้องเป็นแอปพลิเคชันที่ถูกต้อง นี่คือ access_token
สำหรับคุณ" ด้วยรหัส code
นี้ Casdoor ยืนยันว่าเป็นแอปพลิเคชันที่ได้รับอนุญาต (ได้รับอนุญาตจากผู้ใช้ที่ถูกต้องในขั้นตอนที่ 2) ที่พยายามขอ access_token
(ซึ่งจะใช้ในภายหลังเพื่อเข้าถึงทรัพยากรเพิ่มเติม) ในขั้นตอนนี้ แอปพลิเคชันของคุณพูดว่า: "ดีมาก! ฉันเพิ่งได้รับ access_token
ที่สดและอร่อย ตอนนี้ฉันสามารถใช้มันเพื่อเข้าถึงสิ่งที่มีค่ามากขึ้นจาก Resource Server
!"
ขั้นตอนที่ 4 (โทเค็นการเข้าถึง)
แอปพลิเคชันของคุณจากนั้นจะหันไปหา Resource Server
และพูดว่า: "เฮ้เพื่อน คุณสามารถตรวจสอบ access_token
นี้ได้ไหม? ฉันได้รับมันมาจาก Casdoor คุณต้องการตรวจสอบว่านี่คือโทเค็นที่ถูกต้องที่คุณออกให้กับ Casdoor ไหม?" Resource Server
ตอบกลับแอปพลิเคชันของคุณ: "ไม่เลวเลย มันดูเหมือนกับที่ฉันออกให้กับ Casdoor และ Casdoor บอกว่าใครก็ตามที่ถือ access_token
นี้สามารถเข้าถึง Protected Resources
ได้ ดังนั้นไปเลยและเอามันไป!" และนั่นคือวิธีการทำงานของ Casdoor กับแอปพลิเคชันของคุณโดยพื้นฐาน
ขั้นตอนที่ 5 (โทเค็นการเข้าถึง)
Casdoor สามารถทำหน้าที่เป็นทั้ง Authorization Server
และ Resource Server
กล่าวคือ Casdoor ให้อนุญาตแอปพลิเคชันของคุณเข้าถึงทรัพยากร โดยปกติจะเป็นข้อมูลของผู้ใช้ที่เข้าสู่ระบบในขณะนั้น จากฐานข้อมูลของ Casdoor Casbin-OA เป็นหนึ่งในแอปเว็บของ Casbin
มันใช้ Casdoor เพื่อการตรวจสอบสิทธิ์ Casnode เป็นฟอรัมอย่างเป็นทางการที่พัฒนาโดยชุมชน Casbin มันใช้ Casdoor เป็นแพลตฟอร์มการตรวจสอบสิทธิ์และจัดการสมาชิก
ขั้นตอนที่ 6 (ทรัพยากรที่ได้รับการป้องกัน)
Casdoor ประกอบด้วยสองส่วน: Casdoor จะพูดว่า: "ดูดี ~ นี่คือผู้ใช้ (ที่กำลังอนุญาตแอปพลิเคชันเพื่อรับ code
และ state
) ที่ฉันรู้จักในฐานข้อมูลของฉัน และฉันจะส่ง code
และ state
กลับไปยังแอปพลิเคชันโดยใช้ URL ของการเรียกกลับ (redirect_uri
)" https://github.com/casdoor/casdoor/tree/master/web
https://github.com/casdoor/casdoor
Casdoor เป็นแพลตฟอร์ม Identity Access Management (IAM) / Single-Sign-On (SSO) ที่มี UI เป็นหลัก รองรับ OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory และ Kerberos In other words, Casdoor authorizes your Application to access resources, usually the currently logged-in user's information, from Casdoor's database.
การสาธิตออนไลน์
Casdoor
นี่คือการสาธิตออนไลน์ที่ติดตั้งโดย Casbin
การเข้าสู่ระบบผู้ดูแลระบบทั่วโลก:
- ชื่อผู้ใช้:
admin
- รหัสผ่าน:
123
Casbin-OA
Casbin-OA is one of the Casbin web apps. It uses Casdoor for authentication.
- Casbin-OA
- ซอร์สโค้ด: https://github.com/casbin/casbin-oa
Casnode
Casnode is the official forum developed by the Casbin community.
It uses Casdoor as the authentication platform and manages members.
- Casnode
- ซอร์สโค้ด: https://github.com/casbin/casnode
สถาปัตยกรรม
Casdoor consists of two parts:
ชื่อ | คำอธิบาย | ภาษา | ซอร์สโค้ด |
---|---|---|---|
ฝ่ายหน้าบ้าน | UI ส่วนหน้าเว็บสำหรับ Casdoor | JavaScript + React | https://github.com/casdoor/casdoor/tree/master/web |
ฝ่ายหลังบ้าน | RESTful API ฝ่ายหลังบ้านสำหรับ Casdoor | Golang + Beego + SQL | https://github.com/casdoor/casdoor |