
Casbin4D هو تطبيق Cross Platform (Firemonkey) لـ Delphi/Pascal من مكتبة التفويض الشعبية Casbin. ويوفر الدعم لفرض التفويض على أساس نماذج التحكم في الوصول المختلفة.
أنت مدعو بحرارة لمشاركة هذه المكتبة وتحسينها. لا تتردد في التعليق وتقديم الاقتراحات. إذا كنت ترغب في المساهمة ، تحقق من صفحة الويكي للمطورين أولاً
| كاسبين | jcasbin | عقدة كاسبين | PHP-Casbin |
| جاهز للإنتاج | جاهز للإنتاج | جاهز للإنتاج | جاهز للإنتاج |
![]() | |||
|---|---|---|---|
| Pycasbin | Casbin4d | Casbin-Net | Casbin-RS |
| جاهز للإنتاج | تجريبي | جاهز للإنتاج | جاهز للإنتاج |
write-article ، read-log . لا يتحكم في الوصول إلى مقالة أو سجل معين.resource.Owner يمكن استخدام المالك للحصول على السمة لمورد./res/* ، /res/:id و http أساليب مثل GET ، POST ، PUT ، DELETE .في Casbin ، يتم استخلاص نموذج التحكم في الوصول في ملف conf استنادًا إلى metamodel perm (السياسة ، التأثير ، الطلب ، المطابقات) . لذا فإن تبديل أو ترقية آلية التفويض للمشروع أمر بسيط تمامًا مثل تعديل التكوين. يمكنك تخصيص نموذج التحكم في الوصول الخاص بك عن طريق الجمع بين النماذج المتاحة. على سبيل المثال ، يمكنك الحصول على أدوار RBAC وسمات ABAC معًا داخل نموذج واحد ومشاركة مجموعة واحدة من قواعد السياسة.
النموذج الأساسي والأبسط في Casbin هو ACL. يبدو أن نموذج ACL Conf مثل هذا:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where (p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
يتبع التكوين أعلاه لغة GO.
Casbin4d يفهم ذلك ولكن يمكنك أيضًا استخدام نمط Delphi/Pascal النموذجي:
...
[matchers]
m = r.sub = p.sub and r.obj = p.sub and r.act = p.act
مثال على سياسة نموذج ACL مثل:
p, alice, data1, read
p, bob, data2, write
بالنسبة لكازبين هذا يعني أن:
ثم ، في التطبيق الخاص بك ، قم بتثبيت كائن Casbin جديد (متداخل) ويمرر الملفات المطلوبة:
var
casbin: ICasbin;
begin
casbin:=TCasbin.Create ('model.conf', 'policies.csv');
...
end
وأخيرا ، اختبار (فرض) تأكيد:
...
if casbin.enforce(['alice,data1,read']) then
// Alice is super happy as she can read data1
else
// Alice is sad
...
ما يفعله كاسبين:
{subject, object, action} أو نموذج مخصص كما تم تحديده ، يتم دعم التراخيص على حد سواء.root أو administrator . يمكن للمستمر أن يفعل أي شيء دون أن يوضح الأذونات.keyMatch تعيين مفتاح الموارد /foo/bar للنمط /foo*ما لا يفعله كاسبين:
username وكلمة password عند تسجيل الدخول)يأتي Casbin4D في حزمة (حاليًا لـ Delphi 10.3 Rio) ويمكنك تثبيتها في IDE. ومع ذلك ، لا توجد مكونات مرئية مما يعني أنه يمكنك استخدام الوحدات بشكل مستقل عن الحزم. ما عليك سوى استيراد الوحدات في مشروعك (على افتراض أنك لا تمانع في عددها)
يرجى الاطلاع على صفحات الويكي
يمكنك أيضًا استخدام المحرر عبر الإنترنت (http://casbin.org/editor/) لكتابة طراز Casbin وسياستك في متصفح الويب الخاص بك. يوفر وظائف مثل syntax highlighting code completion ، تمامًا مثل IDE للغة البرمجة.
يمكنك أيضًا استخدام العرض التوضيحي الرئيسي لاختبار البرامج النصية والتأكيدات. انظر العروض التوضيحية
انظر مجلد التجريبي. يحتوي مجلد الأمثلة على تكوين المثال وملفات السياسة من تطبيق GO الأصلي
العرض التجريبي الرئيسي هو تحت المجلد التجريبي/المجلد الرئيسي. يمكنك أيضًا العثور على ملف قابل للتنفيذ في هذا المجلد حتى تتمكن من تنزيله وتجربة Casbin4D

يرجى الاطلاع على الوثائق
يوفر Casbin4D نقطة واحدة من الوصول إلى إدارة الأذونات عبر ipolicymanager. إذا كنت على دراية بالتطبيقات الأخرى ، فستلاحظ أن لديهم مجموعتان من واجهات برمجة التطبيقات (Management API و RBAC API). يجمع هذا التنفيذ بينهما بموجب مدير السياسة
في Casbin4D ، يتم تجريد تخزين السياسة من خلال مفهوم المحول. مستهلك Casbin4D مجاني في تنفيذ إدارة تخزين السياسة كما يرون مناسبة لاحتياجاتهم. للراحة ، يوفر Casbin4D محولين: واحد للملفات النصية (.CSV) ومحول ذاكرة واحد. اهلا وسهلا بكم (ودعوتهم) للمساهمة في أي محولات جديدة مع استخدام أوسع. يرجى إعلامنا
تم تصميم Casbin4D مع وضع متعدد الخيوط في الاعتبار. يحقق التنفيذ الحالي هذا على مستوى المنفذ
يوجد مشروع معياري يقع في مجلد المعايير الذي يختبر تطبيق السياسة.
تم تنفيذ المشروع في الجهاز/التثبيت التالي:
* Dell XPS 15 9560: Intel(R) Core(TM) i7-7700HQ CPU @2.80GHz, 2801MHz, 4 Core(s), 8 Logical Processor(s)
* Windows: Windows 10 Pro 64-bit, 10.0.16299 Build 16299
وتظهر النتائج في الجدول التالي. يتم حساب الوقت النفقات العامة لكل عملية (OP) التي تمثل مكالمة واحدة إلى TCasbin.enforce[..]
| حالة الاختبار | مقاس | الوقت النفقات العامة | الذاكرة النفقات العامة |
|---|---|---|---|
| فرض الخام | 2 قواعد (مستخدمان) | 0.000090 Sec/OP | 0 كيلو بايت |
| النموذج الأساسي | 2 قواعد (مستخدمان) | 0.000466 ثانية/المرجع | 432 ب |
| RBAC | 5 قواعد (مستخدمين ، دور واحد) | 0.000872 ثانية/المرجع | 352 ب |
| RBAC (صغير) | 1100 قاعدة (1000 مستخدم ، 100 دور) | 0.238945 ثانية/المرجع | 1.49 ميغابايت |
| RBAC (متوسط) | 11000 قاعدة (10000 مستخدم ، 1000 من الأدوار) | 9.745707 ثانية/مرجع سابق | 15.7 ميغابايت |
| RBAC (مع أدوار الموارد) | 6 قواعد (مستخدمان ، 2 أدوار) | 0.000658 ثانية/مرجع سابق | 352 ب |
| RBAC (مع المجالات/المستأجرين) | 6 قواعد (مستخدمان ، دور واحد ، مجالاتان) | 0.000670 ثانية/مرجع سابق | 352 ب |
| RBAC (مع إنكار) | 6 قواعد (مستخدمين ، دور واحد) | 0.001260 ثانية/المرجع | 380 ب |
| أباك | 0 قواعد (0 مستخدم) | 0.000181 Sec/OP | 120 ب |
| Keymatch | 2 قواعد (مستخدمان) | 0.000782 ثانية/المرجع | 352 ب |
| أولوية | 9 قواعد (2 مستخدمين ، 2 أدوار) | 0.001124 ثانية/المرجع | 380 ب |
| نموذج | ملف النموذج | ملف السياسة |
|---|---|---|
| ACL | basic_model.conf | basic_policy.csv |
| ACL مع Superuser | basic_model_with_root.conf | basic_policy.csv |
| ACL بدون مستخدمين | basic_model_without_users.conf | basic_policy_without_users.csv |
| ACL بدون موارد | basic_model_without_resources.conf | basic_policy_without_resources.csv |
| RBAC | RBAC_MODEL.CONF | RBAC_POLICY.CSV |
| RBAC مع أدوار الموارد | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
| RBAC مع المجالات/المستأجرين | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
| أباك | abac_model.conf | ن/أ |
| مريح | keymatch_model.conf | keymatch_policy.csv |
| إنكار | rbac_model_with_deny.conf | RBAC_POLICY_WITH_DENY.CSV |
| أولوية | priority_model.conf | priority_policy.csv |
تم استيراد الغالبية العظمى من اختبارات التنفيذ الأصلي في GO في دلفي. يرجى الاطلاع على الاختبارات
يمكنك التحقق من تغطية الرمز هنا للحصول على حالة محدثة. اهلا وسهلا بك لتحسين الاختبارات والتغطية
هذا المشروع مرخص بموجب ترخيص Apache 2.0.
إذا كان لديك أي مشكلات أو طلبات ميزة ، فيرجى الاتصال بنا. العلاقات العامة مرحب بها