ภาพรวม
Casdoor is a UI-first Identity Access Management (IAM) / Single-Sign-On (SSO) platform with a web UI that supports OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, RADIUS, Google Workspace, Active Directory, and Kerberos.
Casdoor ให้บริการทั้ง UI เว็บและคำขอการเข้าสู่ระบบจากผู้ใช้แอปพลิเคชัน
คุณสมบัติของ Casdoor
Casdoor follows a frontend-backend separation architecture and is developed in Golang. It supports high concurrency, provides a web-based UI for management, and supports localization in over 10 languages.
Casdoor supports third-party application login options, such as GitHub, Google, QQ, and WeChat, and supports extending third-party login capabilities with plugins.
Casdoor รองรับการจัดการอนุญาตตาม Casbin มันรองรับ ACL, RBAC, ABAC และโมเดลการควบคุมการเข้าถึงแบบ RESTful
Casdoor provides phone verification codes, email verification codes, and password retrieval functionality.
Casdoor supports auditing and recording of access logs.
Casdoor integrates with Alibaba Cloud, Tencent Cloud, and Qiniu Cloud for image CDN and cloud storage.
Casdoor อนุญาตให้ปรับแต่งหน้าการลงทะเบียน การเข้าสู่ระบบ และการเรียกคืนรหัสผ่าน
Casdoor supports integration with existing systems through database synchronization, enabling a smooth transition to Casdoor.
Casdoor supports mainstream databases such as MySQL, PostgreSQL, and SQL Server, and supports extending to new databases with plugins.
วิธีการทำงาน

ขั้นตอนที่ 0 (ความรู้พื้นฐาน)
- Casdoor ปฏิบัติตามกระบวนการอนุญาตที่สร้างขึ้นบนโปรโตคอล OAuth 2.0 We highly recommend gaining a brief understanding of how OAuth 2.0 works. คุณสามารถอ้างอิงไปยัง บทนำ ของ OAuth 2.0

ขั้นตอนที่ 1 (คำขออนุญาต)
แอปพลิเคชันของคุณ (ซึ่งอาจเป็นเว็บไซต์หรือแอปพลิเคชันอื่นๆ) ควรจะสร้าง URL ตามรูปแบบต่อไปนี้: endpoint/login/oauth/authorize?client_id=xxx&response_type=code&redirect_uri=xxx&scope=read&state=xxx Replace endpoint with your Casdoor host URL and xxx with your own information.
วิธีการกรอกส่วนของ xxx?
For
client_id: you can find this under each individual Application.สำหรับ
redirect_uri: คุณควรตั้งค่านี้เป็น URL ของแอปพลิเคชันของคุณเอง Casdoor จะใช้ข้อมูลนี้ในการส่งคำตอบกลับหลังจากการอนุญาตสำหรับ
state: คุณควรกรอกข้อมูลนี้ด้วยชื่อแอปพลิเคชันของคุณ
แอปพลิเคชันจะแจ้งผู้ใช้: "เฮ้ ฉันต้องการทรัพยากรบางอย่างและฉันต้องการอนุญาตจากคุณเพื่อเข้าถึงทรัพยากรเหล่านี้ คุณสามารถไปที่ URL นี้และป้อนชื่อผู้ใช้และรหัสผ่านของคุณให้ฉันได้ไหม?" ด้วย URL ที่ถูกต้อง แอปพลิเคชันของคุณจะทำให้ผู้ใช้ส่งคำขอไปยัง URL นี้ และ Authorization Request ก็เสร็จสมบูรณ์
ขั้นตอนนี้ง่ายมาก: ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยัง URL ที่สร้างขึ้นในขั้นตอนที่ 1 และผู้ใช้จะเห็นหน้าล็อกอินจาก Casdoor
ขั้นตอนที่ 2 (การให้สิทธิ์อนุญาต)
โดยการป้อนชื่อผู้ใช้และข้อมูลประจำตัวที่ถูกต้องลงในหน้าล็อกอิน Casdoor จะทราบตัวตนของผู้ใช้และกำลังจะส่งสองชิ้นข้อมูลกลับไปยัง URL ที่ตั้งไว้ในขั้นตอนที่ 1: code และ state ด้วยสองชิ้นข้อมูลที่ส่งกลับมายังแอปพลิเคชันของคุณ การอนุญาตจะได้รับแก่แอปพลิเคชัน และ Authorization Grant ก็เสร็จสมบูรณ์
The user opens the URL and provides credentials to Casdoor. Casdoor will say: "Looking good ~ this is the user (who is authorizing the Application to receive 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) You can log in to your app using these providers, with Casdoor acting as middleware.
ขั้นตอนที่ 3 (การให้สิทธิ์อนุญาต)
Casdoor ตอบกลับแอปพลิเคชันของคุณ: "คุณรู้ไหม รหัส code นี้ดูถูกต้อง คุณต้องเป็นแอปพลิเคชันที่ถูกต้อง นี่คือ access_token สำหรับคุณ" ด้วยรหัส code นี้ Casdoor ยืนยันว่าเป็นแอปพลิเคชันที่ได้รับอนุญาต (ได้รับอนุญาตจากผู้ใช้ที่ถูกต้องในขั้นตอนที่ 2) ที่พยายามขอ access_token (ซึ่งจะใช้ในภายหลังเพื่อเข้าถึงทรัพยากรเพิ่มเติม) ในขั้นตอนนี้ แอปพลิเคชันของคุณพูดว่า: "ดีมาก! ฉันเพิ่งได้รับ access_token ที่สดและอร่อย ตอนนี้ฉันสามารถใช้มันเพื่อเข้าถึงสิ่งที่มีค่ามากขึ้นจาก Resource Server!"
ขั้นตอนที่ 4 (โทเค็นการเข้าถึง)
แอปพลิเคชันของคุณจากนั้นจะหันไปหา Resource Server และพูดว่า: "เฮ้เพื่อน คุณสามารถตรวจสอบ access_token นี้ได้ไหม? ฉันได้รับมันมาจาก Casdoor คุณต้องการตรวจสอบว่านี่คือโทเค็นที่ถูกต้องที่คุณออกให้กับ Casdoor ไหม?" You must be the authorized Application. และนั่นคือวิธีการทำงานของ Casdoor กับแอปพลิเคชันของคุณโดยพื้นฐาน
ขั้นตอนที่ 5 (โทเค็นการเข้าถึง)
Casdoor สามารถทำหน้าที่เป็นทั้ง Authorization Server และ Resource Server I just got the fresh access_token. 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 |