Overview
Casbin هو مكتبة مفتوحة المصدر قوية وفعالة للتحكم في الوصول تدعم مختلف نماذج التحكم في الوصول لفرض التفويض عبر اللوحة.
تطبيق مجموعة من القواعد بسيط مثل سرد الموضوعات والكائنات والإجراء المسموح به المطلوب (أو أي تنسيق آخر حسب احتياجاتك) في ملف policy. هذا مترادف في جميع التدفقات التي يُستخدم فيها Casbin. للمطور/المسؤول السيطرة الكاملة على التخطيط والتنفيذ والشروط للتفويض، والتي يتم تعيينها عبر ملف model. Casbin يوفر Enforcer للتحقق من صحة طلب وارد بناءً على ملفات السياسة والنموذج المقدمة للمنفذ.
اللغات التي يدعمها Casbin
Casbin يوفر دعمًا لمختلف لغات البرمجة، جاهزة للتكامل ضمن أي مشروع وسير عمل:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
جاهز للإنتاج | جاهز للإنتاج | جاهز للإنتاج | جاهز للإنتاج |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
جاهز للإنتاج | جاهز للإنتاج | جاهز للإنتاج | جاهز للإنتاج |
مجموعة الميزات للغات المختلفة
نحن دائمًا نعمل بأفضل ما لدينا لجعل Casbin يمتلك نفس مجموعة الميزات لجميع اللغات. ومع ذلك، الواقع ليس بهذا الجمال.
الميزة | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
ملاحظة - ✅ لـ Watcher أو Role Manager يعني فقط وجود الواجهة في المكتبة الأساسية. هذا لا يدل على ما إذا كان هناك تنفيذ لـ watcher أو role manager متاحًا.
ما هو Casbin؟
Casbin هو مكتبة تفويض يمكن استخدامها في التدفقات التي نريد فيها كائنًا معينًا أو object
ليتم الوصول إليه من قبل مستخدم محدد أو subject
. نوع الوصول، أي action
، يمكن أن يكون read، write، delete، أو أي إجراء آخر كما حدده المطور. هكذا يُستخدم Casbin على نطاق واسع، ويُسمى بالتدفق "القياسي" أو الكلاسيكي { subject, object, action }
.
Casbin قادر على التعامل مع العديد من السيناريوهات المعقدة للتفويض بخلاف التدفق القياسي. يمكن أن يكون هناك إضافة الأدوار (RBAC)، الخصائص (ABAC)، إلخ.
ماذا يفعل Casbin
- فرض السياسة بالشكل الكلاسيكي
{ subject, object, action }
أو بشكل مخصص كما حددت. يتم دعم كل من التفويضات المسموح بها والمرفوضة. - التعامل مع تخزين نموذج التحكم في الوصول وسياسته.
- إدارة تعيينات الدور-المستخدم وتعيينات الدور-الدور (المعروفة أيضًا بالتسلسل الهرمي للأدوار في RBAC).
- دعم المستخدمين الفائقين المدمجين مثل
root
أوadministrator
. يمكن للمستخدم الخارق أن يقوم بأي شيء دون الحاجة إلى صلاحيات صريحة. - توفير عدة عوامل تشغيل مدمجة لدعم مطابقة القواعد. على سبيل المثال، يمكن لـ
keyMatch
أن يقوم بتعيين مفتاح المورد/foo/bar
إلى النمط/foo*
.
ما لا يقوم به Casbin
- المصادقة (أي التحقق من
username
وpassword
عند تسجيل دخول المستخدم) - إدارة قائمة المستخدمين أو الأدوار.
من الأكثر ملاءمة للمشاريع أن تدير قوائمها الخاصة بالمستخدمين، الأدوار، أو كلمات المرور. عادة ما يكون للمستخدمين كلمات مرور خاصة بهم، ولم يتم تصميم Casbin كحاوية لكلمات المرور. ومع ذلك، يخزن Casbin تعيين المستخدم-الدور لسيناريو RBAC.