Casbin
ห้องสมุดการอนุญาตที่รองรับโมเดลการควบคุมการเข้าถึงเช่น ACL, RBAC, ABAC สำหรับ Golang, Java, C/C++, Node.js, Javascript, PHP, Laravel, Python, .NET (C#), Delphi, Rust, Ruby, Swift (Objective-C), Lua (OpenResty), Dart (Flutter) และ Elixir
![[object Object]](/img/model.png)
โมเดลการควบคุมการเข้าถึงแบบผสม
ใน Casbin, โมเดลการควบคุมการเข้าถึงถูกสรุปเป็นไฟล์ CONF ตาม metamodel PERM (Policy, Effect, Request, Matchers) ดังนั้นการเปลี่ยนหรืออัพเกรดกลไกการอนุญาตสำหรับโปรเจกต์จึงเรียบง่ายเหมือนการแก้ไขการตั้งค่า
![[object Object]](/img/storage.png)
การจัดเก็บนโยบายที่ยืดหยุ่น
นอกจากหน่วยความจำและไฟล์แล้ว นโยบายของ Casbin สามารถจัดเก็บไว้ในที่ต่างๆมากมาย ปัจจุบันมีการสนับสนุนฐานข้อมูลหลายสิบแห่ง ตั้งแต่ MySQL, Postgres, Oracle ไปจนถึง MongoDB, Redis, Cassandra, AWS S3 ตรวจสอบรายการที่สนับสนุนเต็มที่ที่: อะแดปเตอร์
![[object Object]](/img/language.png)
ข้ามภาษา & ข้ามแพลตฟอร์ม
Casbin ได้รับการพัฒนาใน Golang, Java, PHP และ Node.js ทุกการพัฒนามี API และพฤติกรรมที่เหมือนกัน คุณสามารถเรียนรู้ Casbin ครั้งเดียวและใช้งานได้ทุกที่
การต่อเนื่องของนโยบาย
ใน Casbin, การจัดเก็บนโยบายได้รับการดำเนินการเป็นอะแดปเตอร์ (หรือมิดเดิลแวร์สำหรับ Casbin) เพื่อให้มีน้ำหนักเบา เราไม่ได้ใส่โค้ดอะแดปเตอร์ในไลบรารีหลัก (ยกเว้นอะแดปเตอร์ไฟล์เริ่มต้น) รายการอะแดปเตอร์ Casbin ที่สมบูรณ์ได้รับการนำเสนอดังนี้ การมีส่วนร่วมจากบุคคลที่สามใด ๆ ในอะแดปเตอร์ใหม่นั้นได้รับการต้อนรับ โปรดแจ้งให้เราทราบและฉันจะใส่มันในรายการนี้ :) สำหรับรายละเอียดของอะแดปเตอร์ โปรดดูที่เอกสาร: อะแดปเตอร์

การบังคับใช้นโยบายในระดับขนาดใหญ่
บางอะแดปเตอร์รองรับการจัดการนโยบายที่กรองได้ นี่หมายความว่านโยบายที่ Casbin โหลดเป็นเพียงส่วนย่อยของนโยบายในการจัดเก็บตามตัวกรองที่กำหนด สิ่งนี้ช่วยให้การบังคับใช้นโยบายได้อย่างมีประสิทธิภาพในสภาพแวดล้อมที่มีผู้เช่าหลายรายเมื่อการแยกวิเคราะห์นโยบายทั้งหมดกลายเป็นอุปสรรคด้านประสิทธิภาพผู้จัดการบทบาท
ผู้จัดการบทบาทใช้เพื่อจัดการลำดับชั้นบทบาท RBAC (การแมปผู้ใช้-บทบาท) ใน Casbin ผู้จัดการบทบาทสามารถเรียกข้อมูลบทบาทจากกฎนโยบาย Casbin หรือแหล่งข้อมูลภายนอกเช่น LDAP, Okta, Auth0, Azure AD ฯลฯ เราสนับสนุนการดำเนินการที่แตกต่างกันของผู้จัดการบทบาท เพื่อให้มีน้ำหนักเบา เราไม่ได้ใส่โค้ดผู้จัดการบทบาทในไลบรารีหลัก (ยกเว้นผู้จัดการบทบาทเริ่มต้น) รายการผู้จัดการบทบาท Casbin ที่สมบูรณ์ได้รับการนำเสนอเป็น: role-managers
ใครกำลังใช้ Casbin?
มีโปรเจกต์หลายร้อยโปรเจกต์ที่ใช้ Casbin ตั้งแต่บริษัท Fortune 500 ที่มีชื่อเสียงไปจนถึงสตาร์ทอัพใหม่ๆ หากคุณอยากรู้ว่าสามารถทำอะไรได้บ้างกับ Casbin ดูแอปเหล่านี้