Overview
Casbin - це потужна та ефективна бібліотека контролю доступу з відкритим вихідним кодом, яка підтримує різні моделі контролю доступу для забезпечення авторизації на всіх рівнях.
Застосування набору правил так само просте, як перелічення суб'єктів, об'єктів та бажаної дозволеної дії (або будь-якого іншого формату відповідно до ваших потреб) у файлі політики. Це синонімічно для всіх процесів, в яких використовується Casbin. Розробник/адміністратор має повний контроль над структурою, виконанням та умовами для авторизації, які встановлюються через файл моделі. Casbin надає Enforcer для перевірки вхідного запиту на основі політики та файлів моделі, наданих 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 - це бібліотека авторизації, яку можна використовувати в процесах, де ми хочемо, щоб певний об'єкт
або сутність могла бути доступна конкретному користувачу або суб'єкту
. Тип доступу, тобто дія
, може бути читання, запис, видалення або будь-яка інша дія, встановлена розробником. Ось як Casbin найчастіше використовується, і це називається "стандартним" або класичним { subject, object, action }
потоком.
Casbin здатний обробляти багато складних сценаріїв авторизації, крім стандартного потоку. Може бути додано ролі (RBAC), атрибути (ABAC) тощо.
Що робить Casbin
- Забезпечує політику в класичній формі
{ subject, object, action }
або у визначеній вами налаштованій формі. Підтримуються як дозволені, так і заборонені авторизації. - Керує зберіганням моделі контролю доступу та її політики.
- Керує відображеннями ролі-користувача та відображеннями ролі-ролі (так звана ієрархія ролей у RBAC).
- Підтримує вбудованих суперкористувачів, як-от
root
абоadministrator
. Суперкористувач може робити все без явних дозволів. - Забезпечує кілька вбудованих операторів для підтримки відповідності правил. Наприклад,
keyMatch
може відображати ключ ресурсу/foo/bar
на шаблон/foo*
.
Що Casbin НЕ Робить
- Аутентифікація (тобто перевірка
username
іpassword
під час входу користувача) - Управління списком користувачів або ролей.
Для проектів зручніше самостійно управляти своїми списками користувачів, ролей або паролів. Зазвичай користувачі мають свої паролі, і Casbin не призначений для зберігання паролів. Однак, Casbin зберігає відображення користувач-роль для сценарію RBAC.