ข้ามไปยังเนื้อหาหลัก

ภาพรวม

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

  1. Casdoor ปฏิบัติตามสถาปัตยกรรมที่แยกส่วนหน้าและหลังบ้าน พัฒนาโดย Golang มันรองรับการทำงานพร้อมกันจำนวนมาก ให้ UI บนเว็บสำหรับการจัดการ และรองรับการเป็นท้องถิ่นใน 10+ ภาษา

  2. Casdoor รองรับการเข้าสู่ระบบแอปพลิเคชันของบุคคลที่สาม เช่น GitHub, Google, QQ และ WeChat และมันรองรับการขยายการเข้าสู่ระบบของบุคคลที่สามด้วยปลั๊กอิน

  3. Casdoor รองรับการจัดการอนุญาตตาม Casbin มันรองรับ ACL, RBAC, ABAC และโมเดลการควบคุมการเข้าถึงแบบ RESTful

  4. Casdoor ให้บริการรหัสยืนยันทางโทรศัพท์ รหัสยืนยันทางอีเมล และฟังก์ชันการเรียกคืนรหัสผ่าน

  5. Casdoor รองรับการตรวจสอบและบันทึกการเข้าถึงบันทึก

  6. Casdoor รวมกับ Alibaba Cloud, Tencent Cloud และ Qiniu Cloud image CDN cloud storage

  7. Casdoor อนุญาตให้ปรับแต่งหน้าการลงทะเบียน การเข้าสู่ระบบ และการเรียกคืนรหัสผ่าน

  8. Casdoor รองรับการรวมเข้ากับระบบที่มีอยู่โดยการซิงโครไนซ์ฐานข้อมูล เพื่อให้การเปลี่ยนไปใช้ Casdoor เป็นไปอย่างราบรื่น

  9. Casdoor รองรับฐานข้อมูลหลักๆ เช่น MySQL, PostgreSQL และ SQL Server และรองรับการขยายฐานข้อมูลใหม่ๆ ด้วยปลั๊กอิน

วิธีการทำงาน

หลักการ

ขั้นตอนที่ 0 (ความรู้พื้นฐาน)

  1. 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.

Casnode

Casnode is the official forum developed by the Casbin community.

It uses Casdoor as the authentication platform and manages members.

สถาปัตยกรรม

Casdoor consists of two parts:

ชื่อคำอธิบายภาษาซอร์สโค้ด
ฝ่ายหน้าบ้านUI ส่วนหน้าเว็บสำหรับ CasdoorJavaScript + Reacthttps://github.com/casdoor/casdoor/tree/master/web
ฝ่ายหลังบ้านRESTful API ฝ่ายหลังบ้านสำหรับ CasdoorGolang + Beego + SQLhttps://github.com/casdoor/casdoor